为什么这个端口转发不起作用的iptables规则?

vid*_*guy 6 android port-forwarding nat iptables platform

我有一个绑定到localhost:7060. 它使用 ipv6 套接字而不是 ipv4。下面是 netstat 输出。

# netstat -an
Proto Recv-Q Send-Q Local Address          Foreign Address        State
 tcp       0      0 10.200.32.98:1720      0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:4122           0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:4123           0.0.0.0:*              LISTEN
 tcp       0      0 127.0.0.1:4123         127.0.0.1:43051        ESTABLISHED
 tcp       0      0 10.200.32.98:5555      10.200.32.44:53162     ESTABLISHED
tcp6       0      0 :::5060                :::*                   LISTEN
tcp6       0      0 ::ffff:127.0.0.1:7060  :::*                   LISTEN
tcp6       0      0 :::23                  :::*                   LISTEN
tcp6       0      0 ::ffff:10.200.32.98:23 ::ffff:10.200.32.142:43505 ESTABLISHED
tcp6       0      0 ::ffff:127.0.0.1:43051 ::ffff:127.0.0.1:4123  ESTABLISHED
tcp6       0      0 ::ffff:10.200.32.98:23 ::ffff:10.200.32.44:53195 ESTABLISHED
udp6       0      0 :::5060                :::*                   CLOSE
# 
Run Code Online (Sandbox Code Playgroud)

我想设置一个端口转发规则,该规则接受端口 24(在所有接口环回以及 eth0 上)上的连接并将数据转发到localhost:7060.

这就是我设置 iptables 规则的方式:

iptables -t nat -A PREROUTING -p tcp --dport 24 -j DNAT --to 127.0.0.1:7060**

它不工作。当我从不同的盒子 telnet 时,我看到以下内容

$telnet 10.200.32.98 24
正在尝试 10.200.32.98...

如果我更改要绑定的服务器*:7060并设置以下规则,它似乎工作正常。

iptables -t nat -A PREROUTING -p tcp --dport 24 -j REDIRECT --to-port 7060

但这将使我的服务器在我不喜欢的 WAN 接口上可用。

我觉得这与 ipv6 套接字(netstat 输出中的 tcp6 行)有关。这整个过程是在带有自定义构建的 Android 平台映像的 Android 设备上完成的。

我如何让这个工作?

xOn*_*eca -1

我认为你必须使用--sport 24而不是--dport 24,因为流量是传入的,而不是传出的。虽然,正如加勒特所说,也许你必须使用ip6tables......