curl 127.0.0.1 и localhost ведут себя по-разному (файл hosts в порядке)

444
Alex Orange

Я столкнулся со странной проблемой на сервере разработки. CentOS 6.5. Если я свернусь из скрипта bash в «127.0.0.1», я получу ответ 403. Он пытается пройти через корпоративный прокси. Подробности ниже.

Если я клююсь на "localhost" - это хорошо.

Почему это может происходить и как это предотвратить?

Я хочу использовать 127.0.0.1 в качестве более безопасной опции (на некоторых производственных серверах локальный хост может быть не установлен).

свернуться к 127.0.0.1 log:

 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 

скрутите к локальному журналу:

* 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 

кошка / etc / hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 
2
Вы пытались сбросить переменную окружения `HTTP_PROXY`? Eugen Rieck 5 лет назад 0
пожалуйста, также отправьте эквивалентный * curl в localhost log * gollum 5 лет назад 0
@EugenRieck да, но это не вопрос: D Alex Orange 5 лет назад 1
@gollum ничего интересного там нет - маршрут идет прямо к 127.0.0.1 и приводит к 200 Alex Orange 5 лет назад 0
Таким образом, вы определенно не видите прокси-соединение, если вы переходите на 127.0.0.1? gollum 5 лет назад 0
Вы проверили свою переменную окружения `NO_PROXY`? gollum 5 лет назад 0
* на некоторых рабочих серверах локальный хост может не быть установлен * это сломает много вещей, и нет никаких причин не определять `localhost` в` / etc / hosts`. Он поставляется так во всех стандартных дистрибутивах Linux ... Patrick Mevzek 5 лет назад 0
Вы не показываете, что происходит, когда вы делаете `curl localhost`. В зависимости от `/ etc / hosts` и` / etc / resolv.conf` это может быть «расширено» до совершенно другого имени ... Patrick Mevzek 5 лет назад 1
`HTTP_PROXY` вполне может быть вопросом! Это заставит curl использовать прокси, если запрошенный адрес отсутствует в (очень коротком) списке. Вполне возможно, что localhost находится в этом списке, а 127.0.0.1 - нет. Eugen Rieck 5 лет назад 2
Что говорят `ping localhost` и` ping 127.0.0.1`? confetti 5 лет назад 0
@PatrickMevzek Я обновил пост и добавил журнал localhost. Alex Orange 5 лет назад 0
@confetti Не уверен, что пинг дает вам, но вот трассировка до локального хоста (127.0.0.1), максимум 30 прыжков, 60 байтовых пакетов 1 локальный хост (127.0.0.1) 0,035 мс 0,015 мс 0,011 мс Alex Orange 5 лет назад 0
@PatrickMevzek / etc / hosts находится в посте, /etc/resolv.conf содержит только две записи namserver ... Кстати, спасибо за ваше время Alex Orange 5 лет назад 0
Вы явно настроили прокси-сервер. Вот почему я попросил пинг, но завиток это тоже подтвердил. confetti 5 лет назад 0
@confetti Да. Прокси определенно настроен - это не удивительно - мы устанавливаем это сами. Вопрос в том, почему прокси используется при адресации loopback (!) 127.0.0.1 и не используется при адресации хоста (!!)? Может это неправильный форум? Есть ли лучшее место для поиска ответов для администрирования сети и сервера? Alex Orange 5 лет назад 0
@confetti Я только что заметил, что localhost подключается напрямую к :: 1 через порт 443. Я предполагаю, что это обходит прокси и имеет смутное представление, почему. Alex Orange 5 лет назад 0
@PatrickMevzek Я думаю, что я тупой. Я только что заметил, что localhost разрешен как :: 1. Я до сих пор не понимаю, почему это обходит прокси. Alex Orange 5 лет назад 0
Как я уже сказал, переменная окружения `HTTP_PROXY` действительно важна: поскольку она содержит адрес IPv4, она используется для целей IPv4 (таких как 127.0.0.1), но не для целей IPv6 (таких как localhost в вашей настройке). Eugen Rieck 5 лет назад 1
@EugenRieck Вы гений. Это так очевидно, когда ты это понимаешь. Спасибо! Alex Orange 5 лет назад 0

0 ответов на вопрос