自从我将 HP Proliant 服务器从 Ubuntu 10.04 升级到 12.04 后,我无法:
- ping google.com
- ping 8.8.8.8
- 使用 Firefox 浏览互联网
- git 获取源地址
- 从远程机器部署 cap
然而,当我通过我们公司网络内的 IP 地址访问该服务器时,我可以看到我的 Rails 应用程序正在该服务器上运行。
我看到了 GUI 中的网络图标,但“有线网络”显示为灰色。
根据我在 AU 上浏览过的许多类似但未解决的线程,这里有一些其他相关信息:
dean@dgwjasonfried:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 1c:c1:de:fa:cd:9f
inet addr:10.24.5.50 Bcast:10.24.5.255 Mask:255.255.255.0
inet6 addr: fe80::1ec1:deff:fefa:cd9f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40735 errors:0 dropped:0 overruns:0 frame:0
TX packets:77215 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2806140 (2.8 MB) TX bytes:113945803 (113.9 MB)
Interrupt:19
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:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1872 (1.8 KB) TX bytes:1872 (1.8 KB)
dean@dgwjasonfried:~$ lspci -nn | grep 以太网
1e:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme BCM5723 Gigabit Ethernet PCIe [14e4:165b] (rev 10)
在 /etc/网络/接口:
# 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 primary network interface
auto eth0
iface eth0 inet dhcp
/etc/resolv.conf:
domain dgw.ame.molex.com
search dgw.ame.molex.com
nameserver 10.24.2.171
nameserver 10.45.2.171
**在尝试遵循以下和其他地方给出的一些建议后,于 2013 年 3 月 19 日更新:
dean@dgwjasonfried:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search dgw.ame.molex.com
domain dgw.ame.molex.com
search dgw.ame.molex.com
nameserver 10.24.2.171
nameserver 10.45.2.171
**更新结束
内核 IP 路由表
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.24.5.1 0.0.0.0 UG 0 0 0 eth0
10.24.5.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
**已更新以显示 NetworkManager.conf 和 resolv.conf 符号链接对我有用的证据
dean@dgwjasonfried:~$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dns=dnsmasq
[ifupdown]
managed=true
dean@dgwjasonfried:~$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Mar 18 09:33 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
**在我删除 /etc/resolvconf/resolv.conf.d 中的原始文件并清除位于尾部的原始副本后,更新为显示最新的 resolv.conf,然后重新启动:
dean@dgwjasonfried:/etc/resolvconf/resolv.conf.d$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search dgw.ame.molex.com
请注意,上面早期 resolv.conf 版本中列出的名称服务器条目现已消失。另请注意,虽然我能够短暂地 ping google.com 来解析 google.com 的 IP 地址(但仍然没有收到任何数据包),但现在我又回到了原来的情况,我得到了“未知主机 google.com”。
**更新结束
如果您能提供任何帮助或建议我将不胜感激。
谢谢!
迪安·理查森
答案1
我认为退一步来讲,教一个人如何钓鱼而不是仅仅告诉你哪里错了是有益的。
制作一个良好的网络连接
- 它可以是硬件:以太网卡、电缆触点、直接连接的交换机上的网络接口等。
- 它可以是低级软件:网卡的内核驱动程序
- 它可以是你的路由表
- 它可以是 DNS
并且这些都是自下而上相互依赖的,例如,如果您无法正确路由数据包,您就无法访问您的 DNS 服务。
据我所知,只有一种(合理的)方法可以查明问题:通过消除的方式一个接一个地查找。
您的描述中有一句话引人注目:
然而,当我通过我们公司网络内的 IP 地址访问该服务器时,我可以看到我的 Rails 应用程序正在该服务器上运行。
您尝试了这一点,真是太好了。这条信息非常宝贵,因为它排除了许多可能的原因。这意味着您的硬件和(内核)驱动程序以及公司网络内的连接看起来都很好。输出ifconfig
显示正在发送和接收的数据包,没有(零)错误、冲突或重传,这也证实了这一点。目前,我确信您的问题仅出在您的配置上。
我注意到您的内部 DNS 服务器位于(非公共)IP:10.24.2.171,这不在您的直接子网 10.24.5.0 上,您可以通过以下ifconfig
输出行判断这一点:
inet addr:10.24.5.50 Bcast:10.24.5.255 Mask:255.255.255.0
请注意,您的掩码仅将 4 个八位字节中的最后一个保留为 0,这意味着您仅通过 10.24.5.x 子网进行广播。您可能没有通往内部 DNS 服务器的完整路由。
我现在要做的实验是尝试验证到基本组件的路线:
- 您的网关 10.24.5.1
- 您的域名服务器 10.24.2.171
必须做到这些按 IP因为我们还不知道您的 DNS 服务器是否正常以及您是否可以与其通信。
# first traceroute the gateway:
traceroute 10.24.5.1
no route to host
如果此操作失败并出现类似或 的错误destination is unreachable
,则几乎可以肯定您的问题出在路由表中。如果成功,那么您就向前迈出了一大步,因为路由本身就是一个大课题。
# if successful traceroute the DNS server
traceroute 10.24.2.171
如果失败,则问题可能是网络掩码太严格。尝试将其更改为 255.255.0.0。您可以/etc/network/interfaces
通过添加以下内容进行设置:
netmask 255.255.0.0
在下面eth0
。
解决此问题后,您需要重新启动网络:
sudo /etc/init.d/networking restart
高血压
答案2
其中一个问题是 resolvconf 没有正确配置。参考:https://bugs.launchpad.net/ubuntu/+source/resolvconf/+bug/1000244。要解决此问题,请运行
sudo dpkg-reconfigure resolvconf
但是,这不能成为您无法通过 IP 地址 ping 通其他机器的原因。
答案3
eth0 Link encap:Ethernet HWaddr 1c:c1:de:fa:cd:9f
inet addr:10.24.5.50 Bcast:10.24.5.255 Mask:255.255.255.0
10.*
接口通常有网络掩码255.0.0.0
。请检查网络掩码是否适合您的 LAN。