設定 iptables 設定本地網路的預設網關

設定 iptables 設定本地網路的預設網關

我有一個ip 192.168.1.1的openwrt路由器。我想要做的是在區域網路中設定一個代理伺服器(192.168.1.249),並攔截來自兩個裝置(192.168.1.244、192.168.1.131)的所有通訊。我使用的方法是將代理伺服器設定為預設網關,並且我在我的openwrt路由器上配置了以下內容。

iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp -s 192.168.1.131
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp -s 192.168.1.244
# Set default gateway as the proxy server in table 2
ip route add default via 192.168.1.249 table 2
# Forward traffic with mark 3 to table 2
ip rule add fwmark 3 table 2

經過我的測試,兩台設備的所有WAN通信,代理伺服器都能攔截並轉發,效果很好。但是,我發現這兩個設備也相互通信,這些區域網路通訊似乎沒有轉發到代理伺服器。是什麼原因?如何將這些流量轉送到代理伺服器?

測試:為了弄清楚配置iptables是否有用,我新增了一條規則進行測試:

iptables -t mangle -A PREROUTING -j DROP -s 192.168.1.131

在我看來,如果這個規則有效,那麼 ip 244 的設備將不會收到來自 ip 131 設備的任何流量,這證明 iptables 可以用於 LAN 通訊。但是,我使用 131 設備將 tcp 流量傳送到 244 設備,而且它有效。我懷疑配置 iptables 無法幫助我將這些 LAN 流量轉送到我的代理伺服器。我對嗎?

答案1

我假設你的IP子網路是192.168.1.0/24,這表示所有以 開頭的IP位址192.168.1都在同一個二層廣播網域中,也就是連接到同一個交換器。

位於同一 IP 子網路中的設備透過第 2 層「連接」直接相互通信,不會發生第 3 層路由。

IPTables 是一種對不同子網路之間路由封包執行防火牆的機制。它看不到相同子網路主機相互發送的任何流量。

如果您想在兩台主機之間安裝防火牆,有以下幾個選項:

  1. 將主機移至不同的子網路(例如192.168.1.0/24192.168.2.0/24),並在兩個子網路之間建立路由器路由。
  2. 安裝兩個不同的乙太網路網段,並將路由器配置為網段之間的橋樑。然後可以設定 IPTables 來過濾兩個乙太網路段之間的資料包。

相關內容