使用 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

我想使用是否可以轉送針對網域名稱而不是像 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

請注意,前面的命令應該要轉發到不同的機器。

答案1

不,這是不可能的。封包從來不會針對 TCP/IP 等級的網域。

如果您需要將請求重新導向到另一個主機/端口,您將需要使用某種負載平衡器(例如帶有 ProxyPass 的 apache)。

答案2

不,你不能做那樣的事情。 netfilter 規則中不允許使用 DNS 名稱。它們僅適用於 TCP/IP 和 ICMP 等級。

相關內容