Linux 브리지에 대한 내 정신 모델이 잘못되었습니다.
저는 항상 브리지를 단순한 비관리형 스위치와 유사하다고 생각했습니다. 이더넷 케이블을 연결하고 해당 포트에서 통신하는 MAC 주소를 기반으로 한 포트에서 다른 포트로 데이터를 복사하는 것입니다. 특히: 스위치 자체아니요IP 주소가 있습니다.
그래서 나는 간단히 할 수 있다고 생각했습니다.
brctl addbr mybr
brctl addif mybr eth0
eth0에는 IP 주소가 있습니다.
하지만 작동시킬 수는 없습니다. eth0과 관련된 모든 IP 주소는 무시되는 것 같습니다.
대신에 나는 이렇게 할 수 있습니다:
default_interface=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')
dif=$default_interface
gw=$(ip -4 route ls | grep default | grep -Po '(?<=via )(\S+)')
dif_ip=$(ip -4 route ls | grep default | grep -Po '(?<=src )(\S+)')
echo Add bridge
sudo brctl addbr mybr
# $dif must be up, but with no ip addr
sudo ip addr flush dev $dif
sudo brctl addif mybr $dif
sudo ifconfig mybr $dif_ip
sudo route add -net 0.0.0.0 gw $gw
이렇게 하면 IP 주소와 경로가 eth0에서 브리지로 이동됩니다.
알겠어요저것나는 단순히 할 수 없습니다: brctl addif eth0
내가 이해하지 못하는 것은왜.