Networking
使用 iptables 將所有流量重定向到本地網路伺服器
我正在嘗試使用 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 的內置鏈中的規則,則鏈策略指定的目標將決定數據包的命運。