Linux

一台電腦上的網關和路由器

  • December 31, 2009

我們一直在嘗試設置一個 Linux/BSD/etc 機器,它既可以用作 Internet 網關,也可以用作路由器。我不知道如何很好地表達我們的情況,所以請原諒我……

目前,我們正在使用 Vyatta 和以下網路介面(帶有遮罩 IP 地址):

  • eth0-> xxx178/30 - 廣域網(上游路由器:xxx177)

    • vlan100-> 附加到eth0
  • br100-> yyy1 - 橋接 eth0.vlan100 和 eth1

  • eth1-> yyyy/24 - 與 WAN 橋接(xxx178 是該子網的上游路由器)

  • eth2-> 10.10.0.1/16 - 專用網路,通過 yyy1 進行 NAT

問題是:當我們將 NAT 規則設置為路由 10.10.0.0/16 流量時,br100沒有任何路由。但是,如果我們將 NAT 規則設置為 route through eth0,流量實際上會路由,但現在它來自 xxx178 地址而不是 yyy1 地址。

我在這裡做錯了什麼?任何想法或建議都會有所幫助。

目前配置(減去一些絨毛):

interfaces {
   bridge br100 {
       address y.y.y.1/24
   }
   ethernet eth0 {
       address x.x.x.178/30
       vif 100 {
           bridge-group {
               bridge br100
           }
       }
   }
   ethernet eth1 {
       bridge-group {
           bridge br100
       }
   }
   ethernet eth2 {
       address 10.10.0.1/16
   }
   loopback lo {
   }
}
services {
   nat {
       rule 1 {
           outbound-interface br100
           source {
               address 10.10.0.0/16
           }
           type masquerade
       }
   }
}
system {
   gateway-address x.x.x.177
}

我們能夠解決這個問題的方法是將 NAT 規則更改為 SNAT 而不是偽裝。

在大多數發行版上,除非將它們設置為路由器,否則它們將預設拒絕轉發 IP 流量的行為。通常,我使用 packetprotector(在華碩家庭路由器上執行的 linux)來完成此類工作。但是您需要檢查 /etc/sysctl.conf 中的設置。

尋找’net.ipv4.ip_forward =’,如果你想轉發流量,這個值應該設置為1(如果不是那麼'0’)。在此處更改文件將使更改在重新啟動後保持不變,並將在網路服務啟動時啟動。

引用自:https://serverfault.com/questions/98423