iptablesを設定してローカルネットワークのデフォルトゲートウェイを設定する

iptablesを設定してローカルネットワークのデフォルトゲートウェイを設定する

私は IP 192.168.1.1 の openwrt ルーターを持っています。私がやりたいことは、LAN にプロキシ サーバー (192.168.1.249) を設定し、2 つのデバイス (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

テストの結果、2 つのデバイスのすべての WAN 通信について、プロキシ サーバーがそれらを傍受して転送できることがわかりました。しかし、これら2つのデバイスは相互に通信しており、これらのLAN通信はプロキシサーバーに転送されていないようです。理由は何ですか? これらのトラフィックをプロキシ サーバーに転送するにはどうすればよいですか?

テスト: 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同じ L2 ブロードキャスト ドメインにあり、同じスイッチに接続されています。

同じ IP サブネットにあるデバイスは、レイヤー 2 の「接続」を介して直接通信し、レイヤー 3 のルーティングは行われません。

IPTables は、異なるサブネット間でルーティングされたパケットに対してファイアウォールを実行するメカニズムです。同じサブネット ホストが相互に送信するトラフィックは認識されません。

2 つのホスト間にファイアウォールをインストールする場合は、いくつかのオプションがあります。

  1. ホストを異なるサブネット (たとえば、192.168.1.0/24192.168.2.0/24) に移動し、ルーターが 2 つのサブネット間をルーティングするようにします。
  2. 2 つの異なるイーサネット セグメントをインストールし、ルーターをセグメント間のブリッジとして構成します。次に、2 つのイーサネット セグメント間のパケットをフィルターするように IPTables を構成できます。

関連情報