Может пинговать, но не может wget с именем сервера
У меня проблема. с помощью людей на этом форуме мне удалось настроить мою сеть. Подводя итог, у меня есть два компьютера comp1 и comp2, соединенные вот так
comp2(eth0) -> comp1(eth1)
comp1(eth0) -> network
мой интерфейс выглядит так:
comp1:
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
comp2:
auto eth0
iface eth0 inet static
address 10.10.0.20
netmask 255.255.255.0
gateway 10.10.0.10
comp2
$ 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
comp1:
$ 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
Теперь: я могу зайти в свой comp2 и пинг 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
ххх не важны, но на 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
как это настроить?
2 ответа
Когда вы устанавливаете статический IP-адрес в /etc/network/interfaces, вы несете ответственность за установку 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
У меня была похожая проблема, в моем случае ping/dig/nslookup были в порядке, но wget/curl и Firefox не работали нормально. И я отредактировал /etc/resolv.conf
чтобы использовать другое пространство имен, такое как 114.114.115.115, все было в порядке. Я также пытался установить тот же DNS в Windows 7, все по-прежнему было в порядке, что меня смутило. Но я нашел статью, в которой люди обсуждали проблему, вызванную ipv6. Наконец, я исправил проблему, отключив IPv6 в Ubuntu, используя sysctl
утилита со следующими шагами.
# 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