我的 Debian 系统的 IP 地址为 192.168.111.111,我想配置一个不在 192.168.111.0 网络上的默认网关。首先,我想添加一条路由,以便我可以从系统到达网关。因此,我运行此命令(我以为它将启用到单个主机的静态路由),但我仍然无法 ping 通网关:
# ip route add 5.6.71.166 dev eth0
# ping 5.6.71.166
PING 5.6.71.166 (5.6.71.166) 56(84) bytes of data.
^C
--- 5.6.71.166 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3023ms
这是我的配置:
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
5.6.71.166 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.111.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr ca:eb:7c:e6:7e:98
inet addr:192.168.111.111 Bcast:192.168.111.255 Mask:255.255.255.0
inet6 addr: fe80::c8eb:7cff:fee6:7e98/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:45 errors:0 dropped:0 overruns:0 frame:0
TX packets:291 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:52454 (51.2 KiB) TX bytes:39433 (38.5 KiB)
Interrupt:23
# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The internal network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.111.111
netmask 255.255.255.0
network 192.168.111.0
broadcast 192.168.111.255
# cat /proc/sys/net/ipv4/ip_forward
1
我已经验证,如果我使用其网络中的 IP 地址,网关将响应 ping,但不幸的是,这不是一个选项,因为系统不能在该范围内拥有真实的(不在 192.168.xx 中的)IP 地址。
答案1
您的默认网关是否知道返回机器的路径?
虽然你们两个(5.6.71.166 和 192.168.111.111)共享一个公共的第 2 层(“以太网”),但两者都必须知道如何互相访问。通常,它们共享一个公共的第 3 层(“ip 子网”),但在这种情况下,网关必须有一条通往 192.168.111.111(/24?至少 /32)的路由,通往连接到公共第 2 层的设备。
您有 gw 的管理权限吗?
答案2
我假设 5.6.71.166 位于不同的以太网域上。为了与不同以太网域上的主机通信,主机必须使用网关才能到达那里。您添加的路由指定 5.6.71.166 可直接访问,这就是它失败的原因。您需要提供适当的网关来使用。假设 192.168.111.1 是本地网络上的网关:
ip route add 5.6.71.166 via 192.168.111.1
如果 5.6.7.166 网关位于同一个以太网域中,则它要么不知道如何将数据包路由回您的计算机,要么数据包在某处被过滤。网关要么需要本地网络上 192.168.111.0/24 的路由,要么您需要为您的计算机添加一个位于网关本地子网中的 IP 地址。
设置完成后,检查 ARP 是否在两台机器上运行:
arp -n | grep 5.6.71.166
您应该会看到列出的 HWaddress。在网关上针对您的机器的 IP 执行相同操作。如果仍然不起作用,请检查防火墙并可能检查反向路径过滤。
答案3
您能向 eth0 iterface 添加另一个 IP 地址吗?
ifconfig eth0:1 5.6.71.167 netmask x.x.x.x up
然后
route add default gw 5.6.71.166
你觉得可以吗?