Использование принадлежности сокета, чтобы разорвать цикл перенаправления локального прокси
Исключите собственные исходящие сокеты процесса прокси из локального перенаправления OUTPUT вместо того, чтобы угадывать его порты источника.
Локальный перехватывающий прокси открывает новые исходящие соединения. Если сплошное перенаправление OUTPUT захватывает и эти сокеты, оно возвращает прокси к его собственному слушателю.
Для существующей конфигурации IPv4 iptables NAT отдельная идентичность службы может различить эти сокеты:
-A OUTPUT -p tcp -m owner ! --uid-owner proxyuser \
-m multiport --dports 80,443 -j REDIRECT --to-ports 8080
Этот фрагмент правил предполагает, что способный к перехвату слушатель уже существует на порту 8080, а исходящие сокеты прокси принадлежат proxyuser. Соединения этого пользователя исключены из этого правила; подходящие соединения других пользователей перенаправляются.
Браузер обычно выбирает эфемерный порт источника. Сопоставление порта источника 80 или 443 не является надёжным способом распознать его соединения с сайтом или освободить прокси.
Сопоставление владельца касается локально созданного трафика с принадлежностью сокета. Оно не заменяет политику адреса источника для пакетов, приходящих с других машин.
Держите в поле зрения существующий порядок правил и сетевую политику. Перенаправление не превращает необработанный слушатель SOCKS в адаптер перехвата, и IPv6 тоже требует соответствующей настройки.