iptables:静态临时端口映射

我在我的Linux服务器上有一个VPN来做IPv4 NAT,例如:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source 1.2.3.4 

不过,我想设置每个内部10.8.0.0/24 IP静态短暂的端口范围,使日志哪个客户端连接更容易,这是可能的iptables?

例如,端口1000-2500将是10.8.0.10和10.8.0.20等使用的临时端口。

我search了Google,但找不到任何东西。

检查MASQUERADE目标而不是SNAT:它支持以下选项:

 --to-ports port[-port] This specifies a range of source ports to use, overriding the default SNAT source port-selection heuristics (see above). This is only valid if the rule also specifies one of the following protocols: tcp, udp, dccp or sctp. 

我从来不使用它,但testing! 但它只会在tcp,udp上工作。 对于其他人,如ICMP,运气不好,没有端口…

我不认为你可以控制哪个端口用于哪个NAT的ip。 但是,如果您在公共空间中有任何额外的IP地址,则可以通过映射您想要跟踪的地址来利用该IP:

 iptables -t nat -A POSTROUTING -s 10.8.0.10/32 -o venet0 -j SNAT --to-source 1.2.3.1 iptables -t nat -A POSTROUTING -s 10.8.0.20/32 -o venet0 -j SNAT --to-source 1.2.3.2 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source 1.2.3.4