私は現在、Linux(より具体的にはArchlinux)を使用してホームネットワーク用のルーターを設定しようとしています。私が使っている組み込みボードにはwan0
、というLANインターフェース3つとWi lan0
- lan1
Fiカード2つがあります。私は2つの別々のネットワークをしたいと思います。一つはゲスト用で、もう一つは私と私の家族用です。私の現在の設定は次のとおりです。wifi0
wifi1
+-------+
| wifi0 +----------------+
+-------+ +----+---+
| brg0 |
+-------+ +----+---+
| eth0 +----------------+
+-------+
+-------+
| wifi1 +----------------+
+-------+ +----+---+
| brg1 |
+-------+ +----+---+
| eth1 +----------------+
+-------+
lan0
私はIPアドレスを含み、wifi0
名前を含むブリッジbrd0
と192.168.10.1/24
IPアドレスを含む名前付きブリッジを構成しました。 On で dnsmasq は dhcpd モードで実行され、その範囲と範囲のクライアントに IP アドレスを伝播します。このネットワークは私のゲストネットワークであり、ホームネットワークです。lan1
wifi1
brd1
192.168.20.1/24
brd0
brd1
192.168.10.50-125
brd0
192.168.20.50-125
brd1
192.168.20.1/24
192.168.10.1/24
これまではこの設定が機能します。ところで一つ驚きました。ただし、ゲストネットワークとホームネットワークは2つの異なるサブネットにあるため、2つの間のトラフィックも別々です。ただし、ゲストネットワークに接続すると、固定ルータを設定または転送することなく、ホームネットワークのサービスとコンピュータにアクセスできます。 (逆に)。私はこれがLinuxでブリッジデバイスがどのように機能するかと関係があると思います。
私の質問は、2つのネットワークを互いに分離するようにルータをどのように設定しますか?トラフィックフィルタリングルールを使用する必要がありますか?エーテルを使ってこれを達成できますか?それとも、自分の設定が何らかの方法で破損しているため、あるネットワークから別のネットワークにサービスを提供できないのですか?
答え1
あなたのインターフェース名が画像とテキストの間に一致しないので、テキストを参照として使用します。
これルーターbrd0
IPを持つすべてのインターフェイス(ホーム)、brd1
(ゲスト)、およびwan0
(画像に追加するのを忘れた)間をルータが期待どおりにルーティングします。
brd0
wan0
後でルーティングする必要があるため、単にルーティングを無効にする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.1
FORWARD
INPUT
注2:この回答はブリッジであるという事実を扱いませんbrd0
。brd1
ルーティングに関するすべてです。