我目前有一台连接到 LAN 和互联网的机器,运行良好。我现在有一个到远程办公室的专用连接,必须从我的机器创建一条到新办公室的某台机器的路由,但必须通过专用线路(而不是通过互联网)。我的机器有CentOS release 5.6
。
以下是我当前的设置(我暂时还不能在这里发布图片)
基本上,从“MyServer”使用 eth0 到互联网就可以工作。eth0 具有以下配置。
root@MyServer:/etc/sysconfig/network-scripts $ more ifcfg-eth0
# Intel Corporation 82578DC Gigabit Network Connection
DEVICE=eth0
BOOTPROTO=none
HWADDR=71:72:bd:ae:1f:49
ONBOOT=yes
DHCP_HOSTNAME=MyServer.local
IPADDR=192.168.3.11
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
TYPE=Ethernet
root@MyServer:/etc/sysconfig/network-scripts $
现在我必须在 eth0 上创建一个别名并将其路由到“目标服务器”。因此我所做的是创建一个名为 eth0:0 的文件,其中包含以下内容:
root@MyServer:/etc/sysconfig/network-scripts $ more ifcfg-eth0:0
# Intel Corporation 82578DC Gigabit Network Connection
DEVICE=eth0:0
BOOTPROTO=none
HWADDR=71:72:bd:ae:1f:49
ONBOOT=yes
DHCP_HOSTNAME=MyServer.local
IPADDR=172.23.10.37
NETMASK=255.255.255.252
TYPE=Ethernet
root@MyServer:/etc/sysconfig/network-scripts $
仅凭这一点,我现在就可以 ping 172.23.10.38
root@MyServer:/etc/sysconfig/network-scripts $ ping 172.23.10.38
PING 172.23.10.38 (172.23.10.38) 56(84) bytes of data.
64 bytes from 172.23.10.38: icmp_seq=1 ttl=255 time=6.30 ms
64 bytes from 172.23.10.38: icmp_seq=2 ttl=255 time=2.07 ms
64 bytes from 172.23.10.38: icmp_seq=3 ttl=255 time=3.13 ms
--- 172.23.10.38 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 2.071/3.839/6.309/1.801 ms
root@MyServer:/etc/sysconfig/network-scripts $
但我的目标是到达 192.168.1.96,并使用源 IP 地址 172.23.10.37 到达那里
所以我添加了以下路线
root@MyServer:/etc/sysconfig/network-scripts $ route add -host 192.168.1.96 eth0:0
root@MyServer:/etc/sysconfig/network-scripts $ ip route list
192.168.1.96 dev eth0 scope link src 172.23.10.37
172.23.10.36/30 dev eth0 proto kernel scope link src 172.23.10.37
192.168.3.0/24 dev eth0 proto kernel scope link src 192.168.3.11
169.254.0.0/16 dev eth0 scope link
default via 192.168.3.1 dev eth0
root@MyServer:/etc/sysconfig/network-scripts $
或netstat -rn
root@MyServer:/etc/sysconfig/network-scripts $ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.96 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
172.23.10.36 0.0.0.0 255.255.255.252 U 0 0 0 eth0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
root@MyServer:/etc/sysconfig/network-scripts $
从路由列表来看,它似乎已设置。
192.168.1.96 dev eth0 scope link src 172.23.10.37
并且traceroute 192.168.1.96
向我展示了它确实试图通过 eth0:0 出去
root@MyServer:/etc/sysconfig/network-scripts $ traceroute 192.168.1.96
traceroute to 192.168.1.96 (192.168.1.96), 30 hops max, 40 byte packets
1 172.23.10.37 (172.23.10.37) 3001.699 ms !H 3001.698 ms !H 3001.693 ms !H
root@MyServer:/etc/sysconfig/network-scripts $
但如您所见,主机无法访问。管理远程服务器的人向我保证他们的机器确实响应 ping,而我这边暂时停止了 iptables,以确保没有外部变量。此外,我们之间的路由器/防火墙上的防火墙服务暂时停止。
所以基本上我有两个问题。1) 我做错了什么?2) 一旦我让它工作,我该如何将临时命令更改route add -host 192.168.1.96 eth0:0
为持久路由?我读到最干净的方法是添加一个名为的文件,/etc/sysconfig/network-scripts/route-eth0:0
其中包含以下行
192.168.1.96 via 172.23.10.37 dev eth0:0
它是否正确?
希望我提供了足够的信息来调试这个问题。谢谢,-gk
答案1
该路由应使用 172.23.10.38(路由器 IP)作为网关。要测试,请使用:
路由添加-主机 192.168.1.96 gw 172.23.10.38
route-eth0:0 文件条目将是:
192.168.1.96/32 通过 172.23.10.38
答案2
最简洁的方法是在 a 中添加正确的条目route-eth0:0
,/etc.sysconfig/network-scripts
然后运行service network restart
。这将使用指定的 eth0:0 接口进行该路由。
答案3
我建议你尝试跟踪到服务器的路由,然后从服务器跟踪到你的机器。这可能会忽略路由器分隔两个网络并且允许机器之间通信的事实。