可以將 Wi-Fi 和乙太網路連接到同一網路嗎?

可以將 Wi-Fi 和乙太網路連接到同一網路嗎?

我正在運行 Arch Linux(在 Raspberry Pi 3 上)並嘗試將乙太網路和 Wi-Fi 連接到同一網路。route向我展示以下內容:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    1024   0        0 eth0
default         gateway         0.0.0.0         UG    1024   0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
gateway         0.0.0.0         255.255.255.255 UH    1024   0        0 eth0
gateway         0.0.0.0         255.255.255.255 UH    1024   0        0 wlan0

ip addr向我展示以下內容:

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether b8:27:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.103/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 85717sec preferred_lft 85717sec
    inet6 fe80::ba27:ebff:fee4:4f60/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether b8:27:YY:YY:YY:YY brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.102/24 brd 192.168.1.255 scope global dynamic wlan0
       valid_lft 85727sec preferred_lft 85727sec
    inet6 fe80::ba27:ebff:feb1:1a35/64 scope link
       valid_lft forever preferred_lft forever

wlan0和介面都eth0能夠從路由器取得 IP 位址。

但事實證明,這些介面中只有一個可以工作。無法 ping 通另一個介面並且無法連線。通常是乙太網路可以工作,但有時是 Wi-Fi。

發生了什麼事?我該怎麼做才能讓這項工作成功?

答案1

正如您所發現的,從路由的角度來看,雖然可能,但在不同介面中擁有來自同一網路的位址並不理想。

路由期望每個介面有一個不同的網絡,並且最終其中一個在路由中將優先於另一個,因為它們重疊。

對於將多個介面連接到同一網路的建議解決方案是將它們聚合在橋接介面中。

橋接介面將「擁有」IP 位址,並且實際的真實介面被分組為 下的虛擬單一實體br0

allow-hotplug eth0
iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual

auto br0
iface br0 inet dhcp
    bridge_ports eth0 wlan0
    

Debian Linux:將網路介面設定為網橋/網路交換機

答案2

這更像是一個附錄,而不是一個完整的解決方案。 [因為我沒有足夠的「聲望點」來發表評論。

您首先必須使兩個介面獨立工作。然後,您也可以對兩個介面之間的傳出連接進行負載平衡,而不是橋接。

https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html

我從這個開始,兩台設備具有由網路管理員配置的預設網路路由:

❯ ip route
default via 192.168.0.1 dev eno1 proto dhcp metric 100 
default via 192.168.0.1 dev wlp4s0 proto dhcp metric 600 
169.254.0.0/16 dev wlp4s0 scope link metric 1000 
192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.246 metric 100 
192.168.0.0/24 dev wlp4s0 proto kernel scope link src 192.168.0.213 metric 600 

然後我使用了負載平衡下所述的命令:

https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html

❯ P1=192.168.0.1
❯ P2=192.168.0.1
❯ IF1=eno1
❯ IF2=wlp4s0
❯ ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \     
            nexthop via $P2 dev $IF2 weight 1

沃拉!我透過這兩個設備建立連線。

❯ ip route                                                                  
default 
    nexthop via 192.168.0.1 dev eno1 weight 1 
    nexthop via 192.168.0.1 dev wlp4s0 weight 1 
default via 192.168.0.1 dev eno1 proto dhcp metric 100 
default via 192.168.0.1 dev wlp4s0 proto dhcp metric 600 
169.254.0.0/16 dev wlp4s0 scope link metric 1000 
192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.246 metric 100 
192.168.0.0/24 dev wlp4s0 proto kernel scope link src 192.168.0.213 metric 600 

如果我遇到連接問題,這可能會使調試變得更加困難;)

而且我還不知道如何在重新啟動後保留配置,尤其是與網路管理器結合使用。

相關內容