我以前一直使用 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
您可以阅读iptables
NAT 指南这里。
答案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 ...