我的 Raspberry Pi 通过 eth0 端口与 PC 连接。我正在使用 eth0 来 ssh RPi。我在 RPi 上有需要互联网访问的 Web 应用程序。
现在,我将静态 IP 设置为 RPi (192.168.1.50) 和 PC (192.168.1.66)。我可以通过 PC 上的无线适配器连接到互联网,也可以通过 RPi 上的 USB Wi-Pi 适配器连接到互联网。
这是 PC 的ifconfig
:
eth0 Link encap:Ethernet HWaddr 3c:a8:2a:7e:fd:7d
inet addr:192.168.1.66 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::3ea8:2aff:fe7e:fd7d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:184 errors:0 dropped:0 overruns:0 frame:0
TX packets:638 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20422 (20.4 KB) TX bytes:80928 (80.9 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4126 errors:0 dropped:0 overruns:0 frame:0
TX packets:4126 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:460006 (460.0 KB) TX bytes:460006 (460.0 KB)
wlan0 Link encap:Ethernet HWaddr 34:e6:ad:08:67:5e
inet addr:192.168.1.13 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::36e6:adff:fe08:675e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11305 errors:0 dropped:0 overruns:0 frame:0
TX packets:10338 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6496258 (6.4 MB) TX bytes:1391363 (1.3 MB)
当我在 RPi 上连接到互联网时,wlan0 获取192.168.1.10
.
问题是,当我通过 PC ssh 到 RPi 时,我无法在 RPi 上访问 Internet,并且route -n
将 eth0 显示为首选接口。
我正在尝试在 PC 上桥接无线和以太网连接,并在执行 ssh 时将互联网共享到 RPi,或者在 RPi 上桥接连接,这样我就可以同时激活 wlan0 和 eth0。
我尝试过echo 1 > /proc/sys/net/ipv4/ip_forward
,也使用过MASQUERADE
选项iptables
,但没有成功。我错过了一些东西,做了一些错误的事情,但实际上看不到它。
您能否向我解释一下如何实现我的目标,如何设置/etc/network/interfaces
文件以及我应该考虑的其他事项?
谢谢。
答案1
使用命令: https://wiki.debian.org/BridgeNetworkConnections(中间是无线)
安装bridge-utils:
apt-get install bridge-utils (ubuntu)
aptitude install bridge-utils (debain)
nano /etc/network/interfaces
添加以下行
pre-up iwconfig wlan0 essid $YOUR_ESSID (wifi name)
bridge_hw $MAC_ADDRESS_OF_YOUR_WIRELESS_CARD(34:e6:ad:08:67:5e)
安装 ebtables:
aptitude install ebtables (debian)
apt-get install ebtables (ubuntu)
使用 wlan0 MAC 地址设置桥接网络($MAC=34:e6:ad:08:67:5e)
ebtables -t nat -A POSTROUTING -o wlan0 -j snat --to-src $MAC --snat-arp --snat-target ACCEPT
添加需要上网的设备MAC地址:($ip替换为ip,$MAC替换为pi和计算机的MAC地址)
设定规则:
ebtables -t nat -A PREROUTING -p IPv4 -i wlan0 --ip-dst $IP -j dnat --to-dst $MAC --dnat-target ACCEPT
ebtables -t nat -A PREROUTING -p ARP -i wlan0 --arp-ip-dst $IP -j dnat --to-dst $MAC --dnat-target ACCEPT
重复上述命令以添加 pi 和计算机。
保存规则:
EBTABLES_ATOMIC_FILE=/root/ebtables-atomic ebtables -t nat --atomic-save
EBTABLES_ATOMIC_FILE=/root/ebtables-atomic ebtables -t nat --atomic-commit
使用图形用户界面: https://askubuntu.com/questions/359856/share-wireless-internet-connection-through-ethernet