無法讓主路由器和備用路由器相互連接

無法讓主路由器和備用路由器相互連接

我有兩個網路和路由器(都在 Shibby 的 Advanced Tomato 上),佈局如下:

  1. 備援路由器網路(192.168.1.1/24)
    1. 廣域網路 - Xfinity
    2. LAN - 少量用戶端。重要的是,主網路路由器是該網路上的用戶端。
    3. 網路介面
      1. br0-本地。路由器的 IP 為 192.168.1.1
      2. eth0-Xfinity
      3. eth2 - 無線網路 - 這是備份網路作為無線客戶端連接的網絡
  2. 主路由器網路(192.168.2.1/24)
    1. 廣域網路 - 光纖
    2. LAN - 連接到網狀網路存取點。家裡幾乎所有設備都透過這些網狀網路存取點連接到主網路。特別重要的是我的本機 NAS 和服務主機,例如 Plex、印表機和遊戲桌面。
    3. 負載平衡 - 此路由器是備援網路路由器上的“無線用戶端”,並且具有啟用負載平衡的多 WAN。
    4. 網路介面
      1. br0-本地。路由器的 IP 為 192.168.2.1
      2. eth0 - 光纖
      3. eth2 - 備份網路上的用戶端,IP 為 192.168.1.81

它是如何運作的:只要客戶端在主網上,系統就可以正常運作。他們能夠存取 NAS、印表機等。

問題:

當客戶端位於備份網路上時會出現此問題。備份網路上的用戶端無法存取主網路上的 NAS、印表機等。

我嘗試過的:我嘗試允許備份路由器使其客戶端能夠到達主路由器網路。我發現一些文章提到了這樣做並執行了以下步驟:

  1. 我嘗試將以下 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
  1. 在備份網路和主網路上啟用 ip 封包轉送 透過執行echo 1 > /proc/sys/net/ipv4/ip_forward

  2. 新增ip路由 ip route add 192.168.2.0/24 via 192.168.1.81

問題

不幸的是,這不起作用。當我嘗試從備用網路路由器 ping 192.168.2.1 時,收到錯誤 - 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 以太坊2→
    192.168.2.0/24 192.168.1.0/24 →eth2 br0→

    您可以僅使用-sand-d或使用介面等新增規則。匹配的通過任何數據包。

  • 10.9.8.0/24 網路似乎沒有涉及任何地方。

  • INPUT 規則是不相關的,因為您的封包​​都沒有「輸入」到路由器 – 只有當您 ping 路由器的封包時才會發生這種情況自己的地址。

    例如,如果您要對主路由器執行 ping 操作,則對於備份路由器來說,這將是“轉發”,對於主路由器來說,這將是“輸入”。但是,如果您從一個客戶端 ping 另一個客戶端,則對於所有涉及的路由器,這將被分類為「轉發」(而僅對於客戶端本身而言,將被分類為「輸入」)。

雖然這是必要的,但通常應該是在新增路由之後而不是之前執行的步驟。請始終記住,IPtables 僅控制資料包是否允許向特定方向轉發,但不控制在哪裡它們應該被轉發——路由表首先決定這一點,然後您可以據此自訂 iptables FORWARD 規則。

在備份網路和主網路上啟用 ip 封包轉送 透過執行 echo 1 > /proc/sys/net/ipv4/ip_forward

它們是路由器——Tomato 韌體在出廠時就已經啟用了封包轉送功能,因為這基本上就是路由器的用途,也是您現在存取網路的方式。

當我嘗試從備份網路路由器 ping 192.168.2.1 時,收到錯誤 - 無法從 192.168.1.1 icmp_seq=1 重定向主機(新下一跳 192.168.1.81)執行 ping 操作。

這不是一個錯誤。這是一條可選訊息,其中備份路由器指示有更直接的路徑可用(繞過路由器);你通常會看到它另外對於通常的反應。

實際的錯誤是沒有回复,這很可能是由“備份”路由器的或者「主」路由器的防火牆規則會阻止該方向的封包。

使用 tcpdump ( tcpdump -n -i ... "icmp") 檢查封包到達和退出的位置:

  • 他們是否達到了主要的路由器的eth2介面?
    • 如果不這樣做,則備用路由器不會轉送它們(iptables 或路由表可能是錯誤的)。
    • 如果到達:它們是否也到達主路由器的 br0 介面?
      • 如果不這樣做,則主路由器不會轉送它們(它已經有到達目的地的本地路由,這使得它的 iptables 規則不允許這樣做)。
      • 如果他們確實到達 br0:客戶端是否嘗試回應?
        • 如果沒有,則客戶端自己的防火牆可能會阻止它。

相關內容