Linux 伺服器作為非託管交換機
我有一個小型 Ubuntu x64 伺服器,它為我的家庭網路提供 dhcp、命名、文件和此類服務。它只需連接到旁邊的非託管 SOHO 交換機即可工作。但是,它在 PCIe 插槽中有未使用的 4xGbE i350 NIC 卡,我有使用這個 NIC 代替目前交換機的想法。如果它也像目前的專用設備一樣是普通的非託管交換機,它可能不會有任何優勢,但我想學習一些東西(我以後可能會將它變成託管交換機,也許實現一些 IPS/IDS 和其他東西)。我多麼驚訝地發現我不知道怎麼做。我當然做了我的搜尋,但這讓我更加困惑。首先,為什麼所有的howtos和articles都配置網橋來實現切換?對於非託管交換機,所有埠都是平等的,沒有 IP,其中一個通向網關。
使用橋接驅動程序。
網橋是第 2 層交換機的軟體實現,其中添加到網橋中的每個介面都是一個交換機埠。
假設您在橋接器中有 4 個 i350 埠並
br0
插入了另外兩台 PC:[ Remote PC A - MAC aa:aa:aa:aa:aa ] ---- [ i350 #1 ] ---- .------------. [ i350 #2 ] ---- | Linux PC | [ i350 #3 ] ---- | bridge br0 | [ Remote PC B - MAC bb:bb:bb:bb:bb ] ---- [ i350 #4 ] ---- '------------'
Remote PC A 嘗試訪問 Remote PC B。
ff
PC A 將使用自己的源 MAC (all )向廣播目標 MAC 地址 (all ) 發送 ARPaa
。網橋將收到該 ARP 請求並獲悉 MAC
aa
已關閉 bridgeporti350 #1
。然後,網橋將廣播轉發到所有其他 i350 埠,因為當交換機接收到廣播數據包時,這是正確的行為。
遠端 PC B 收到 ARP,並使用 PC A 的目標 MAC (all
aa
) 和它自己的源 MAC (allbb
)生成回复給 PC A。網橋將收到該 ARP 回复並獲悉 MAC
bb
已關閉 bridgeporti350 #4
。網橋看到目標 MAC 是
aa
,並且網橋知道 MACaa
在埠可用i350 #1
,因此將幀發送到該 NIC。您可以將 IP 地址添加到網橋並像正常網路介面一樣使用它,使用它進行路由,使用它進行 NAT 等,但您不必這樣做。
即使
net.ipv4.ip_forward=0
設置了核心可調,也會發生上述情況,因為網橋驅動程序沒有執行 IP 轉發或 IP 路由或 IP NAT,它正在執行第 2 層數據包交換,就像任何其他非託管第 2 層交換機一樣。如果要將網橋連接到更大的網路,也可以在網橋上執行生成樹。
你說你使用的是 Ubuntu。以下應該適用於使用 NetworkManager 的 Ubuntu 20.04:
/etc/NetworkManager/system-connections/br0.nmconnection [connection] id=br0 type=bridge interface-name=br0 permissions= [bridge] stp=false [ipv4] dns-search= ignore-auto-dns=true ignore-auto-routes=true method=disabled never-default=true [ipv6] addr-gen-mode=stable-privacy dns-search= ignore-auto-dns=true ignore-auto-routes=true method=ignore never-default=true [proxy]
對每個名為 的 i350 重複此文件
netX
,使用每個 NIC 的正確 MAC 地址:/etc/NetworkManager/system-connections/netX.nmconnection [connection] id=netX type=ethernet interface-name=netX master=br0 metered=2 permissions= slave-type=bridge [ethernet] mac-address=xx:xx:xx:xx:xx:xx mac-address-blacklist= [bridge-port]