Я хотел бы отправлять трафик, предназначенный для определенной ip / подсети, через один ssh socks5, в то же время маршрутизируя другой трафик через другой туннель socks5.
Я пробовал tsocks со следующей конфигурацией:
path {
server = 127.0.0.1
server_port = 3001
server_type = 5
reaches = 1.2.3.4/32
}
, но затем я пытаюсь «tsocks wget 1.2.3.4», он не проходит через этот прокси, выдавая ошибку IP (0.0.0.0) & 18:32:14 libtsocks(16065): SUBNET (0.0.0.0) != IP on line 33 in configuration file, ignored
Я также думаю, смогу ли я сделать это с помощью iptables.
Любые рекомендации о том, как это можно сделать?
Вы можете использовать sshuttle
, как описано в Как маршрутизировать мой интернет через туннель SSH?
Я также наткнулся на решение redsocks для этого http://darkk.net.ru/redsocks/
По существу, после запуска ваших ssh-туннелей и настройки redsocks для подключения к В эти туннели вы можете добавить iptables:
# Create new chain
iptables -t nat -N REDSOCKS
# Do not route the following through redsocks
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
#exclude your ssh tunnels from being routed through redsocks...and themselves
iptables -t nat -I REDSOCKS -d tunnel_address1 -j RETURN
iptables -t nat -I REDSOCKS -d tunnel_address2 -j RETURN
#redirect set of addresses to one socks proxy running on port 30000
iptables -t nat -A REDSOCKS -p tcp -d 1.2.3.4 -j REDIRECT --to-ports 30000
#redirect another set of addresses to a different proxy
iptables -t nat -A REDSOCKS -p tcp -d 4.3.2.1 -j REDIRECT --to-ports 30001
#connect output to redsocks chain
iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
Кажется, это работает. Я тоже попробую решение sshuttle, так как оно кажется немного более простым.