Curl on näppärä työkalu, kun selvittää vaikka oman sivuston toimivuutta. On paljon nopeampaa kirjoittaa komentoriville curl -I https://www.example.tld
kuin yrittää selaimen kautta, varsinkin kun selaimien omat välimuistit saattavat sotkea asiaa. Sillä saa myös testattua palomuuria, jos haluaa tietää toimiiko bottiesto. Silloin esimerkiksi curl -I -A "Buck" https://www.example.com
kertoo saatiinko huonosti käyttäytyvä botti Buck pysäytettyä. Ja jos curl toimii omalla palvelimella, mutta ei oman tietokoneen komentokehoitteesta, niin tietää heti palomuurin kiukuttelevan. Mutta kun curl ei toimi omalla serverillä yritettäessä omaa domainia samalla palvelimella, niin alkaa hermostuttamaan.
Yksi ehkä eniten kyselty virhe on cURL error 7: Failed to connect to example.com port 443: Connection refused
.
Virhe 7 kertoo:
CURLE_COULDNT_CONNECT (7)
Failed to connect() to host or proxy.
Se kertoo suoraan, että curl ei saanut yhteyttä joko porttiin tai hostiin ja ongelmaa on lähdettävä metsästämään tuota kautta.
Kun yhteys ei onnistu yhteen domainiin, mutta kaikki muut toimivat, niin syy on lähes aina virtual hostin asetuksissa. Silloin kannattaa kokeilla molemmat, http ja https, niin saa ainakin tietoon kiukutteleeko vain toinen vai molemmat. Vertaa virtual hostin konffia johonkin toimivaan.
Jos millekään domainille ei pääse curlilla, mutta selaimella sivustot toimivat, niin ensimmäinen kysymys on, että käytätkö jotain palomuurin laajennosta, kuten Fail2bannia. Jos vastaus on kyllä, niin lähes satavarmasti olet onnistunut bannaamaan itsesi.
Nopein tapa varmistaa asia on vilkaista Fail2banin logeja, vaihda tilalle IP-osoitteesi:
zgrep 'x.x.x.x' /var/log/fail2ban.log*
Saattaa olla myös syytä vilkaista mitä syslog kertoo, kun on ensin ottanut virheen curl komennolla:
tail -100 /var/log/syslog
Curlin virheen metsästäminen voi tuntua turhauttuvalta, mutta siitä tulee hieman helpompaa, kun oivaltaa: error 7 koskee aina hosteja tai portteja ja tarkoittaa, että curl ei saa yhteyttä tai yhteys estetään.