curl 127.0.0.1 und localhost verhalten sich unterschiedlich (hosts-Datei ist gut)

595
Alex Orange

Ich bin auf ein seltsames Problem auf dem Dev-Server gestoßen. CentOS 6,5. Wenn ich aus dem Bash-Skript auf "127.0.0.1" gehe, bekomme ich 403 Antwort. Es wird versucht, die Vertretung des Unternehmens zu durchlaufen. Details unten.

Wenn ich mich zu "localhost" kräusle, ist es gut.

Warum kann das passieren und wie kann man das verhindern?

Ich möchte 127.0.0.1 als sicherere Option verwenden (auf einigen Produktionsservern kann localhost nicht festgelegt sein).

auf 127.0.0.1 Protokoll aufrollen:

 About to connect() to proxy 172.1.0.65 port 3128 (#0) * Trying 172.11.0.63... connected * Connected to 172.11.0.63 (172.11.0.63) port 3128 (#0) * Establish HTTP proxy tunnel to 10.235.1.195:443 > CONNECT 10.235.1.195:443 HTTP/1.1 > Host: 10.235.1.195:443 > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 > Proxy-Connection: Keep-Alive > < HTTP/1.0 403 Forbidden 

curl to localhost log:

* About to connect() to localhost port 443 (#0) * Trying ::1... connected * Connected to localhost (::1) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * warning: ignoring value of ssl.verifyhost * skipping SSL peer certificate verification * SSL connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA * Server certificate: * bla-bla-bla > POST /link/to/page HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 > Host: localhost > Accept: */* > Content-Length: 43 > Content-Type: application/x-www-form-urlencoded >  } [data not shown] < HTTP/1.1 200 OK < Date: Fri, 03 Aug 2018 14:50:40 GMT < Server: Apache/2.2.15 (CentOS) < X-Powered-By: PHP/5.3.3 

cat / etc / hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 
2
Haben Sie versucht, die Umgebungsvariable `HTTP_PROXY` zu deaktivieren? Eugen Rieck vor 5 Jahren 0
Bitte poste auch eine entsprechende * curl in das localhost log * gollum vor 5 Jahren 0
@EugenRieck ja, aber das ist nicht die Frage: D Alex Orange vor 5 Jahren 1
@gollum nichts Interessantes dort - Route geht direkt nach 127.0.0.1 und ergibt 200 Alex Orange vor 5 Jahren 0
Sie sehen also definitiv keine Proxy-Verbindung, wenn Sie sich auf 127.0.0.1 bewegen? gollum vor 5 Jahren 0
Haben Sie Ihre Umgebungsvariable "NO_PROXY" überprüft? gollum vor 5 Jahren 0
* Auf einigen Produktionsservern ist möglicherweise localhost nicht festgelegt. * Dadurch wird eine Menge Material zerstört, und es gibt keinen Grund, `localhost` nicht in` / etc / hosts` zu definieren. Es wird in allen Standard-Linux-Distributionen so ausgeliefert ... Patrick Mevzek vor 5 Jahren 0
Sie zeigen nicht, was passiert, wenn Sie 'localhost curl' ausführen. Abhängig von `/ etc / hosts` und` / etc / resolv.conf` kann dies zu einem völlig anderen Namen "erweitert" werden ... Patrick Mevzek vor 5 Jahren 1
Das `HTTP_PROXY` könnte die Frage sein! Curl verwendet einen Proxy, wenn sich die angeforderte Adresse nicht in einer (sehr kurzen) Liste befindet. Es kann leicht sein, dass localhost auf dieser Liste steht und 127.0.0.1 nicht. Eugen Rieck vor 5 Jahren 2
Was bedeuten "ping localhost" und "ping 127.0.0.1"? confetti vor 5 Jahren 0
@PatrickMevzek Ich habe den Beitrag aktualisiert und das Localhost-Protokoll hinzugefügt. Alex Orange vor 5 Jahren 0
@confetti Nicht sicher, was Ping liefert, aber hier ist Traceroute zu localhost (127.0.0.1), max. 30 Hops, 60-Byte-Pakete 1 localhost (127.0.0.1) 0.035 ms 0.015 ms 0.011 ms Alex Orange vor 5 Jahren 0
@PatrickMevzek / etc / hosts Inhalt ist in Post, /etc/resolv.conf enthält nur zwei Nameserver-Datensätze ... btw Danke für Ihre Zeit Alex Orange vor 5 Jahren 0
Sie haben eindeutig eine Art Proxy eingerichtet. Deshalb bat ich um einen Ping, aber die Locke bestätigte es auch. confetti vor 5 Jahren 0
@confetti Ja. Proxy ist definitiv eingerichtet - es ist keine Überraschung - wir stellen es selbst ein. Die Frage ist, warum Proxy bei der Adressierung von Loopback (!) Durch 127.0.0.1 und nicht bei der Adressierung durch den Host (!!) verwendet wird. Vielleicht ist es falsches Forum? Gibt es einen besseren Ort, um Antworten für die Netzwerk- und Serververwaltung zu suchen? Alex Orange vor 5 Jahren 0
@confetti Mir ist gerade aufgefallen, dass localhost über Port 443 direkt mit :: 1 verbunden wird. Ich gehe davon aus, dass dies Proxy umgeht und eine vage Idee hat, warum. Alex Orange vor 5 Jahren 0
@PatrickMevzek Ich denke ich bin dumm. Ich habe gerade bemerkt, dass localhost als :: 1 aufgelöst wird. Ich verstehe immer noch nicht, warum dies den Proxy umgeht. Alex Orange vor 5 Jahren 0
Wie gesagt - die Umgebungsvariable `HTTP_PROXY` ist in der Tat wichtig: Da sie eine IPv4-Adresse enthält, wird sie für IPv4-Ziele (z. B. 127.0.0.1) verwendet, nicht jedoch für IPv6-Ziele (z. B. localhost in Ihrem Setup). Eugen Rieck vor 5 Jahren 1
@EugenRieck Du bist ein Genie. Das ist so offensichtlich, wenn Sie das verstehen. Vielen Dank! Alex Orange vor 5 Jahren 0

0 Antworten auf die Frage