~에 따르면데비안 네트워크 구성문서"단지 브리지에 넣기 위해 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이 존재하고 실행 가능하면 참입니다."