eth0 と wlan0 間のトラフィックのブリッジ

eth0 と wlan0 間のトラフィックのブリッジ

私はこれを試してみましたが、うまくいきませんでした。eth0 と wlan0 はすでに起動して動作しているので、セットアップはずっと簡単です。wlan0 では DHCP がすでに有効になっており、クライアントに IP を正しく割り当てています。eth0 は静的に設定されており、クライアントは静的 IP で接続しています。ifconfig からの設定は次のとおりです。

eth0 Link encap:Ethernet HWaddr 00:14:3E:9D:BA:57
inet addr:192.168.13.31 Bcast:192.168.13.255 Mask:255.255.255.0
inet6 addr: fe80::214:3eff:fe9d:ba57/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1600 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:74056 (72.3 KiB) TX bytes:3936 (3.8 KiB)

wlan0 Link encap:Ethernet HWaddr 64:69:4E:77:D5:2E
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::6669:4eff:fe77:d52e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:618 errors:0 dropped:0 overruns:0 frame:0
TX packets:656 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:72055 (70.3 KiB) TX bytes:87715 (85.6 KiB)

wlan0 経由で接続されたクライアントの IP アドレスは 192.168.1.11 (dhcp) ですが、eth0 経由で接続されたクライアントの IP アドレスは 192.168.13.10 (static) です。この 2 つが相互に通信できるようにしたいので、iptables の設定は以下のとおりです。

sysctl -w net.ipv4.ip_forward=1

iptables --flush
iptables -I INPUT -j ACCEPT
iptables --table nat --flush
iptables --table nat --delete-chain
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -m state --state NEW -j ACCEPT
iptables -A INPUT -m udp -p udp --sport 67:68 --dport 67:68 -j ACCEPT

この後、デバイスのシェルから両方のクライアントに ping を実行できますが、eth0 上のクライアントは wlan0 上のクライアントに ping を実行できず、その逆も同様です。

関連情報