我在内部开发服务器上安装了全新安装的 CentOS 4.8。除了设置 sudoers 和 SSH 之外,我没有对它进行任何操作。我可以通过 SSH 进入服务器,然后从那里将域解析为 IP 并 ping 内部服务器,但出于某种原因,我在 ping 外部服务器时没有收到任何响应。
软件防火墙已禁用,问题出现在静态和 DHCP 分配的网络配置中。网络域控制器是 Windows Server 2003 机箱。
$ nslookup google.com
Server: 10.254.2.5
Address: 10.254.2.5#53
Non-authoritative answer:
Name: google.com
Address: 74.125.47.147
Name: google.com
Address: 74.125.47.99
<etc...>
10.254.2.5是Win2K3服务器。
$ ping google.com
PING google.com (74.125.47.106) 56(84) bytes of data.
它只是无限期地挂在这里。
$ cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search <...snip...>.local
nameserver 10.254.2.5
nameserver 10.254.2.124
10.254.2.124 是备份 DC 服务器,目前已关闭并被删除。剪切的部分是我们的公司名称。
# ifconfig
eth0 Link encap:Ethernet HWaddr <snip>
inet addr:10.254.2.101 Bcast:10.254.2.255 Mask:255.255.255.0
inet6 addr: <snip>/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:80066 errors:0 dropped:0 overruns:0 frame:0
TX packets:4421 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7810133 (7.4 MiB) TX bytes:590550 (576.7 KiB)
Interrupt:225 Base address:0xc000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:32 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8104 (7.9 KiB) TX bytes:8104 (7.9 KiB)
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.254.2.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 10.254.2.5 0.0.0.0 UG 0 0 0 eth0
并且,为了确保万无一失,还可以通过系统配置网络 GUI 获取当前以太网配置的快照。
编辑:我还没有足够的声望来发布图片,所以这里有一个链接。抱歉!
系统配置网络快照
我对设置 *nix 开发服务器和常规网络配置还不是很了解,所以如果我遗漏了关键信息,或者发布了不该发布的信息,请告诉我。
谢谢!
答案1
两台主机之间无需 ping 通。可能是您和 Google 之间有人丢弃了 ICMP 数据包。如果其他一切正常,我就不会太担心这个问题。
如果您特别担心,请与运行您的网络设备或防火墙的人核实,看看他们是否允许 ICMP 流量通过。另外,请检查您是否可以 ping 通除 Google 之外的外部世界中的任何其他人?
答案2
这看起来像是路由和/或防火墙问题。
您如何连接到互联网?10.254.2.5(您的默认网关)也是您的互联网网关吗?或者在实际到达外围防火墙之前,中间是否有其他路由?您的防火墙是如何配置的?
请发布 的输出traceroute -n google.com
,以便我们可以看到您的数据包实际上被阻止的位置。
答案3
检查本地 netfilter 规则:
iptables -L -n
如果没有影响 ICMP 的规则并且它是其他路由,因为它似乎是由于 DNS 解析造成的,所以很可能在 10.254.2.5 或其下一跳处发生了一些过滤。
编辑
根据您的更新,看起来您的 Linux 服务器上有本地防火墙规则阻止了 ping。
删除所有规则:
iptables -F
iptables -X
它们可能会在重启时返回。我怀疑它们是由 init 脚本管理的。我猜是禁用 init 脚本:
/sbin/chkconfig iptables off
这在不同的发行版中有所不同。我在之前的回答中对 iptables 进行了简要介绍:
通常,简单地禁用防火墙并不是明智之举。但是,看起来您确实在使用内部网可路由寻址,并且您的描述表明您可能已经在路由的更上层安装了防火墙。除非您了解所做之事的潜在风险,否则请谨慎行事。