独自のネットワーク経由で 2 台のルーターからポート転送を機能させるにはどうすればよいですか?

独自のネットワーク経由で 2 台のルーターからポート転送を機能させるにはどうすればよいですか?

内部ネットワーク経由で 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 経由で送信されます。

関連情報