Ниже приведено требование
Сначала измените IP-адрес назначения локально сгенерированных запросов/пакетов на
localhost
. Например172.17.0.1:7199
->
127.0.0.1:7199
Затем перенаправьте этот запрос/пакет на локальный порт прокси-сервера (например,
socks-proxy
порт/redsocks
12345
порт)
Как это сделать с помощью iptables
любого другого инструмента?
Ниже приведены более подробные объяснения.
У меня есть два сервера server1 - 172.17.0.1
, server2 - 172.17.0.2
. Мне нужно получить доступ к JMX
порту ( 7199
) на server1
из server2
. Так как я отключил удаленный JMX на server1
, я не могу получить к нему доступ server2
через локальную переадресацию SSH (нужен доступ к 7199
порту с localhost
из server2
). Поэтому я создал SSH socks proxy и настроил его с помощьюКрасные носкиинструмент. Работает отлично.
# run socks proxy from service2
ssh -v -N -D 9999 [email protected]
# configure socks proxy with Redsocks in service2
redsocks {
// redsocks listening port
local_ip = 127.0.0.1;
local_port = 12345;
// socks proxy
ip = 127.0.0.1;
port = 9999;
type = socks5;
}
# configure iptable rules to route the packets to Redsocks in service2
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp --dport 7199 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner <user id> -j REDSOCKS
Теперь, если я подключусь к 127.0.0.1:7199
from service2
(например telnet localhost 7199
), он подключится к порту JMX( 7199
) server1
. Redsocks правильно направляет пакеты на server1
proxy через socks.
У меня есть еще одно требование. При поступлении пакетов с IP-адресом service1
(например, 172.17.0.1:7199
), мне нужно перенаправить их на localhost( 127.0.0.1:7199
). Например, если я подключаюсь с 172.17.0.1:7199
, service2
мне нужно перенаправить его на 127.0.0.1:7199
, чтобы получить доступ к порту JMX service1
через прокси-сервер socks. Обычно перенаправление IP-адреса можно выполнить с помощью одного из следующих iptables
правил. Поскольку существуют другие iptables
правила (связанные с Redsocks), это не работает.
# redirect with host
iptables -t nat -A OUTPUT -p tcp -d 172.17.0.1 -j DNAT --to-destination 127.0.0.1
# redirect with host and port
iptables -t nat -A OUTPUT -p tcp -d 172.17.0.1 --dport 7199 -j DNAT --to-destination 127.0.0.1:7199
localhost
Как можно осуществить перенаправление IP-адреса в этом сценарии?