Linux의 VLAN에 대한 세부 정보를 파고들다가 다음 두 가지 명령을 발견했습니다.
[root@machine ~]# bridge vlan add vid 100 dev em1
[root@machine ~]# ip link add link em1 name em1.100 type vlan id 100
첫 번째는 em1에 VLAN을 추가하는 것입니다.
[root@machine ~]# bridge vlan show
port vlan ids
em1 1 PVID Egress Untagged
100
두 번째 인터페이스는 새로운 인터페이스를 생성합니다.
[root@machine ~]# ip a s dev em1.100
27: em1.100@em1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether b8:ca:3a:70:8f:d0 brd ff:ff:ff:ff:ff:ff
이 둘의 차이점은 무엇인가요?
답변1
보시 man bridge
다시피 bridge vlan ...
조작VLAN 필터 목록ip link add ... type vlan
브리지(어떤 VLAN 태그에 대해 어떤 포트가 활성화되어 있는지 설명 ),새 네트워크 인터페이스 만들기이를 사용하면 IP 주소 등을 제공하여 애플리케이션에서 VLAN 태그가 지정된 패킷에 액세스할 수 있습니다.
둘은 완전히 다른 것이며 공통점이 없습니다(두 가지 모두 VLAN 태깅을 처리하지만 완전히 다른 방식으로 처리한다는 점만 제외).
답변2
첫 번째 인터페이스를 통과하도록 VLAN을 활성화합니다. 그렇지 않으면 VLAN이 정리되고 브리지를 구성해야 합니다.
ip link add name br0 type bridge
ip link set dev br0 type bridge vlan_filtering 1
ip link set em1 master br0
귀하의 예에서 인터페이스 em1에는 기본 VLAN 1과 멤버 VLAN 100이 있으며 인터페이스가 없으며 다른 모든 VLAN은 정리됩니다.
두번째 새 (하위)인터페이스를 생성하여 태그가 지정되지 않은 트래픽을 얻습니다(VLAN 100은 em1이 할당된 브리지로 전달되지 않습니다). 예에서 em1.100은 새 인터페이스입니다. 이를 브리지하려면 새 (하위)인터페이스가 필요합니다 이런 브릿지를 만들고
ip link add name br0.100 type bridge
ip link set dev br0.100 up
ip link set em1.100 master br0.100