VLAN 하위 인터페이스가 /etc/network/interfaces 파일에 있는 브리지의 일부인 경우 자동으로 생성됩니다.

VLAN 하위 인터페이스가 /etc/network/interfaces 파일에 있는 브리지의 일부인 경우 자동으로 생성됩니다.

~에 따르면데비안 네트워크 구성문서"단지 브리지에 넣기 위해 VLAN 인터페이스를 생성하는 경우 VLAN 인터페이스를 수동으로 정의할 필요가 없습니다. 브리지를 구성하기만 하면 브리지 생성 시 VLAN 인터페이스가 자동으로 생성됩니다.".다음 /etc/network/interfaces파일이 있습니다.

# The loopback network interface
auto lo
iface lo inet loopback


# mgmt network interface
auto eth0
iface eth0 inet static
        address 10.10.1.182
        netmask 255.255.255.192
        network 10.10.1.128
        broadcast 10.10.1.191
        gateway 10.10.1.190


# VLAN 100
auto br-VLAN-100
iface br-VLAN-100 inet manual
        bridge_ports eth1.100

# VLAN 200
auto br-VLAN-200
iface br-VLAN-200 inet manual
        bridge_ports eth1.200

# VLAN 300
auto br-VLAN-300
iface br-VLAN-300 inet manual
        bridge_ports eth1.300

# VLAN 400
auto br-VLAN-400
iface br-VLAN-400 inet manual
        bridge_ports eth1.400

# VLAN 500
auto br-VLAN-500
iface br-VLAN-500 inet manual
        bridge_ports eth1.500

그런데 시스템을 시작할 때 인터페이스 eth1.100, eth1.200, eth1.300및 인터페이스 eth1.400가 자동으로 생성되지 않습니다. 이러한 인터페이스를 수동으로 생성해야 합니까? 아니면 eth1.500파일 /etc/network/interfaces에 버그가 있습니까 ?

답변1

vlan인터페이스를 구성하는 데 필요한 바이너리가 포함된 패키지가 누락되었을 수 있습니다 .

이 문제를 해결하려면 다음을 수행하십시오. apt-get install vlan패키지 bridge-utils도 설치해야 합니다.

긴 설명:

vlan다음 명령을 사용하여 패키지 내부의 스크립트를 볼 수 있습니다.

root@host:~# dpkg -L vlan
...snip...
/usr/share/doc/vlan/changelog.Debian.gz
/usr/share/doc/vlan/howto.html
/etc
/etc/network
/etc/network/if-post-down.d
/etc/network/if-post-down.d/vlan
/etc/network/if-pre-up.d
/etc/network/if-pre-up.d/vlan
...snip...

vlan 패키지는 te 중에 VLAN 인터페이스를 처리하기 위한 몇 가지 스크립트를 추가합니다 ifup.

eth*.*다음은 이를 802.1q 인터페이스로 조사하고 표시하는 코드 조각입니다.vim /etc/network/if-pre-up.d/vlan + 18

  eth*.*|bond*.*|wlan*.*|em*.*|p[0-9]*.*)
    vconfig set_name_type DEV_PLUS_VID_NO_PAD
    VLANID=`echo $IFACE|sed "s/eth[0-9][0-9]*\.0*//g;s/bond[0-9][0-9]*\.0*//g;s/wlan
[0-9][0-9]*\.0*//g;s/em[0-9][0-9]*\.0*//g;s/p[0-9][0-9]*\(p[0-9][0-9]*\)\?\(_[0-9][0
-9]*\)\?\.0*//g"`
    IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/;s/\(bond[0-9][0-9]*\)\..*/\1/;s/\(wlan[0-9][0-9]*\)\..*/\1/;s/\(em[0-9][0-9]*\)\..*/\1/;s/\(p[0-9][0-9]*\(p[0-9][0-9]*\)\?\(_[0-9][0-9]*\)\?\)\..*/\1/"`
  ;;

그러나 이것은 데비안이 /etc/network/interfaces. Bridge-utils 패키지의 스크립트( )를 살펴보면 dpkg -L bridge-utils관심 있는 항목을 찾을 수 있습니다.vim /etc/network/if-pre-up.d/bridge +60

bridge_parse_ports $INTERFACES | while read i
do
  for port in $i
  do
    # We attach and configure each port of the bridge
    if [ "$MODE" = "start" ] && [ ! -d /sys/class/net/$IFACE/brif/$port ]; then
      if [ -x /etc/network/if-pre-up.d/vlan ]; then
        env IFACE=$port /etc/network/if-pre-up.d/vlan
      fi
      if [ "$IF_BRIDGE_HW" ]
      then
         ifconfig $port down; ifconfig $port hw ether $IF_BRIDGE_HW
      fi
      if [ -f /proc/sys/net/ipv6/conf/$port/disable_ipv6 ]
      then
        echo 1 > /proc/sys/net/ipv6/conf/$port/disable_ipv6
      fi
      brctl addif $IFACE $port && ifconfig $port 0.0.0.0 up

포트가 이미 브리지의 구성원인지 감지하고 를 호출하여 VLAN 인터페이스인지 감지하려고 시도합니다 /etc/network/if-pre-up.d/vlan.

기본적으로 무슨 일이 일어나고 있는지는 if [ -x /etc/network/if-pre-up.d/vlan ];표현식이 평가되지 않는다는 것입니다. "FILE이 존재하고 실행 가능하면 참입니다."

관련 정보