
2 つのネットワークとルーター (両方とも Shibby の Advanced Tomato 上) が次のように配置されています。
- バックアップルーターネットワーク (192.168.1.1/24)
- WAN - Xfinity
- LAN - クライアントの数は少ない。重要なのは、メイン ネットワーク ルーターがこのネットワーク上のクライアントであることです。
- ネットワークインターフェース
- br0 - ローカル。ルーターのIPは192.168.1.1です
- eth0 - Xfinity
- eth2 - ワイヤレスネットワーク - これはバックアップネットワークがワイヤレスクライアントとして接続されているネットワークです
- メインルーターネットワーク (192.168.2.1/24)
- WAN - ファイバー
- LAN - メッシュ ネットワーク アクセス ポイントに接続されています。家にあるほぼすべてのデバイスは、これらのメッシュ ネットワーク アクセス ポイントを介してメイン ネットワークに接続されています。特に重要なのは、ローカル NAS と、Plex、プリンター、ゲーム デスクトップなどのサービス ホストです。
- 負荷分散 - このルータはバックアップ ネットワーク ルータ上の「ワイヤレス クライアント」であり、負荷分散が有効になっているマルチ WAN を備えています。
- ネットワークインターフェース
- br0 - ローカル。ルーターのIPは192.168.2.1です
- eth0 - ファイバー
- eth2 - IP 192.168.1.81 のバックアップ ネットワーク上のクライアント
仕組み: クライアントがメイン ネットワーク上にある限り、システムは正常に動作します。クライアントは NAS、プリンターなどにアクセスできます。また、バックアップ ネットワーク上の任意のクライアントにアクセスして ping を実行することもできます。
問題:
この問題は、クライアントがバックアップ ネットワーク上にある場合に発生します。バックアップ ネットワーク上のクライアントは、メイン ネットワーク上の NAS、プリンターなどにアクセスできません。
試したこと: バックアップ ルーターのクライアントがメイン ルーター ネットワークにアクセスできるようにしてみました。これを行う方法について言及している記事をいくつか見つけたので、次の手順を実行しました。
- バックアップネットワークに次のiptables転送を追加してみました
iptables -I INPUT -i br0 -j ACCEPT
iptables -I FORWARD -i eth2 -d 192.168.2.0/24 -j ACCEPT
iptables -I FORWARD -i br0 -d 10.9.8.0/24 -j ACCEPT
バックアップネットワークとメインネットワークの両方でIPパケット転送を有効にするには、次のコマンドを実行します。
echo 1 > /proc/sys/net/ipv4/ip_forward
IPルートを追加
ip route add 192.168.2.0/24 via 192.168.1.81
問題
残念ながら、これは機能しません。バックアップ ネットワーク ルーターから 192.168.2.1 に ping を実行しようとすると、次のエラーが発生しますUnable to ping From 192.168.1.1 icmp_seq=1 Redirect Host (New nexthop 192.168.1.81)
。
おそらく、iptables の部分で間違いを犯しているのでしょう。そこで何をしているのか、完全には理解していません。どなたか助けていただけると、大変助かります。
答え1
バックアップネットワークに次のiptables転送を追加してみました
FORWARD ルールがネットワークの説明と一致していないようです:
バックアップルータのeth2に到着するパケット(つまりメインルータから来るもの)は、192.168.2.0/24をソース、宛先ではありません。同様に、192.168.2.0/24 に送信されたパケットは eth2 から出ますが、入力しません (つまり、これが である場合は で
-d
ある必要があります-o eth2
)。両方向のパケットを視覚化すると、次のようになります。
送信元アドレス 送信先アドレス 入力インターフェース 出力インターフェース 192.168.1.0/24 192.168.2.0/24 →br0 eth2→ 192.168.2.0/24 192.168.1.0/24 →eth2 br0→ -s
とだけ、またはインターフェースなどを使ってルールを追加することができます-d
。ルールが適切に適用されているかどうかを確認するには、iptablesルールリストのパケットカウンタを確認することをお勧めします。一致したあらゆるパケットによって。10.9.8.0/24 ネットワークはどこにも関係していないようです。
INPUTルールは関係ありません。パケットはどれもルーターへの「入力」ではないからです。ルーターのpingを実行している場合にのみ当てはまります。自分の住所。
たとえば、メイン ルータに ping を実行する場合、バックアップ ルータでは「転送」、メイン ルータでは「入力」になります。ただし、あるクライアントから別のクライアントに ping を実行する場合、関係するすべてのルータでは「転送」に分類されます (クライアント自体では「入力」のみ)。
これは必要ですが、通常はルートを追加した後のステップであり、追加前ではありません。IPtablesはパケットが許可された特定の方向に転送されるが、制御はされないどここれらは転送される必要があります。ルーティング テーブルが最初にそれを決定し、次にそれに応じて iptables FORWARD ルールを調整します。
バックアップネットワークとメインネットワークの両方でIPパケット転送を有効にするには、echo 1 > /proc/sys/net/ipv4/ip_forwardを実行します。
これらはルーターです。Tomato ファームウェアでは、工場出荷時にパケット転送がすでに有効になっています。これが基本的にルーターの目的であり、現在インターネットにアクセスしている方法です。
バックアップ ネットワーク ルーターから 192.168.2.1 に ping を実行しようとすると、「192.168.1.1 icmp_seq=1 リダイレクト ホスト (新しいネクストホップ 192.168.1.81) から ping を実行できません」というエラーが表示されます。
これはエラーではありません。これは、バックアップルータがより直接的なパス(ルータをバイパスする)を利用できることを示すオプションのメッセージです。通常は、加えていつもの返答に。
実際のエラーは応答がないことです。これは、おそらく「バックアップ」ルーターのまたは「メイン」ルーターのファイアウォール ルールにより、その方向のパケットがブロックされます。
tcpdump( tcpdump -n -i ... "icmp"
) を使用して、パケットが到着および出力される場所を確認します。
- 彼らは到達するのか主要ルーターの eth2 インターフェース?
- そうでない場合、バックアップ ルーターはパケットを転送していません (iptables またはルーティング テーブルが間違っている可能性があります)。
- そうであれば、メインルーターの br0 インターフェイスにも到達しますか?
- そうでない場合、メイン ルーターはパケットを転送していません (宛先へのローカル ルートがすでに存在するため、iptables ルールでは許可されません)。
- br0 に到達した場合: クライアントは応答を試みますか?
- そうでない場合は、クライアント自身のファイアウォールがブロックしている可能性があります。