Forse hai in atto alcune regole SELinux molto strane e restrittive?
In caso contrario, prova strace -o /tmp/wtf -fF curl -v google.com
e prova a individuare da /tmp/wtf
file di output cosa sta succedendo.
I problemi erano:
- IPV6 abilitato
- Server DNS errato
Ecco come l'ho risolto:
Disattivazione IPV6
- Apri terminale
- Digita
su
e accedi per accedere come superutente - Inserisci la password di root
- Digita
cd /etc/modprobe.d/
per cambiare la directory in/etc/modprobe.d/
- Digita
vi disableipv6.conf
per creare un nuovo file lì - Premi
Esc + i
per inserire i dati nel file - Digita
install ipv6 /bin/true
sul file per evitare di caricare i moduli relativi a IPV6 - Digita
Esc + :
e poiwq
per salvare ed uscire - Digita
reboot
per riavviare fedora - Dopo il riavvio, apri il terminale e digita
lsmod | grep ipv6
- Se non ottieni risultati, significa che hai disabilitato correttamente IPV6
Aggiungi server DNS di Google
- Apri terminale
- Digita
su
e accedi per accedere come superutente - Inserisci la password di root
- Digita
cat /etc/resolv.conf
per verificare quale server DNS utilizza la tua Fedora. Principalmente questo sarà l'indirizzo IP del tuo modem. - Ora dobbiamo trovare un potente server DNS. Fortunatamente esiste un server DNS aperto gestito da Google.
- Vai a questa pagina e scopri quali sono gli "indirizzi IP di Google Public DNS"
- Oggi sono
8.8.8.8
e8.8.4.4
. Ma in futuro potrebbero cambiare. - Digita
vi /etc/resolv.conf
per modificare ilresolv.conf
file - Premi
Esc + i
per inserire i dati nel file - Commenta tutte le cose nel file inserendo # all'inizio di ogni riga. Non cancellare nulla perché può essere utile in futuro.
-
Digita sotto due righe nel file
server dei nomi 8.8.8.8
server dei nomi 8.8.4.4-Digita
Esc + :
e poiwq
per salvare ed uscire - Ora hai finito e tutto funziona correttamente (non è necessario riavviare).
- Ma ogni volta che riavvii il computer, il tuo /etc/resolv.conf verrà sostituito per impostazione predefinita. Quindi ti lascerò trovare un modo per evitarlo.
Ecco il mio post sul blog su questo:http://codeketchup.blogspot.sg/2014/07/how-to-fix-curl-6-could-not-resolve.html
Prova nslookup google.com per determinare se c'è un problema DNS.192.168.1.254 è il tuo indirizzo di rete locale e sembra che il tuo sistema lo stia utilizzando come server DNS. È questo anche il tuo gateway/modem router? Cosa succede quando provi a eseguire il ping su google.com. Puoi accedervi su un browser Web Internet?
Oggi ho un problema simile. Ma più strano.
- host - funziona
host pl.archive.ubuntu.com
- dig - funziona su default e su tutti gli altri DNS
dig pl.archive.ubuntu.com
,dig @127.0.1.1 pl.archive.ubuntu.com
- curl - non funziona! ma per alcuni indirizzi lo fa. STRANO! Lo stesso in Ruby, APT e molti altri.
$ 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
Rivelazione
Alla fine ho usato strace
su curl e ho scoperto che si trattava di una connessione a nscd
demone.
connect(4, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = 0
Soluzione
Ho riavviato il servizio nscd (Name Service Cache Daemon) e ha aiutato a risolvere questo problema!
systemctl restart nscd.service