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

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

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

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

我想看看是否可以转发针对域名而不是 IP 地址(如 XXX.XXX.XXX.XXX)的数据包。

例如,我们可以做如下的事情并让它工作吗?我的不起作用!

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

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

答案1

不,不可能。数据包永远不会以 TCP/IP 层上的域名为目标。

如果您需要将请求重定向到另一个主机/端口,则需要使用某种负载平衡器(例如,带有 ProxyPass 的 apache)。

答案2

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

相关内容