%20%E8%BD%89%E9%80%81%E5%88%B0%E7%B6%B2%E8%B7%AF%E4%B8%AD%E7%9A%84%E7%89%B9%E5%AE%9A%E6%A9%9F%E5%99%A8.png)
我可以使用以下命令進行連接埠轉送:
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 等級。