
内部ネットワーク経由で 2 台のルーターに接続されたコンピューターがあります。両方のルーターでポート 80 をコンピューターに転送しました。
RouterA:80 -> 10.0.0.10:80 は動作します。RouterB:80 -> 192.168.1.10:80 は動作します。
したがって、ルーターのポート転送設定は正しいです。
しかし、両方のネットワークに接続すると、ルータ A のポート転送のみが機能します。ルータ B のポート転送を機能させるにはどうすればよいですか? 私のコンピュータのネットワーク構成を確認してください。
network:
ethernets:
enp7s0:
addresses:
- 10.0.0.10/24
gateway4: 10.0.0.1
nameservers:
addresses:
- 10.0.0.1
enp6s0:
addresses:
- 192.168.1.10/24
gateway4: 192.168.1.1
nameservers: {}
version: 2
enp6s0
のゲートウェイを使用する必要はありませんが、ポート転送には必要なようです。
@raj のおかげでネットワーク構成が更新されました。
注: これはまさに私が尋ねたことではありませんが、ルーターにアクセスする IP 範囲が異なる場合は機能します。幸い、私の場合はそうでした。
enp7s0:
addresses:
- 10.0.0.10/24
routes:
- to: 0.0.0.0/0 #default route
via: 10.0.0.1
metric: 100
nameservers:
addresses:
- 10.0.0.1
enp6s0:
addresses:
- 192.168.1.10/24
routes:
- to: A.B.C.D/24 # IP range of network that would access Router B
via: 192.168.1.1
metric: 10
nameservers: {}
答え1
通常、2 つのデフォルト ゲートウェイが定義されていると、ネットワークはうまく機能しません。コンピューターはデフォルトで 1 つのゲートウェイのみ (この場合はおそらく 10.0.0.1) を使用し、最初のゲートウェイに到達できない場合にのみ 2 番目のゲートウェイを使用します。
ルータBのポート転送はおそらくは動作しています。つまり、RouterB:80 に送信されたパケットは、おそらくマシンのインターフェイス 192.168.1.10 に到達します。ただし、応答パケットは常にゲートウェイ 10.0.0.1 に送信され、おそらく宛先に戻りません (これは、一般に問題のある「非対称ルーティング」と呼ばれます)。
同じ範囲の IP アドレスから RouterA:80 と RouterB:80 に接続する予定の場合、問題の簡単な解決策は見つかりません。インターフェイス enp6s0 経由で受信したパケットへの応答が常に 192.168.1.1 経由で送信されるように iptables を微調整することは可能かもしれませんが、その方法がわかりません (そもそも可能かどうかもわかりません)。
IP アドレスが異なる場合は、192.168.1.1 をデフォルト ゲートウェイとして定義するのではなく、192.168.1.1 経由で特定のネットワークへのルートをルーティング テーブルに追加する必要があります。これはデフォルト ゲートウェイよりも優先されるため、指定されたネットワークへのパケットは 10.0.0.1 ではなく 192.168.1.1 経由で送信されます。