debianのvlan設定

投稿者: | 2011年5月7日
Pocket

対象サーバについて

製品名 Hitachi PC8DG2-P108P1C10
OS(kernel ver) Debian lenny(2.6.26-2-686)
CPU Intel(R) Celeron(R) CPU 2.00GHz
メモリ 512M(256M DDR PC2100 x 2枚)
ストレージ Seagate 160GB

VLANの設定

・インストール

close:~# aptitude install vlan
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
タスクの記述を読み込んでいます... 完了
以下の新規パッケージがインストールされます:
  vlan
更新: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
39.6kB のアーカイブを取得する必要があります。展開後に 176kB のディスク領域が新たに消費されます。
拡張状態情報を書き込んでいます... 完了
取得:1 http://ftp.jp.debian.org lenny/main vlan 1.9-3 [39.6kB]
39.6kB を 2s 秒でダウンロードしました (16.1kB/s)
未選択パッケージ vlan を選択しています。
(データベースを読み込んでいます ... 現在 59542 個のファイルとディレクトリがインストールされています。)
(.../archives/vlan_1.9-3_i386.deb から) vlan を展開しています...
man-db のトリガを処理しています ...
vlan (1.9-3) を設定しています ...
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
拡張状態情報を書き込んでいます... 完了
タスクの記述を読み込んでいます... 完了

・設定

書式

vconfig add デバイス名 VLANID
close:~# vconfig add eth0 2
WARNING:  Could not open /proc/net/vlan/config.  Maybe you need to load the 8021q module, or maybe you are not using PROCFS??
Added VLAN with VID == 2 to IF -:eth0:-

→WARNINGの説明どおり、8021q moduleをロードします。

close:~# modprobe 8021q
close:~# lsmod | grep 8021q
8021q                  16064  0
close:~# vi /etc/modules

...

8021q

→起動時に有効になるように/etc/modulesにも入れておきます。

close:~# vconfig add eth0 2
Added VLAN with VID == 2 to IF -:eth0:-

→VLAN-ID:2が追加されました。

close:~# ifconfig -a

...

eth2      Link encap:イーサネット  ハードウェアアドレス 00:10:60:db:04:24
          BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

eth0.2    Link encap:イーサネット  ハードウェアアドレス 00:00:e2:88:3d:13
          BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

・・・

→有効になりました。

・設定ファイルに追加

起動時からvlanが使えるように/etc/network/interfacesに追加します。

先ほど手動で追加したvlan2を削除します。

close:~# vconfig rem eth0.2
Removed VLAN -:eth0.2:-
close:~# vi /etc/network/interfaces

...

auto eth0.2
iface eth0.2 inet static
address 10.0.0.2
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.1
vlan_raw_device eth0

→上記を設定ファイルに追記します。

close:~# /etc/init.d/networking restart
Reconfiguring network interfaces...SIOCDELRT: No such device
if-up.d/mountnfs[eth0]: waiting for interface eth0.2 before doing NFS mounts (warning).
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
Added VLAN with VID == 2 to IF -:eth0:-
done.

・状態確認

close:~# ifconfig -a

・・・

eth2      Link encap:イーサネット  ハードウェアアドレス 00:10:60:db:04:24
          BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

eth0.2    Link encap:イーサネット  ハードウェアアドレス 00:00:e2:88:3d:13
          inetアドレス:10.0.0.2 ブロードキャスト:10.0.0.255  マスク:255.255.255.0
          inet6アドレス: fe80::200:e2ff:fe88:3d13/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:6 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0
          RXバイト:0 (0.0 B)  TXバイト:492 (492.0 B)

・・・

→サブインタフェースにアドレスが設定されました。

・再起動時のエラー

ネットワークを再起動した際に以下のエラーが出ました。

close:~# /etc/init.d/networking restart
Reconfiguring network interfaces...SIOCDELRT: No such process
if-up.d/mountnfs[eth0]: waiting for interface eth0.2 before doing NFS mounts (warning).
Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
ERROR: trying to add VLAN #2 to IF -:eth0:-  error: File exists
done.

stop時にvlan2を消していないように見えます。

/etc/network/if-post-down.d/vlanでやってくれているように見えるのですがうまく動いていないようです。

そこで付け焼刃的ではありますが以下の修正を行いました。

close:~# vi /etc/network/interfaces

...

auto eth0.2
iface eth0.2 inet static
address 10.0.0.2
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.1
vlan_raw_device eth0
down /sbin/vconfig rem eth0.2

...

→down時にvconfigコマンドで削除しています。

荒治療ですがこれでうまく動きました。

VLAN-ID付きパケットの確認

WiresharkやtsharkにてパケットをキャプチャしてVLAN-IDが付いているか確認しようとしましたが、なぜかL2ヘッダに存在しませんでした。

一方、tcpdumpでDUMPしたら、以下のようにVLAN-IDが確認できました。

close:~# tcpdump

...

16:31:21.029781 vlan 2, p 0, IP 192.168.0.7.50900 > 192.168.0.3.telnet: . ack 2856 win 256
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です