iptables: перенаправление tcp-соединений на ssh-туннель

iptables: перенаправление tcp-соединений на ssh-туннель

Я видел, как это использовалось во многих проектах на базе Android, таких как «ProxyDroid» и «SSHTunnel».

Если вы устанавливаете соединение с прокси-сервером или туннелем SSH, то с помощью iptables все TCP-запросы будут перенаправлены через созданный вами туннель.

Это должно быть что-то вроде «-I OUTPUT -p tcp --destination-not xxx.xxx.xx.xx --redirect-to xx.xxx.xx.xx:port», но я не смог найти никаких примеров по этому поводу и не знаю, следует ли вставлять это в nat или что-то еще + я понятия не имею, нужно ли мне иметь больше одного правила, например: еще одно для входящих подключений.

РЕДАКТИРОВАТЬ:

Похоже, что использовать туннель напрямую невозможно. Или я не нашел, как это сделать без использования агента. Мне пришлось установить программу под названием redsocks, которая выступала в качестве локального сервера, чтобы это заработало.

Что касается команд iptables, используемых здесь, то это:

# do not redirect connection sent to localhost so redirected connections can reach
# its destination, otherwise we'll stuck in a loop.
iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
# Redirect all tcp connections except ones that are going to my tunnel server 
# to the local redsocks port
iptables -t nat -A OUTPUT -p tcp ! -d tunnel.ip.goes.here -j REDIRECT --to-ports 31338

Репозиторий RedSocks:https://github.com/darkk/redsocks


Теперь все работает отлично, но мне все еще нужно узнать, можно ли это сделать без Redsocks (подключившись к туннелю напрямую).

решение1

Вы имеете в виду настроить VPN для бедных через SSH? Если да, то вот документация Ubuntu для этого:

https://help.ubuntu.com/community/SSH_VPN

По сути, вы используете опцию «-w», чтобы настроить новый интерфейс tun0 и начать маршрутизацию через него. iptablesне участвует, хотя вам потребуется настроить маршруты.

Обратите внимание, что использование TCP через TCP может бытьплохая идеяЛучшим вариантом может стать простой VPN, например OpenVPN, но это будет сложнее, чем быстрый и грязный туннель SSH.

Связанный контент