將封包的目標 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.1server2 - 172.17.0.2。我需要存取來自 的JMX連接埠 ( 7199) 。由於我在 上禁用了遠端 JMX ,因此我無法透過 SSH 本地轉送存取它(需要使用from存取連接埠)。所以我創建了 SSHocks 代理並配置它server1server2server1server27199localhostserver2紅襪隊工具。運作良好。

# 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 連接埠(7199server1。 Redsocks 將封包正確路由到server1viaocks 代理程式。 

我還有另一個要求。當帶有 IP 位址service1(例如172.17.0.1:7199)的封包到來時,我需要將它們重定向到 localhost(127.0.0.1:7199)。例如,如果我連接172.17.0.1:7199from service2,我需要將其重定向到,127.0.0.1:7199以便service1透過襪子代理存取 JMX 連接埠。通常可以使用下列 iptables規則之一來完成 IP 位址重定向。由於存在其他iptables規則(與紅襪相關),因此它不起作用。

# 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 位址重新導向?

相關內容