可以 ping 但无法使用服务器名称进行 wget

可以 ping 但无法使用服务器名称进行 wget

我遇到了一个问题。在论坛成员的帮助下,我成功设置了我的网络。概括地说,我有两台计算机 comp1 和 comp2,它​​们像这样连接

comp2(eth0) -> comp1(eth1)    
comp1(eth0) -> network

我的界面如下所示:

公司1:

auto lo  
iface lo inet loopback  
auto eth0  
iface eth0 inet dhcp  
auto eth1  
iface eth1 inet static  
address 10.10.0.10  
netmask 255.255.255.0

公司2:

auto eth0  
iface eth0 inet static  
address 10.10.0.20  
netmask 255.255.255.0  
gateway 10.10.0.10  

计算机2

$ route  
Kernel IP routing table  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
default         10.10.0.10       0.0.0.0         UG    100    0        0 eth0  
10.10.0.0        *               255.255.255.0   U     0      0        0 eth0 

公司1:

$ route  
Kernel IP routing table  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    
default         g128.mp.l       0.0.0.0         UG    100    0        0 eth0  
10.10.0.0       *               255.255.255.0   U     0      0        0 eth1   
10.128.0.0      *               255.224.0.0     U     0      0        0 eth0 

现在:我可以 ssh 进入我的 comp2 并 ping 8.8.8.8 并得到:

ping 8.8.8.8  
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.  
64 bytes from 8.8.8.8: icmp_req=1 ttl=43 time=42.6 ms  
64 bytes from 8.8.8.8: icmp_req=2 ttl=43 time=41.8 ms

但如果我尝试 wget:

wget -O - 173.194.70.113 | grep google  
function n(){if(google.timers.load.t){google.timers.load.t.ol=(new Date).getTime();google.timers.load.t.iml=e;google.kCSI.imc=c;google.kCSI.imn=b;
google.kCSI.imp=d;void 0!==google.stt&&(google.kCS...

没问题,但如果我像这样尝试:

wget -O - http://www.google.com |grep google  
--2013-11-21 15:07:35--  http://www.google.com/  
Resolving www.google.com (www.google.com)... failed: Temporary failure in name   resolution.  
wget: unable to resolve host address `www.google.com'  

对我来说,这意味着这是一个 DNS 服务器问题。

less /etc/resolv.conf在 comp1 上看起来像这样:

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 xxx.xxx.xxx 

xxx 并不重要,但在 comp2 上它看起来像这样:

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  

如何设置?

答案1

当您在 /etc/network/interfaces 中设置静态 IP 地址时,您有责任设置 DNS 名称服务器。我建议您修改 comp2 上的文件,如下所示:

auto lo  
iface lo inet loopback  

auto eth0  
iface eth0 inet static  
address 10.10.0.20  
netmask 255.255.255.0  
gateway 10.10.0.10  
dns-nameservers 8.8.8.8 8.8.4.4

然后让系统重新读取并使用更改:

sudo ifdown eth0 && sudo ifup -v eth0

并测试:

ping -c3 8.8.8.8
ping -c3 www.google.com

答案2

我遇到了类似的问题,在我的例子中,ping/dig/nslookup 可以正常工作,但 wget/curl 和 Firefox 无法正常工作。我编辑了/etc/resolv.conf以使用另一个命名空间(例如 114.114.115.115),一切正常。我也尝试在 Windows 7 中设置相同的 DNS,一切仍然正常,这让我感到困惑。但我发现一篇讨论 ipv6 引起的问题的文章sysctl最后,我按照以下步骤使用实用程序禁用 Ubuntu 中的 IPv6,从而解决了该问题。

# show whether ipv6 is disabled or not
sudo sysctl -a | grep disable_ipv6
# disable all the ipv6
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
# also you can check the settings
sudo sysctl -a | grep disable_ipv6

之后,我就可以毫无问题地连接到互联网了。希望它能帮助你!

顺便说一句,如果您需要永久进行上述设置,您应该编辑该文件/etc/sysctl.conf并添加以下几行:

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1

相关内容