在静态 LAN 和 Wifi 网关之间添加 Linux 路由

在静态 LAN 和 Wifi 网关之间添加 Linux 路由

我有两台通过有线以太网相互连接的本地机器,其中一台机器还连接到提供互联网访问的 wifi 网络。

拓扑的伪图形表示如下:

(PC2)----------(PC1)---------(Wifi Gateway)
    192.168.2.x      10.0.0.x

PC2上的配置是:

iface eth0 inet static
address 192.168.2.2
network 192.168.2.0
netmask 255.255.255.0
gateway 192.168.2.1

...PC1 上的配置是:

iface eth0 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
gateway 192.168.2.1

在 PC1 上,我为 wlan0 添加了一条默认路由,因为否则我无法访问互联网:

route add default gw 10.0.0.1 wlan0

并且还尝试使用以下命令设置 192.168.2.x 网络的网关:

route add -net 192.168.2.0 netmask 255.255.255.0 gw 10.0.0.1

但我仍然无法从PC2访问互联网。


编辑

我无法访问 wifi 网关。

答案1

您想要的是共享(使用伪装)PC1 的互联网连接。

您可以在网上找到很多指南来做到这一点,但这里是一个总结:

首先,刷新并删除现有的防火墙规则:

iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X

然后,配置 iptables 进行 NAT 转换:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

为了确保在启动时恢复 IP 表,请运行iptables-save | tee /etc/iptables.sav并编辑/etc/rc.local并在“exit 0”行之前添加以下行:iptables-restore < /etc/iptables.sav

启用 IP 转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

在 Ubuntu 上,您还必须编辑/etc/sysctl.conf并取消注释:

 #net.ipv4.ip_forward=1

在 PC2 上,您还应该执行以下操作:

 ip route add default via 192.168.2.1

答案2

您的 PC1 eth0 接口不应定义网关 - 这与设置默认路由相同,因此如果将默认路由设置为 10.0.0.1,则一半的数据包将流向错误的方向。

为了使 PC1 充当 PC2 的路由器,您需要启用数据包转发。 启用方法如下:

sudo sysctl -w net.ipvt.ip_forward=1

为了使其在重启后继续运行,请修改/etc/sysctl.conf并添加以下行

#net.ipv4.ip_forward=1

并取消注释(如果不存在则添加它,1如果存在但设置为则将其更改为0

最后,您需要修改 10.0.0.1 的 wifi 网关并添加静态路由,说明 192.168.2.0/24 网络的网关是 10.0.0.0/24 范围内的 PC1 IP 地址(我想象它可能是 10.0.0.2)。

哦,无论你在哪里添加

route add -net 192.168.2.0 netmask 255.255.255.0 gw 10.0.0.1
  • 您应该将其删除 - 192.168.2.0/24 网络不能通过 wifi 路由器访问。

相关内容