Я пытаюсь перенаправить весь исходящий трафик TCP со своего поля Linux на удаленный прокси-сервер SOCKS5.
В настоящее время я использую следующее правило в ВЫХОДНОЙ цепочке:
sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner myuser -j REDSOCKS
И цепочка REDSOCKS содержит:
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 12345
На локальном порте 12345
У меня есть выполнение демон REDSOCKS, который связывается с удаленным прокси-сервером SOCKS5.
Это хорошо работает! Все приложения, запущенные от имени пользователя myuser, являются 'socksified' через удаленный прокси SOCKS5.
Но что, если я хочу, чтобы это работало на всех пользователей на моем поле Linux?
Так, я попробовал следующее правило в ВЫХОДНОЙ цепочке (вместо той выше):
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
И именно тогда демон REDSOCKS пошел 'из дескрипторов файлов' сразу и не мог перенаправить пакеты.
Почему это происходит? Как я могу перенаправить трафик TCP для всех пользователей (и их приложения) к удаленному прокси-серверу SOCKS5?
P.S. Я попробовал:
sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner 0-10000 -j REDSOCKS
ulimit -n 4096
Но все еще имейте ту же проблему.
Думаю, вам нужно исключить собственный трафик REDSOCKS - когда вы перенаправляете для всех пользователей, вы создаете цикл.