Curl: (6) Не удалось разрешить хост: google.com; Имя или услуга неизвестны
когда я пытаюсь загрузить веб-страницу на терминал, она дает ошибку curl: (6) Could not resolve host
.
У меня есть интернет на моем ПК и пытаюсь подключиться к домашнему интернету. Таким образом, я не вижу здесь никакого прокси.
[[email protected] kevin]# curl http://google.com
curl: (6) Could not resolve host: google.com; Name or service not known
clean all
и попробовал снова, но не повезло.
Но если я использую IP вместо имени домена, он отлично работает.
[[email protected] kevin]# curl http://173.194.46.0
какая-нибудь подсказка?
Ответы
Ответ 1
Были проблемы:
- IPV6 включен
- Неверный DNS-сервер
Вот как я его исправил:
Отключение IPV6
- Открытый терминал
- Введите
su
и введите для входа в систему как суперпользователь
- Введите пароль root
- Введите
cd /etc/modprobe.d/
, чтобы сменить каталог на /etc/modprobe.d/
- Введите
vi disableipv6.conf
, чтобы создать новый файл там
- Нажмите
Esc + i
, чтобы вставить данные в файл
- Введите
install ipv6 /bin/true
в файл, чтобы избежать загрузки модулей, связанных с IPV6.
- Введите
Esc + :
и затем wq
для сохранения и выхода
- Введите
reboot
, чтобы перезагрузить Fedora
- После перезагрузки откройте терминал и введите
lsmod | grep ipv6
- Если нет результата, это означает, что вы правильно отключили IPV6
Добавить сервер DNS Google
- Открытый терминал
- Введите
su
и введите для входа в систему как суперпользователь
- Введите пароль root
- Введите
cat /etc/resolv.conf
, чтобы проверить, какой DNS-сервер использует ваша Fedora. В основном это будет ваш IP-адрес модема.
- Теперь нам нужно найти мощный DNS-сервер. К счастью, у Google есть поддерживаемый DNS-сервер.
- Перейдите в эту страницу и узнайте, что такое "IP-адреса Google Public DNS"
- Сегодня это
8.8.8.8
и 8.8.4.4
. Но в будущем они могут измениться.
- Введите
vi /etc/resolv.conf
для редактирования файла resolv.conf
- Нажмите
Esc + i
для вставки данных в файл
- Прокомментируйте все вещи в файле, вставив # в начало каждой строки. Не удаляйте ничего, потому что это может быть полезно в будущем.
-
Введите ниже двух строк в файле
nameserver 8.8.8.8
nameserver 8.8.4.4
-Type Esc + :
, а затем wq
для сохранения и выхода
- Теперь вы закончили, и все работает нормально (не нужно перезапускать).
- Но каждый раз при перезагрузке компьютера ваш /etc/resolv.conf будет заменен по умолчанию. Поэтому я позволю вам найти способ избежать этого.
Вот мое сообщение в блоге об этом:
http://codeketchup.blogspot.sg/2014/07/how-to-fix-curl-6-could-not-resolve.html
Ответ 2
Возможно, у вас есть очень странные и ограничительные правила SELinux?
Если нет, попробуйте strace -o /tmp/wtf -fF curl -v google.com
и попытайтесь определить из выходного файла /tmp/wtf
, что происходит.
Ответ 3
sudo systemctl restart docker
для меня оказывается, что перезапуск демона docker устранил проблему с кэшированием DNS.
Ответ 4
Попробуйте nslookup google.com, чтобы определить, есть ли проблема с DNS.
192.168.1.254 - ваш локальный сетевой адрес, и похоже, что ваша система использует его как DNS-сервер. Это ваш маршрутизатор шлюза и модема?
Что происходит, когда вы пытаетесь выполнить ping google.com. Можете ли вы просмотреть его в интернет-браузере?
Ответ 5
У нас была такая же проблема на нашем Linux-сервере, и мы просто перезапустили PHP и Apache.
Мы считаем, что некоторые кеши DNS внутри кудри были неправильными, и только перезапуск PHP решил это.
Ответ 6
У меня сегодня подобная проблема. Но более странный.
- хост - работает
host pl.archive.ubuntu.com
- dig - работает по умолчанию и по всем другим DNS
dig pl.archive.ubuntu.com
, dig @127.0.1.1 pl.archive.ubuntu.com
- завиток - не работает! но для некоторых адресов он делает. WEIRD! То же самое в Ruby, APT и многих других.
$ curl -v http://google.com/
* Trying 172.217.18.78...
* Connected to google.com (172.217.18.78) port 80 (#0)
> GET / HTTP/1.1
> Host: google.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: http://www.google.pl/?gfe_rd=cr&ei=pt9UWfqXL4uBX_W5n8gB
< Content-Length: 256
< Date: Thu, 29 Jun 2017 11:08:22 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.pl/?gfe_rd=cr&ei=pt9UWfqXL4uBX_W5n8gB">here</A>.
</BODY></HTML>
* Connection #0 to host google.com left intact
$ curl -v http://pl.archive.ubuntu.com/
* Could not resolve host: pl.archive.ubuntu.com
* Closing connection 0
curl: (6) Could not resolve host: pl.archive.ubuntu.com
Откровение
В конце концов я использовал strace
на curl и обнаружил, что это была связь с nscd
deamon.
connect(4, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = 0
Решение
Я перезапустил службу nscd (Daewon Cache), и это помогло решить эту проблему!
systemctl restart nscd.service
Ответ 7
У меня была такая же проблема, кроме как на Ubuntu VM. Оказывается, мой WiFi отключился. Сначала я не думал проверять, потому что мой хост (Windows 10) работал нормально. Все, что мне нужно было сделать, это подключиться к Интернету.