Linux( )에서 브리지 인터페이스를 만들고 br0
여기에 일부 인터페이스( eth0
, tap0
등)를 추가한다고 가정해 보겠습니다. 제가 이해한 바에 따르면 이 인터페이스는 제가 추가하는 모든 인터페이스/포트가 포함된 가상 스위치처럼 작동합니다.
해당 인터페이스에 MAC 및 IP 주소를 할당한다는 것은 무엇을 의미합니까? 인터페이스가 다른 포트가 호스트 시스템에 액세스할 수 있도록 하는 스위치/브리지의 추가 포트 역할을 합니까?
브리지에 IP 주소를 할당하는 방법에 대해 설명하는 일부 페이지를 본 적이 있습니다. MAC 할당은 묵시적입니까(또는 자동입니까)?
답변1
브리지는 이더넷 장치이기 때문에 MAC 주소가 필요합니다. Linux 브리지는 스패닝 트리 프로토콜 프레임과 같은 것을 시작할 수 있으며 이와 같은 트래픽에는 원본 MAC 주소가 필요합니다.
브리지는 그렇지 않습니다.필요하다IP 주소. 하나도 갖지 못하는 상황이 많이 있습니다. 그러나 많은 경우에 당신은5월다음과 같은 것이 있습니다.
브리지가 컨테이너 그룹이나 가상 머신(또는 물리적 인터페이스) 그룹에 대한 기본 게이트웨이 역할을 하는 경우. 이 경우 IP 주소가 필요합니다(라우팅이 IP 계층에서 발생하기 때문).
"기본" NIC가 브리지의 구성원인 경우 브리지는 외부 세계에 대한 연결입니다. 이 경우 IP 주소를 (예를 들어) 에 할당하는 대신
eth0
브리지 장치에 할당합니다.
다리라면~ 아니다IP 라우팅에 필요하면 IP 주소가 필요하지 않습니다. 이러한 상황의 예는 다음과 같습니다.
- 외부 연결이 없거나 브리지 이외의 장치를 통해 제공되는 외부 연결을 사용하여 장치의 개인 네트워크를 생성하는 데 브리지를 사용하는 경우.
답변2
다른 네트워킹 장치와 함께 나열된 브리지 장치는 가상 브리지를 나타내지 않으며 브리지에 연결된 가상 NIC를 나타냅니다. 물리적 네트워킹 장치와 연결된 물리적 브리지가 있는 경우 네트워킹 장치에도 물리적 브리지가 표시되지 않습니다. 하지만 브리지에 연결된 NIC는 볼 수 있습니다. 물론 자체 MAC 주소는 다음과 같습니다. 다른 네트워크 장치.
브리지 장치(실제로는 가상 브리지에 연결된 가상 NIC)에 IP 주소를 할당하면 호스트 장치가 브리지와 브리지에 연결된 모든 장치에 의해 생성된 서브넷으로 패킷을 라우팅할 수 있습니다. 정돈된!
및 명령 iproute2
과 같은 네트워킹 장치 도구를 사용하면 브리지에 연결된 가상 NIC를 볼 수 있지만 프로그램을 사용하면 가상 브리지 자체를 볼 수도 있습니다 . 이 명령은 모든 브리지와 연결된 인터페이스를 나열합니다. 다음은 Linux 브리지 및 tuntaps를 사용 하는 예입니다 .ip link
ip addr
brctl
brctl show
iproute
brctl
# ip link add br0 type bridge
# ip tuntap add dev tap0 mode tap
# ip tuntap add dev tap1 mode tap
# ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev br0
# ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev tap0
# ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev tap1
# brctl addif br0 tap0
# brctl addif br0 tap1
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.2e22e593fe8c no tap0
tap1
# ip addr show to 10.0.0.0/24
11: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
inet 10.0.0.1/24 brd 10.0.0.255 scope global br0
valid_lft forever preferred_lft forever
12: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
inet 10.0.0.2/24 brd 10.0.0.255 scope global tap0
valid_lft forever preferred_lft forever
13: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
inet 10.0.0.3/24 brd 10.0.0.255 scope global tap1
valid_lft forever preferred_lft forever
출력의 "인터페이스" 아래에 나열된 내용은 다음 brctl show
과 같습니다.다른br0
브리지 생성 시 자동으로 추가된 인터페이스 외에 브리지에 연결된 인터페이스도 있습니다 . (내 생각에 Linux는 연결된 장치가 없는 가상 브리지 생성을 허용하지 않으며 장치가 없는 브리지는 자동으로 파괴됩니다.) 참고로 저는 커널에서 이 문제를 조사한 적도 없고 네트워킹 전문가도 아닙니다. Linux에서 다소 혼란스러운 가상 브리지 구현을 설득력 있게 설명하는 것 같아서 이 글을 게시했습니다. 나는 가상 브리지 자체에 MAC 주소가 있다고 믿지 않습니다.
답변3
예, 브리지 인터페이스는 추가 포트 역할을 합니다.
후에 man 5 systemd.netdev
:
브리지 장치는 소프트웨어 스위치이며 각 슬레이브 장치와 브리지 자체는 스위치의 포트입니다.
답변4
과 에 나열된 인터페이스는 각각 br0
호스트 를 브리지와 브리지에 연결하는 탭 인터페이스입니다. 이러한 이름 오버로드는 확실히 혼란스러울 수 있습니다.virbr0
ip addr
ip link
br0
virbr0
그래서 무엇입니까 virbr0-nic
?
이것은 원래 질문의 일부가 아니었지만 과거에 혼란스러웠기 때문에 여기에 2센트를 추가하겠습니다. MAC 주소가 브리지에서 자체 MAC 주소로 virbr0-nic
사용되는 더미 인터페이스입니다 . virbr0
이 항상 존재하는 인터페이스는 virbr0
포트가 브리지에 동적으로 추가되거나 제거될 때 의 MAC 주소가 변경되는 것을 방지하기 위해 존재합니다. 호스트는 인터페이스 외부로 트래픽을 보내지 않습니다 virbr0-nic
.
보다https://backreference.org/2010/07/28/linux-bridge-mac-addresses-and-dynamic-ports그리고https://www.redhat.com/archives/libvirt-users/2012-September/msg00038.html설명을 위해.