REDSOCKS выходит из файловых дескрипторов при попытке перенаправить весь исходящий (TCP) трафик с моей машины Linux

Я пытаюсь перенаправить весь исходящий TCP-трафик с моей Linux-машины на удаленный прокси-сервер SOCKS5.

В настоящее время я использую следующее правило в цепочке OUTPUT:

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, "соксифицированы" через удаленный прокси SOCKS5.

Но что, если я хочу, чтобы это работало для всех пользователей моего Linux-бокса?

Итак, я попробовал следующее правило в цепочке OUTPUT (вместо приведенного выше):

sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

И вот тогда демон REDSOCKS немедленно вышел из файловых дескрипторов и не смог перенаправить какие-либо пакеты.

Почему это происходит? Как перенаправить TCP-трафик для всех пользователей (и их приложений) на удаленный прокси-сервер SOCKS5?

PS я пробовал:

  1. sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner 0-10000 -j REDSOCKS

  2. ulimit -n 4096

Но все же есть та же проблема.

1 ответ

Решение

Я предполагаю, что вам нужно исключить собственный трафик REDSOCKS - когда вы перенаправляете всех пользователей, вы создаете цикл.

Другие вопросы по тегам