如何将 IPv4 流量从一个接口路由到另一个接口

如何将 IPv4 流量从一个接口路由到另一个接口

我通过以太网链路将 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 的花哨词,但它可能会帮助您知道要搜索什么)。

相关内容