Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумНастройка и подключение

NO_PROXY: как не гонять локальные адреса через посредника

dev_null_ru
dev_null_ru
Ветеран
сообщений 2560
с фев
8 октября, 11:57первое сообщение

Собрал стенд: наружу запросы уходят через посредника, внутри сети своя база и своя админка. Прописал http_proxy, и внутренние адреса тоже поехали наружу. База отвечает отказом, потому что видит обращение с чужой стороны.

Прописал no_proxy=10.0.0.0/8, ничего не изменилось. Дальше начались открытия, вынесу их сюда, потому что сам искал долго.

tcpdump_fan
tcpdump_fan
Знаток
сообщений 1010
с июн
15 марта, 14:14#2

Сети в no_proxy почти нигде не работают. Список читают как набор имён и точных адресов, маску подсети там понимают единицы.

слушаю провод, а не догадки
pingpong
pingpong
Новичок
сообщений 105
с июн, второй сезон
22 августа, 17:31#3

то есть 10.0.0.0/8 просто игнорируется целиком? а как тогда всю сеть закрыть

Родион Гаев
Родион Гаев
Ветеран
сообщений 2420
с фев
1 января, 08:48#4

Смотря чем вы ходите, и вот это главная засада: единого правила для no_proxy нет, каждая библиотека читает список по-своему.

Что общего почти везде:

  • разделитель запятая, пробелы вокруг лучше не ставить, часть разборщиков их не обрезает;
  • имя с точкой впереди, .vnutri.set, закрывает сам домен и все поддомены;
  • имя без точки закрывает только точное совпадение, vnutri.set не покроет baza.vnutri.set;
  • localhost и 127.0.0.1 сами по себе не исключаются, их надо перечислить руками;
  • если в адресе указан порт, часть библиотек сравнивает вместе с портом, поэтому пишут и baza.vnutri.set, и baza.vnutri.set:5432.

Где расходятся:

Чем ходитеМаски подсетиЗвёздочкаОтдельный порт
curlнетнетсравнивает с портом
python requestsнетнетсравнивает с портом
Goда, CIDR понимаетнетда
Node undiciнетнетнет
Javaсвоя переменнаяданет

У Java вообще отдельная песня: там http.nonProxyHosts, разделителем идёт вертикальная черта, звёздочка работает. Строка выглядит так: localhost|127.*|*.vnutri.set.

Ваша запись с /8 просто прошла мимо: curl и питон её не понимают и молча считают именем узла.

dev_null_ru
dev_null_ru
Ветеран
сообщений 2560
с фев
8 июня, 11:05#5
Родион Гаев: молча считают именем узла

Ага, поэтому и тишина в логах. Я ждал хотя бы предупреждения.

zavarka
zavarka
Участник
сообщений 435
с ноя
15 ноября, 14:22#6

Раз маски мимо, перечисляйте адреса перебором. Делается одной строкой и потом просто лежит в файле.

no_proxy="localhost,127.0.0.1,::1,.vnutri.set"
for i in $(seq 2 40); do no_proxy="$no_proxy,10.0.0.$i"; done
export no_proxy NO_PROXY="$no_proxy"

Сорок адресов в строке выглядят некрасиво, работают надёжно. И выставляйте обязательно обе формы имени, строчную и заглавную: библиотеки читают то одну, то другую.

чайник кипит, скрипт бежит
Дарья Смолина
Дарья Смолина
Участник
сообщений 340
с дек
22 апреля, 17:39#7

У нас проще вышло: внутренние имена увели в отдельный домен третьего уровня, и в no_proxy теперь одна запись с точкой впереди. Когда добавляется новая машина, править не нужно ничего.

tcpdump_fan
tcpdump_fan
Знаток
сообщений 1010
с июн
1 сентября, 08:56#8

Проверять всё это лучше запросом с ключом подробностей, глазами по конфигу такое ловится плохо.

куда реально пошёл запрос
куда реально пошёл запрос

Одна строка Trying снимает все вопросы.

слушаю провод, а не догадки
Родион Гаев
Родион Гаев
Ветеран
сообщений 2420
с фев
8 февраля, 11:13#9

Дарья права, отдельный домен внутри сети избавляет от половины возни со списками. Сам так сделал, жалею только, что поздно.

dev_null_ru
dev_null_ru
Ветеран
сообщений 2560
с фев
15 июля, 14:30#10

Итоговое, что у меня заработало.

Маску /8 выкинул, вписал перебором адреса стенда плюс .vnutri.set с точкой впереди. Обе формы имени, строчную и заглавную. localhost, 127.0.0.1 и ::1 перечислил отдельно, без них питон упорно тащил обращения к самому себе через посредника.

Проверил ключом подробностей каждое внутреннее имя, все идут напрямую. Наружные запросы как ходили через посредника, так и ходят. Спасибо, разобрались.