我正在 Ubuntu Server 14.04(无 GUI)上配置一些服务器,并且具有以下配置:
auto lo
iface lo inet loopback
## Management network eth0
auto eth0
iface eth0 inet static
address 10.0.0.11
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 8.8.8.8 8.8.4.4
不幸的是,当使用此配置时,我只能访问 LAN,任何尝试 ping 或访问我们网络之外的任何内容的尝试都会失败。
如果我使用 DHCP 并只使用路由器给我的任何 IP 地址,我就可以访问内部和外部网络。为了测试,我一直尝试使用“ping google.com”来测试外部连接。
还有一点需要注意,在路由器中,如果我将 IP 绑定到 MAC 地址,它似乎可以正常工作,但我不希望这些规则存在于我的路由器中,我更希望它们在服务器上进行配置。
答案1
看起来发生的情况是,要么您的路由器没有获取您机器的 NIC 的 MAC 地址,要么您的 NIC 没有获取路由器的 MAC 地址。要验证这一点,您可能需要转储两者的 mac 表。在 Linux 中,您可以执行arp -an
以下验证。
下一个问题是为什么,以及为什么它会起作用(即为什么本地 IP 可以 ping 通)。我有两个想法,但都不完全合适:
您的静态配置是错误的。例如,它是错误的网关 IP、错误的子网掩码或其他任何内容。由于 Linux 特别热衷于使用代理 arp,所以东西经常在不应该工作的时候工作。我知道你说你已经检查过了,但我以前也遇到过这种情况,我检查了两次,但仍然有拼写错误。所以我把它包括进去以保证完整性。发布和的输出
ip route show
(ip addr show
而不是仅发布配置文件)以验证它们对于 dhcp 和静态是否相同会很有用。这将检查您的配置文件是否被正确解析。您的路由器或交换机正在“试图变得聪明”。例如,路由器可能具有一项功能,通过阻止池中未分配的 IP 地址的 IP 流量来尝试阻止人们窃取 IP 地址;要解决此问题,请关闭该功能,或使用池外的 IP 地址。同样,交换机可能正在使用DHCP 侦听这将产生同样的效果;要么将 IP 列入白名单,要么将其关闭。