【问题标题】:iptables with DNAT target to multiple port range translation [closed]具有DNAT目标的iptables到多个端口范围转换[关闭]
【发布时间】:2016-07-25 04:14:51
【问题描述】:

我想使用 iptables 来设置 DNAT 目标。多端口虚拟 服务器是我想要做的目的。但我发现DNAT不能 将多端口映射到目标多端口。例如

iptables -t nat -A PREROUTING -p tcp --dport 1000:2000 -j DNAT --to-destination 192.168.1.100:3000-4000

我认为这条规则应该是 1000 ------> 3000 1001 ------> 3001 ………………………………………………………………………………………………………………………… 2000 ------> 4000

我尝试使用 whireshark 来捕获数据包。不管是原创 数据包是 1000、1001、2000 等等,它们似乎转换为端口 仅限3000。这是连接 iptables 仅将许多端口映射到一个 港口。

有什么建议吗?

谢谢。

【问题讨论】:

标签: port firewall iptables netfilter virtual-server


【解决方案1】:

iptables-extensions' man page 声明内核 2.6.11-rc1 和更高版本不支持指定多个目标端口:

2.6.10 之前的内核中,您可以添加多个 --to-destination 选项。对于这些内核,如果您通过地址范围或多个--to-destination 选项指定多个目标地址,则会在这些地址之间进行简单的循环(循环中一个接一个)负载平衡。后来的内核 (>= 2.6.11-rc1) 不再具有 NAT 到多个范围的能力。

【讨论】:

  • 感谢您的建议。多个目标端口似乎在同一个端口范围内工作,例如 30000:31000 30000:31000。 iptables 可以分配此操作,而无需在“--to-destination”中设置端口范围。回到正题如果我要分配不同的多个目的端口,比如30000:31000---->40000:41000。我应该用自己映射的 iptables 添加 1000 条规则吗?
  • 这可行,但我不确定它的效率如何。您也可以尝试编写自己的 iptables 扩展模块,但这需要一些专业知识...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多