Linux
一台電腦上的網關和路由器
我們一直在嘗試設置一個 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 througheth0
,流量實際上會路由,但現在它來自 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’)。在此處更改文件將使更改在重新啟動後保持不變,並將在網路服務啟動時啟動。