我有 2 台电脑(anuin 和 hed),都运行 Linux,通过以太网连接(192.168.1.1 和 192.168.1.3)。
两台 PC 均能互相 ping 通。
anuin 通过 USB 棒(设备 ppp0)连接到互联网。
我想要的是让他通过 anuin 访问互联网。
这应该很容易,但看来我很愚蠢......
这是我在 hed 上的路由表:
hed>sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default anuin 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
hed>ping anuin
PING anuin (192.168.1.1) 56(84) bytes of data.
64 bytes from anuin (192.168.1.1): icmp_req=1 ttl=64 time=0.218 ms
64 bytes from anuin (192.168.1.1): icmp_req=2 ttl=64 time=0.191 ms
^C
在 anuin 上,我清除了所有 iptables 规则,只添加了一条伪装规则:
anuin> sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
anuin> cat /proc/sys/net/ipv4/ip_forward
1
anuin> sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
不幸的是,当我尝试时它不起作用:
hed> ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 8.8.8.8 icmp_seq=1 Destination Host Unreachable
From 8.8.8.8 icmp_seq=2 Destination Host Unreachable
From 8.8.8.8 icmp_seq=3 Destination Host Unreachable
^C
hed> traceroute anuin
traceroute to anuin (192.168.1.1), 30 hops max, 60 byte packets
1 anuin (192.168.1.1) 0.203 ms 0.119 ms 0.450 ms
hed> traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 8.8.8.8 (8.8.8.8) 3003.607 ms !H 3003.600 ms !H 3003.592 ms !H
这是我不明白的:即使伪装不起作用 - 我至少应该看到到默认网关(anuin)的一跳。
有人能帮我吗?
答案1
说什么ip route get 8.8.8.8
?如果答案错误,则可能存在从之前的连接尝试缓存的旧转发信息。
ip route flush cache
在这种情况下应该是补救措施。