如何使兩個路由器透過自己的網路進行連接埠轉送?

如何使兩個路由器透過自己的網路進行連接埠轉送?

我有一台電腦透過內部網路連接到兩個路由器。我已將兩台路由器上的連接埠 80 轉送到我的電腦。

RouterA:80 -> 10.0.0.10:80 有效。 RouterB:80 -> 192.168.1.10:80 有效。

所以路由器的連接埠轉送設定是正確的。

但是,當我連接到兩個網路時,只有 RouterA 的連接埠轉送起作用。如何使RouterB的連接埠轉送工作?請看一下我的電腦網路設定。

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

一般來說,如果定義了兩個預設網關,網路就不能很好地運作。預設情況下,您的電腦僅使用一個網關(在本例中可能為 10.0.0.1),並且僅當第一個網關無法存取時才會使用第二個網關。

所以 RouterB 上的連接埠轉送可能工作正常,也就是說,發送到 RouterB:80 的封包可能會到達您電腦上的介面 192.168.1.10。但回覆封包總是發送到網關 10.0.0.1,並且可能不會返回目的地(這就是所謂的“非對稱路由”,通常很麻煩)。

如果您打算從相同範圍的 IP 位址連接到 RouterA:80 和 RouterB:80,我看不到解決您問題的簡單方法。也許可以以某種方式調整 iptables,以便對透過介面 enp6s0 接收的資料包的回應始終透過 192.168.1.1 發出,但我不知道該怎麼做(如果可能的話)。

如果 IP 位址不同,則不應將 192.168.1.1 定義為預設網關,而應在路由表中新增透過 192.168.1.1 到特定網路的路由。這優先於預設網關,因此發送到指定網路的資料包將透過 192.168.1.1 而不是透過 10.0.0.1 發送。

相關內容