curl 127.0.0.1 и localhost ведут себя по-разному (файл hosts в порядке)
477
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
Вы пытались сбросить переменную окружения `HTTP_PROXY`?
Eugen Rieck 6 лет назад
0
пожалуйста, также отправьте эквивалентный * curl в localhost log *
gollum 6 лет назад
0
@EugenRieck да, но это не вопрос: D
Alex Orange 6 лет назад
1
@gollum ничего интересного там нет - маршрут идет прямо к 127.0.0.1 и приводит к 200
Alex Orange 6 лет назад
0
Таким образом, вы определенно не видите прокси-соединение, если вы переходите на 127.0.0.1?
gollum 6 лет назад
0
Вы проверили свою переменную окружения `NO_PROXY`?
gollum 6 лет назад
0
* на некоторых рабочих серверах локальный хост может не быть установлен * это сломает много вещей, и нет никаких причин не определять `localhost` в` / etc / hosts`. Он поставляется так во всех стандартных дистрибутивах Linux ...
Patrick Mevzek 6 лет назад
0
Вы не показываете, что происходит, когда вы делаете `curl localhost`. В зависимости от `/ etc / hosts` и` / etc / resolv.conf` это может быть «расширено» до совершенно другого имени ...
Patrick Mevzek 6 лет назад
1
`HTTP_PROXY` вполне может быть вопросом! Это заставит curl использовать прокси, если запрошенный адрес отсутствует в (очень коротком) списке. Вполне возможно, что localhost находится в этом списке, а 127.0.0.1 - нет.
Eugen Rieck 6 лет назад
2
Что говорят `ping localhost` и` ping 127.0.0.1`?
confetti 6 лет назад
0
@PatrickMevzek Я обновил пост и добавил журнал localhost.
Alex Orange 6 лет назад
0
@confetti Не уверен, что пинг дает вам, но вот трассировка до локального хоста (127.0.0.1), максимум 30 прыжков, 60 байтовых пакетов 1 локальный хост (127.0.0.1) 0,035 мс 0,015 мс 0,011 мс
Alex Orange 6 лет назад
0
@PatrickMevzek / etc / hosts находится в посте, /etc/resolv.conf содержит только две записи namserver ... Кстати, спасибо за ваше время
Alex Orange 6 лет назад
0
Вы явно настроили прокси-сервер. Вот почему я попросил пинг, но завиток это тоже подтвердил.
confetti 6 лет назад
0
@confetti Да. Прокси определенно настроен - это не удивительно - мы устанавливаем это сами. Вопрос в том, почему прокси используется при адресации loopback (!) 127.0.0.1 и не используется при адресации хоста (!!)? Может это неправильный форум? Есть ли лучшее место для поиска ответов для администрирования сети и сервера?
Alex Orange 6 лет назад
0
@confetti Я только что заметил, что localhost подключается напрямую к :: 1 через порт 443. Я предполагаю, что это обходит прокси и имеет смутное представление, почему.
Alex Orange 6 лет назад
0
@PatrickMevzek Я думаю, что я тупой. Я только что заметил, что localhost разрешен как :: 1. Я до сих пор не понимаю, почему это обходит прокси.
Alex Orange 6 лет назад
0
Как я уже сказал, переменная окружения `HTTP_PROXY` действительно важна: поскольку она содержит адрес IPv4, она используется для целей IPv4 (таких как 127.0.0.1), но не для целей IPv6 (таких как localhost в вашей настройке).
Eugen Rieck 6 лет назад
1
@EugenRieck Вы гений. Это так очевидно, когда ты это понимаешь. Спасибо!
Alex Orange 6 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
2
Есть ли способ привязать беспроводную сеть к настройке прокси?
-
5
Доступ к hulu / youtube за пределами США
-
1
Opera «забывает» определение прокси, если прокси недоступен
-
-
5
Заставить Firefox автоматически подобрать интернет-прокси по умолчанию?
-
1
Обратный прокси Apache
-
3
Не могу понять, почему это регулярное выражение не применяется
-
2
Бесплатный прокси-сервер для Windows Home Server?
-
3
Настройки прокси на ПК переопределяются
-
5
Кто-нибудь знает скриптовый способ переключения настроек интернет-прокси LAN для браузеров
-
2
Заставьте Evolution пройти через SOCKS прокси