~によるとDebian ネットワークの設定文書「ブリッジに入れるために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/"`
;;
しかし、これはDebianが/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が存在し、実行可能であれば真です。」