イーサネットケーブルを介してPCに接続されたラズベリーパイでインターネットを正常に動作させるにはどうすればよいですか?

イーサネットケーブルを介してPCに接続されたラズベリーパイでインターネットを正常に動作させるにはどうすればよいですか?

次の設定を試しています。

ラズベリーパイ(eth0)<-->(eth0)ノートパソコン(wlan0)<-->インターネット

(ラズベリー用Raspbianがあります。)左側のLANはアドレス192.168.0。*を使用します。

私は現在私のラップトップで次のスクリプトを実行しています。

ifconfig eth0 up
ifconfig eth0 inet 192.168.0.1
route | grep "192\.168\.0\.0" || \
 route add -net 192.168.0.0/16 dev eth0

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F; iptables -t nat -F
iptables -t nat -A POSTROUTING ! -d 192.168.0.0/16 -o wlan0 -j MASQUERADE

killall -9 udhcpd
udhcpd -f

RaspberryのRaspbian(ほぼデフォルト)がDHCPサーバーを入手できることを願っています。 (最終構成では、Raspberryはヘッドレス設定になります。)

しかし、これは単に動作します時々。また、2つのシステムのいずれかから別のシステムにpingを送信したときにPacket filtered応答を受け取ったり、まったく応答を受け取らない場合もよくあります。 (また、ノートブックから私が追加したパスを削除する場合もあるようです。)

私は何を忘れましたか?

ベストアンサー1

それはあなたがしたいことではありません。 2 つの異なるネットワーク インターフェイスで IP 範囲を重複することはできません。発見したように、これはパケットを転送することがあり、そうでない場合があります。また、DHCP要求は単一のLANセグメントに限定されたブロードキャストであるため、転送されません。

PCがWLANの代わりにLAN経由でインターネットに接続されている場合は、2つのethXインターフェイスのみをブリッジできます。ただし、WLANが4アドレスモードでないと、WLANインターフェイスをLANにブリッジできません。一般的な3アドレスのWLANパケットは、PCを「中間」受信機として指定するか、RaspPiを「最終」受信機として使用します。

したがって、正しい方法は、両方のインターフェイスに異なるIP範囲(たとえば、192.168.1. * / 24(またはルーターが提供するもの)とwlan0ノートブックの192.168.3.1 / 24(または何でも))を割り当てることです。 。eth0その後、ノートブックからDHCPサーバーを実行して、eth0RaspPiに192.168.55.*/24アドレスを制御して提供します。最後に、転送と偽装を有効にします。

私のPCでは、正しいdhcpd設定ファイルで次のスクリプトを使用しています。

#!/bin/bash

# pass eth0 through wlan0, using nat

modprobe nf_conntrack
modprobe nf_conntrack_ipv4
modprobe nf_nat
modprobe iptable_nat  

EXTIF="wlan0"
INTIF="eth0"

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT 
iptables -P FORWARD DROP
iptables -F FORWARD 
iptables -t nat -F
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

ip link set eth0 down
ip addr flush dev eth0
ip addr add 192.168.3.1/24 dev eth0
ip link set eth0 up

/etc/init.d/isc-dhcp-server start

(systemdを使用している場合は、最後の行をsystemdコマンドで置き換えてDHCPサーバーを起動します。)

おすすめ記事