我有一个 vmware 播放器,上面安装了 CentOS 6.5。在 CentOS 6.5 上我安装了 lxc,在 lxc 上我安装了 centos 6.3。
我在 vmware 播放器中使用 NAT 和桥接器作为网络适配器。
我的CentOS 6.5的IP:192.168.236.140,网关:192.168.236.2
centos 6.5 上的路由
[root@agent1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.236.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
0.0.0.0 192.168.236.2 0.0.0.0 UG 0 0 0 eth1
现在我的Centos 6.3有IP:192.168.122.9和网关:192.168.122.1
从我的 centos 6.3 LXC 机器开始的路线
[root@agent1vm5 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 192.168.122.1 0.0.0.0 UG 0 0 0 eth0
现在,问题是我能够从 LXC 即 192.168.236.140 ping 我的 CentOS 6.5 机器
[root@agent1vm5 ~]# ping -c 1 -t 1 192.168.236.140
PING 192.168.236.140 (192.168.236.140) 56(84) bytes of data.
64 bytes from 192.168.236.140: icmp_seq=1 ttl=64 time=0.037 ms
--- 192.168.236.140 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.037/0.037/0.037/0.000 ms
但我无法 ping 默认 NAT 网关,即 192.168.236.2
[root@agent1vm5 ~]# ping -c 1 -t 1 192.168.236.2
PING 192.168.236.2 (192.168.236.2) 56(84) bytes of data.
From 192.168.122.1 icmp_seq=1 Time to live exceeded
--- 192.168.236.2 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
那么,如何设置我的路由,使其经过 192.168.236.2,而不是从 192.168.122.1 开始。
答案1
在你的指挥下
ping -c 1 -t 1 192.168.236.2
您指定数据包以 TTL 为 1 发送。这意味着它们在产生错误之前最多会遍历一网络跃点。
在您的网络配置中,您的 CentOS 6.3 节点未直接连接到您尝试访问的 NAT。 CentOS 6.5节点介于两者之间。当您尝试对 TTL 为 1 的两跳之外的节点执行 ping 操作时,它将不起作用。
CentOS 6.5节点收到TTL为1的数据包后,会发回ICMP错误消息,表明TTL已过期。这完全按照预期进行。