Измените IP-адрес назначения пакета на localhost и перенаправьте его на другой порт.

Измените IP-адрес назначения пакета на localhost и перенаправьте его на другой порт.

Ниже приведено требование

  1. Сначала измените IP-адрес назначения локально сгенерированных запросов/пакетов на localhost. Например172.17.0.1:7199 -> 127.0.0.1:7199 

  2. Затем перенаправьте этот запрос/пакет на локальный порт прокси-сервера (например, 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:7199from service2(например telnet localhost 7199), он подключится к порту JMX( 7199) server1. Redsocks правильно направляет пакеты на server1proxy через 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-адреса в этом сценарии?

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