Linux

在 iptables 中使用域 PREROUTING

  • May 12, 2017

我有一個www.example.comipX.X.Y.Y我想將流量從埠 80 轉發到域(www.example.com),我使用了以下 iptable:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination X.X.Y.Y:80

但我沒有得到好的結果,因為X.X.Y.Y內容不等於域(www.example.com)

例如:如果您198.252.206.16使用瀏覽器訪問(serverfault 的 ip),您將看到地址的結果和內容(ip 地址) 不相等www.serverfault.com

我想在上述 iptables 規則中使用域,例如:(--to-destination www.example.com它只是一個範例,我知道它不起作用),我該怎麼做?

有沒有其他方法可以在不使用 iptables 的情況下做到這一點?

謝謝

我認為您需要的是一個 HTTP 代理來重寫請求標頭。IPTables 不解析 HTTP 標頭並替換其中的域。

你應該看看像 Nginx 或 Squid 這樣的東西,它只是理解 HTTP 請求頭並將其重寫到你想要的域中的東西。

IPTables 不知道任何比 TCP 或 UDP 更高的協議。

iptables即使您使用該選項也無法執行此操作,-d因為域名是在 iptables 啟動期間載入的。做你想做的事情的正確方法是使用像 Squid 這樣的代理伺服器。

引用自:https://serverfault.com/questions/535823