Linuxで2つのブリッジを分割する

Linuxで2つのブリッジを分割する

私は現在、Linux(より具体的にはArchlinux)を使用してホームネットワーク用のルーターを設定しようとしています。私が使っている組み込みボードにはwan0、というLANインターフェース3つとWi lan0- lan1Fiカード2つがあります。私は2つの別々のネットワークをしたいと思います。一つはゲスト用で、もう一つは私と私の家族用です。私の現在の設定は次のとおりです。wifi0wifi1

                   +-------+
                   | wifi0 +----------------+
                   +-------+           +----+---+
                                       |  brg0  |
                   +-------+           +----+---+
                   | eth0  +----------------+
                   +-------+


                   +-------+
                   | wifi1 +----------------+
                   +-------+           +----+---+
                                       |  brg1  |
                   +-------+           +----+---+
                   | eth1  +----------------+
                   +-------+

lan0私はIPアドレスを含み、wifi0名前を含むブリッジbrd0192.168.10.1/24IPアドレスを含む名前付きブリッジを構成しました。 On で dnsmasq は dhcpd モードで実行され、その範囲と範囲のクライアントに IP アドレスを伝播します。このネットワークは私のゲストネットワークであり、ホームネットワークです。lan1wifi1brd1192.168.20.1/24brd0brd1192.168.10.50-125brd0192.168.20.50-125brd1192.168.20.1/24192.168.10.1/24

これまではこの設定が機能します。ところで一つ驚きました。ただし、ゲストネットワークとホームネットワークは2つの異なるサブネットにあるため、2つの間のトラフィックも別々です。ただし、ゲストネットワークに接続すると、固定ルータを設定または転送することなく、ホームネットワークのサービスとコンピュータにアクセスできます。 (逆に)。私はこれがLinuxでブリッジデバイスがどのように機能するかと関係があると思います。

私の質問は、2つのネットワークを互いに分離するようにルータをどのように設定しますか?トラフィックフィルタリングルールを使用する必要がありますか?エーテルを使ってこれを達成できますか?それとも、自分の設定が何らかの方法で破損しているため、あるネットワークから別のネットワークにサービスを提供できないのですか?

答え1

あなたのインターフェース名が画像とテキストの間に一致しないので、テキストを参照として使用します。

これルーターbrd0IPを持つすべてのインターフェイス(ホーム)、brd1(ゲスト)、およびwan0(画像に追加するのを忘れた)間をルータが期待どおりにルーティングします。

brd0wan0後でルーティングする必要があるため、単にルーティングを無効にするbrd1ことはできませんwan0。各方向に 1 つずつ、2 つの iptables ルールを使用してFORWARDこのパスを禁止できます。

iptables -A FORWARD -i brd0 -o brd1 -j DROP
iptables -A FORWARD -i brd1 -o brd0 -j DROP

ホームネットワークがゲストネットワークにアクセスできるようにし、その逆の場合は、ステートフルルールを使用してこれを実行できます。

iptables -A FORWARD -i brd1 -o brd0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i brd1 -o brd0 -j DROP

最初のルールは、インターフェイス名を削除することで、今後同様のルールで「分解」することができます。

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

注:あるネットワークのシステムはルーティングされず、これらのルールを通過しないため、他のネットワークに属するルータIP(from、成功など)に対して192.168.20.2まだpingを送信できますが、この問題を解決するのはやや過度の作業です。 (使用正しいルール)チェーンから)。ただコメントとして残してください。ping 192.168.10.1FORWARDINPUT

注2:この回答はブリッジであるという事実を扱いませんbrd0brd1ルーティングに関するすべてです。

関連情報