使用两台笔记本电脑和一台路由器;操作系统 Ubuntu。
第一台笔记本电脑通过以太网电缆连接到路由器,网关为 eth0 192.168.10.1,并通过 wlan 上的 adhoc 无线网络连接,IP 为 10.10.10.5。
配置:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
第二个 10.10.10.4 通过 adhoc 无线连接到 10.10.10.5,在路由 -n 中网关也是 10.10.10.5 UG。
sudo ip route add default via 10.10.10.5
当我从机器 10.10.10.4 ping 8.8.8.8 时,它花费了无限的时间并且没有显示任何 ping 结果。
但是,如果从第一台笔记本电脑上拔下以太网,它会显示来自 10.10.10.5 的消息:“目标网络不可达”。
从 10.10.10.5 开始,可直接访问。
答案1
您可以尝试以下操作:
- 使用 tcpdump 查看数据包是否确实被发送和接收。在 Ubuntu 上,安装并使用“tcpdump -v icmp”启动 tcpdump 以查看 ping 数据包,您可以使用 -i 选项指定接口。这将向您显示,如果数据包在 eth0 上接收,并在 wlan0 上发送,您甚至可以在 10.10.10.5 主机上执行此操作,具体取决于设备类型。
- 尝试“iptables -t nat -nvL”查看您的 iptables 规则(包括数据包和字节计数器),这样您就可以看到规则是否实际应用。
两者都应该能让您更深入地了解数据包到达的位置和未到达的位置,这样您就可以缩小问题所在的范围。