使用iptables将特定域(TLD)的数据包转发到networking中的某台机器

我可以使用以下命令进行端口转发

iptables -t nat -A PREROUTING -p tcp -d XXX.XXX.XXX.XXX --dport 80 -j DNAT --to 192.168.161.31:80 iptables -t nat -A POSTROUTING -d 192.168.161.31 -j MASQUERADE 

我想使用,如果有可能转发数据包针对一个域名,而不是像XXX.XXX.XXX.XXX IP地址。

比如说,能不能做一些像下面这样的工作? 我的行不通

 iptables -t nat -A PREROUTING -p tcp -d XXX.XXX.XXX.XXX --dport 80 -j DNAT --to 192.168.161.31:80 iptables -t nat -A PREROUTING -p tcp -d www.example.com --dport 80 -j DNAT --to 192.168.161.32:80 

请注意,前面的命令应该转发到不同的机器。

不,这是不可能的。 数据包永远不会针对TCP / IP级别的域名。

如果需要将请求redirect到另一个主机/端口,则需要使用某种负载均衡器(例如使用ProxyPass的apache)。

不,你不能这样做。 netfilter规则中不允许DNS名称。 它们只适用于TCP / IP和ICMP级别。