curl: (6) Could not resolve host: google.com; Name or service not known
Perhaps you have some very weird and restrictive SELinux rules in place?
If not, try strace -o /tmp/wtf -fF curl -v google.com
and try to spot from /tmp/wtf
output file what's going on.
Issues were:
- IPV6 enabled
- Wrong DNS server
Here is how I fixed it:
IPV6 Disabling
- Open Terminal
- Type
su
and enter to log in as the super user - Enter the root password
- Type
cd /etc/modprobe.d/
to change directory to/etc/modprobe.d/
- Type
vi disableipv6.conf
to create a new file there - Press
Esc + i
to insert data to file - Type
install ipv6 /bin/true
on the file to avoid loading IPV6 related modules - Type
Esc + :
and thenwq
for save and exit - Type
reboot
to restart fedora - After reboot open terminal and type
lsmod | grep ipv6
- If no result, it means you properly disabled IPV6
Add Google DNS server
- Open Terminal
- Type
su
and enter to log in as the super user - Enter the root password
- Type
cat /etc/resolv.conf
to check what DNS server your Fedora using. Mostly this will be your Modem IP address. - Now we have to Find a powerful DNS server. Luckily there is a open DNS server maintain by Google.
- Go to this page and find out what are the "Google Public DNS IP addresses"
- Today those are
8.8.8.8
and8.8.4.4
. But in future those may change. - Type
vi /etc/resolv.conf
to edit theresolv.conf
file - Press
Esc + i
for insert data to file - Comment all the things in the file by inserting # at the begin of the each line. Do not delete anything because can be useful in future.
Type below two lines in the file
nameserver 8.8.8.8
nameserver 8.8.4.4-Type
Esc + :
and thenwq
for save and exit- Now you are done and everything works fine (Not necessary to restart).
- But every time when you restart the computer your /etc/resolv.conf will be replaced by default. So I'll let you find a way to avoid that.
Here is my blog post about this: http://codeketchup.blogspot.sg/2014/07/how-to-fix-curl-6-could-not-resolve.html
Try nslookup google.com to determine if there's a DNS issue. 192.168.1.254 is your local network address and it looks like your system is using it as a DNS server. Is this your gateway/modem router as well? What happens when you try ping google.com. Can you browse to it on a Internet web browser?
I have today similar problem. But weirder.
- host - works
host pl.archive.ubuntu.com
- dig - works on default and on all other DNS's
dig pl.archive.ubuntu.com
,dig @127.0.1.1 pl.archive.ubuntu.com
- curl - doesn't work! but for some addresses it does. WEIRD! Same in Ruby, APT and many more.
$ 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
Revelation
Eventually I used strace
on curl and found that it was connection to nscd
deamon.
connect(4, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = 0
Solution
I've restarted the nscd service (Name Service Cache Daemon) and it helped to solve this issue!
systemctl restart nscd.service