如何在 iptables 中将多个连接静态 NAT 到单个 IP 地址

如何在 iptables 中将多个连接静态 NAT 到单个 IP 地址

我以前一直使用 ipfilter。下面是我使用的内容:

map-block tun0 192.168.1.0/24 -> 20.20.20.0/24

一些远程应用程序要求多个连接都来自同一个 IP 地址。因此,我想告诉 iptables 在 IP 地址之间建立静态映射,并为主机使用相同的 IP 地址(即使用一些魔法来选择端口)。我该怎么做?

答案1

使用 iptables SNAT 目标并persistent选择保持为特定客户端选择的 IP 不变:

iptables --table nat --append POSTROUTING --out-interface tun0 --source 192.168.1.0/24 --jump SNAT --to-source 20.20.20.0/24 --persistent

答案2

你可以使用 netfilter 做类似的事情:

iptables -t nat -A POSTROUTING -o tun0 -s 192.168.1.0/24 -j SNAT --to 20.20.20.0/24

您可以阅读iptablesNAT 指南这里

答案3

参见 iptables -j SNAT --to-source [ipaddr[-ipaddr]] --persistent

我不知道这“有多静态”。也许映射在重启时丢失了。如果这是个问题,那么您可以通过每个地址的明确规则配置静态映射。

IIRC 有一个工具(不幸的是我记不起名字了)可以将源地址或目标地址映射到链,这样你就不需要包含 254 个条目的链:

iptables ... -s 192.168.1.1 -j ...
iptables ... -s 192.168.1.2 -j ...
iptables ... -s 192.168.1.3 -j ...

相关内容