我通过以太网链路将 Pi 连接到我的家用计算机。我的计算机通过无线连接连接到互联网。我想通过我的计算机路由来自我的 Pi 的所有互联网流量。
我在以太网链路上设置了 /30 子网,并在两个子网上添加了路由,以便它们可以互相 ping 通。
这是我的配置。
我的电脑:
# IP addresses
eth0 192.168.1.1/30
wlan0 192.168.0.13/24
# IP routes
default via 192.168.0.254 dev wlan0 proto static metric 600
169.254.0.0/16 dev wlan0 scope link metric 1000
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.13 metric 600
192.168.1.0/30 dev eth0 scope link
我的圆周率:
# IP address
eth0 192.168.1.2/30
# IP routes
default via 192.168.1.1 dev eth0
default via 192.168.1.1 dev eth0 proto static metric 1024
169.254.0.0/16 dev wlan0 scope link metric 1000
192.168.1.0/30 dev eth0 scope link
在我的计算机上,要将所有流量从 eth0 路由到 wlan0,我是否只需添加一些路由?或者我必须使用 NAT 吗iptables
?
编辑:
在 Henrik 的回答之后,我做了一些关于伪装的搜索,我发现本教程。
/proc/net
在本文中,他说通过在目录中查找 2.2x 内核来检查伪装内核支持是否已启动。
在我的 4.2.x 内核中,我没有找到他提到的文件,但我找到了一些*masquerade*.ko
文件。这是否意味着我的内核中支持伪装?
如果没有,有没有办法在不重新编译内核的情况下进行设置?
在教程的最后,他给出了一些防火墙规则来进行伪装。
第一个是:
/sbin/ipchains -A input -j ACCEPT -i eth1 -s 0/0 67 -d 0/0 68 -p udp
这只是为了让 DHCP 请求通过“隐藏”计算机。但我在 PI 上手动修复了 Ip,所以我不需要它,对吧?
那么,有这样两条规则:
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 10.1.199.0/24 -j MASQ
为什么会有一个DENY
?
对于我的子网来说,它是
/sbin/ipchains -A forward -s 192.168.1.0/30 -j MASQ
正确的 ?
编辑2:
我找到了一个更新的教程正如亨里克建议的那样。
在/etc/rc.local
文件中,我添加了:
iptables -t nat -A POSTROUTING -s 192.168.1.0/30 -o wlan0 -j MASQUERADE
所以现在伪装似乎起作用了,但并不完全有效。
事实上,当我尝试使用 IP 地址 (8.8.8.8) ping google.com 时,它可以正常工作,但如果我尝试使用 url,则不行。
我认为这是因为一些 DNS 问题,所以我在/etc/resolv.conf
文件中添加了一些 DNS 的 IP。但它什么也没改变。
所以我尝试在 Firefox 中使用 IP 地址访问 DuckDuckgo,但没有成功。
看来,只有 ICMP 流量被转发。我用wireshark检查了来自什么eht0
以及靠什么生存wlan0
。
答案1
您需要打开转发(可能默认打开),并设置伪装(只是一种特殊类型 NAT 的花哨词,但它可能会帮助您知道要搜索什么)。