我有两台通过有线以太网相互连接的本地机器,其中一台机器还连接到提供互联网访问的 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 路由器访问。