来自 PC 的 ssh RPi - 如何共享互联网连接?

来自 PC 的 ssh RPi - 如何共享互联网连接?

我的 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

相关内容