브리지 인터페이스에 MAC 및 IP 주소를 할당하는 이유

브리지 인터페이스에 MAC 및 IP 주소를 할당하는 이유

Linux에서 브리지 인터페이스( )를 만들고 여기에 br0몇 가지 인터페이스( 등)를 추가한다고 eth0가정 해 보겠습니다 . tap0제가 이해한 바에 따르면 인터페이스는 제가 추가하는 모든 인터페이스/포트를 포함하는 가상 스위치와 같습니다.

이 인터페이스에 MAC 및 IP 주소를 할당하는 것은 무엇을 의미합니까? 인터페이스가 스위치/브리지의 추가 포트 역할을 하여 다른 포트가 호스트에 액세스할 수 있도록 합니까?

브리지에 IP 주소 할당을 논의하는 일부 페이지를 본 적이 있습니다. MAC 할당은 암시적입니까(또는 자동입니까)?

답변1

브리지는 이더넷 장치이므로 MAC 주소가 필요합니다. Linux 브리지는 스패닝 트리 프로토콜 프레임과 같은 항목을 생성할 수 있으며 이러한 트래픽에는 원래 MAC 주소가 필요합니다.

다리가 없습니다필요하다IP 주소. 대부분의 경우 이러한 상황이 발생하지 않습니다. 그러나 많은 경우에 당신은가능한예를 들면 다음과 같습니다.

  • 브리지가 컨테이너 그룹이나 가상 머신(또는 물리적 인터페이스) 그룹에 대한 기본 게이트웨이 역할을 하는 경우. 이 경우 라우팅이 IP 계층에서 발생하므로 IP 주소가 필요합니다.

  • "기본" NIC가 브리지의 구성원인 경우 브리지는 외부 세계와의 연결입니다. 이 경우 IP 주소를 (예를 들어) 브리지 장치에 할당하는 것이 아니라 eth0브리지 장치에 할당해야 합니다.

이 다리라면아니요IP 라우팅이 필요한 경우 IP 주소가 필요하지 않습니다. 이에 대한 예는 다음과 같습니다.

  • 브리지를 사용하여 외부 연결 없이 기기 전용 네트워크를 생성하거나 브리지가 아닌 기기를 통해 외부 연결을 제공하는 경우.

답변2

다른 네트워크 장치와 함께 나열된 브리지 장치는 가상 브리지를 나타내지 않으며 브리지에 연결된 가상 NIC를 나타냅니다. 물리적 네트워크 장치에 연결된 물리적 브리지가 있는 경우 네트워크 장치에 물리적 브리지가 표시되지 않습니다. 하지만 다른 브리지와 마찬가지로 자체 MAC 주소가 있는 브리지에 연결된 NIC가 표시됩니다. 인터넷 장비.

브리지 장치(실제로는 가상 브리지에 연결된 가상 NIC)에 IP 주소를 할당하면 호스트 장치가 브리지와 브리지에 연결된 모든 장치에 의해 생성된 서브넷으로 패킷을 라우팅할 수 있습니다. 정돈된!

네트워크 장치 도구(예: 및 명령 iproute2사용 )를 사용하면 브리지에 연결된 가상 NIC를 볼 수 있지만 프로그램을 사용하여 가상 브리지 자체를 볼 수도 있습니다 . 이 명령은 모든 브리지와 연결된 인터페이스를 나열합니다. 다음은 Linux 브리지와 tuntaps를 사용하는 예입니다 .ip linkip addrbrctlbrctl showiproutebrctl

# 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의 가상 브리지 구현을 설득력 있게 설명하는 것 같아서 이 글을 게시하게 되었습니다. 가상 브리지 자체에 MAC 주소가 있다고 생각하지 않습니다.

답변3

예, 브리지 인터페이스는 추가 포트 역할을 합니다.

뒤쪽에 man 5 systemd.netdev:

브리지 장치는 소프트웨어 스위치이며 각 슬레이브 장치와 브리지 자체는 스위치의 포트입니다.

답변4

br0나열된 인터페이스 는 호스트를 브리지와 브리지 에 각각 연결하는 탭 인터페이스 virbr0입니다 . 이러한 이름 오버로드는 확실히 혼란스럽습니다.ip addrip linkbr0virbr0

그래서 무엇입니까 virbr0-nic?

이것은 원래 질문의 일부가 아니지만 과거에 혼란스러웠기 때문에 여기에 2센트를 추가하겠습니다. virbr0-nicMAC 주소가 브리지에서 virbr0자체 MAC 주소로 사용되는 가상 인터페이스입니다. 항상 존재하는 이 인터페이스는 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설명을 위해.

관련 정보