如何将端口转发到主机名和端口。我正在看这篇文章:Iptables 将所有流量转发到指定端口,转发到另一台设备看看如何将端口转换为 IP,但如果我需要将端口转换为主机名怎么办?尝试将主机作为目的地,但它会在 iptables 中引发错误
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination ehb-us-redis-001.ehb-usredis.u1.cache.com:6379
iptables v1.4.21: Bad IP address "ehb"
Try `iptables -h' or 'iptables --help' for more information.
答案1
你不能。语法在iptables-扩展手册页为
--to-destination [ipaddr[-ipaddr]][:port[-port]]
尽管iptables
-s
-d
语法允许使用主机名,但address[/mask]
不建议这样做,因为这可能会导致安全问题。由于--to-destination
采用 IP 地址范围(用于简单的循环负载平衡),地址语法将无关紧要。
在规则提交给内核之前,主机名只会解析一次。请注意,使用远程查询(如 DNS)指定要解析的任何名称都是非常糟糕的主意。
此外,Netfilter 内核模块不处理主机名;如果您认为这可以解决更改 IP 地址的一些问题,那就错了。
如果你确实需要使用主机名,反向代理会更加适用。