
저는 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
답변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
연결 문제가 있으면 디버깅이 더 어려워질 수 있습니다. ;)
그리고 재부팅 후에도 구성을 유지하는 방법, 특히 네트워크 관리자와 함께 사용하는 방법을 아직 모릅니다.