Networking

使用 iptables 將所有流量重定向到本地網路伺服器

  • June 26, 2016

我正在嘗試使用 iptables 將我的 wifi 路由器上的所有流量重定向到本地網路伺服器。我不確定我的命令是否正確,並且我想從規則中排除路由器 IP(172.16.0.1),以防止自己鎖定自己無法訪問路由器。

到目前為止我想出了什麼:

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 172.16.0.2:80
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 172.16.0.2:80

我在上面進行了測試,這導致我無法再次訪問路由器並且重定向不起作用。我做錯了什麼,如何排除 172.16.0.1 被重定向到 172.16.0.2?

設置:172.16.0.2 是網路伺服器的 IP 172.16.0.1 是我的路由器(dd-wrt)沒有網際網路連接。

我正在努力實現的範例:

  • 使用者連接到 wifi 熱點,嘗試訪問 www.siteA.com,被重定向到 172.16.0.2 (/index.html)
  • 使用者連接到 wifi 熱點,嘗試訪問 www.siteB.com,被重定向到 172.16.0.2 (/index.html)
  • 使用者嘗試訪問 172.16.0.1 並且沒有方向發生

您只需要這條規則:

iptables -t nat -I PREROUTING --src 0/0 --dst 172.16.0.2 

這會將規則插入到 nat 表 (-t nat) 的 PREROUTING 鏈 (?=-I) 中,即:

目標地址為 172.16.0.2 (–dst 172.16.0.2) 的任何傳入 (-src 0/0) 數據包。

要記住的是:重定向傳入流量意味著將規則插入到 nat 表的 PREROUTING 鏈中。重定向只針對指定的介面進行。更多在 man iptables 中,搜尋 REDIRECT 關鍵字。

--append PREROUTING  --source 172.16.0.1 --jump RETURN

RETURN 表示停止遍歷此鏈並在上一個(呼叫)鏈中的下一條規則處恢復。如果到達內置鏈的末端或匹配帶有目標 RETURN 的內置鏈中的規則,則鏈策略指定的目標將決定數據包的命運。

引用自:https://unix.stackexchange.com/questions/258457