FrontPage / BSD / 802.1Q-TagVLAN

 * FreeBSD で、802.1Q TagVLANを使う方法 [#e0d8cf83]
 
 #contents
 
 ** 準備 [#e5c56695]
 
 FreeBSD で、kernelコンパイルで有効にするか、moduleを組み込み、利用する2つのパターンがあります。~
 GENERIC kernelを使っている場合は、わざわざ手でkernelを作り直さないと行けないため、今回は、moduleを組み込む方法でのTipsとなります。
 
 尚、vlanが使えるデバイスは限られており、[[man - if-vlan:http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=if_vlan&dir=jpman-7.0.2%2Fman&sect=0]]や[[man - vlan:http://www.jp.freebsd.org/cgi/mroff.cgi?sect=4&cmd=&lc=1&subdir=man&dir=jpman-6.0.0%2Fman&subdir=man&man=vlan]]を見る限り、ハードウェアで処理可能なNICは、bce, bge, cxgb, em, ixgb, msk, nge, re, stge, ti, txp, vge となっているようです。ソフトウェアエミュレーションにより、多くのデバイスが対応出来るようですが、一部のNICには、制約が有るようですので、manで確認して下さい。
 
 // 使えないNICとしては、mtu 1500+4 がハードウェア的に受け付けないものが該当あげられるようです。
 // 親のMTUから-4される?
 
 
 
 
 ** VLAN Kernel moduleを読み込む [#vb10b3e3]
 
 カーネル再構築ではなく、VLAN Kernel Moduleをロードします。
 
  # kldload if_vlan.ko
 
 正常に読み込まれているか、kldstat で見ることが出来ます。
 
  # kldstat
   Id Refs Address Size Name
   1  1 0xc17c7000 4000 if_vlan.ko
 
 正常にload出来ることを確認出来たら、次回から自動起動時に、moduleを読み込むよう、/boot/loader.conf に以下の設定を書いておきましょう。rc.confで自動設定するときに、予めmoduleが読み込まれている必要があります。
 
  # echo 'if_vlan_load="YES"' >> /boot/loader.conf 
 
 
 
 
 
 * 手作業で設定してみる [#vdd7e94b]
 
 ** vlan if を作る [#ae33685e]
 
 vlanX は、任意の数字で作成することが出来るため、VIDとデバイス vlanX を同じにしておいても良い。
 
 
  # ifconfig vlan1 plumb
  # ifconfig vlan2 plumb
  # ifconfig vlan3 plumb
 
 機器によっては、MacAddressが同じだと、不都合が出る可能性があるため、任意のMacAddressに変更することが可能。
 
  # ifconfig vlan1 link 00:1c:c4:00:11:01
  # ifconfig vlan2 link 00:1c:c4:00:11:02
  # ifconfig vlan3 link 00:1c:c4:00:11:03
 
 無事に、ifconfig で変わったのを確認出来れば、そのNICが、vlan及びMacAddress変更(あくまでも名乗っているだけで、HWアドレスは書き換えられていない)が可能となる。
 
 
 
 
 ** vlan設定 [#e2745af5]
 
 下記のようにして、どの物理デバイスにたいして、vlanを使うか設定をおこなう。~
 途中から、bge0.2 といった形でも、使えるようになっている(らしい)
 
  # ifconfig vlan1 vlan 1 vlandev bge0
  # ifconfig vlan2 vlan 2 vlandev bge0
  # ifconfig vlan3 vlan 3 vlandev bge0
 
 vlanの設定が無事に完了したら、下記のようになっているはずです。
 
  # ifconfig vlan2
  vlan2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
  ether 00:1c:c4:00:11:02
  media: Ethernet autoselect (100baseTX <full-duplex>)
  status: active
  vlan: 2 parent interface: bge0
 
 
 
 
 ** IPアドレスを付ける [#y49c58d5]
 
 普段通り、ifconfig で、IPアドレスを付ければ問題有りません。
 
  # ifconfig vlan1 inet 192.168.1.10 netmask 255.255.255.0
  # ifconfig vlan2 inet 192.168.2.10 netmask 255.255.255.0
  # ifconfig vlan3 inet 192.168.3.10 netmask 255.255.255.0
 
 同様に、IPv6も問題なく付けることが出来ます。
 
  # ifconfig vlan1 inet6 add 2001:200:564:4649::1
  # ifconfig vlan2 inet6 add 2001:200:564:2525::1
  # ifconfig vlan3 inet6 add 2001:200:564:0721::1
 
 ルーティング等は、route add で追加出来ますが、今回は触れません。~
 疎通確認が出来たら、/etc/rc.conf に記述し、起動時に自動設定されるように設定をおこないます。
 
 
 
 
 ** NIC.vid でvlanを作る [#sf091466]
 
 Linux等では、eth0.10 とすると、eth0のvlan10とすることが出来出来ます。これは、どのNICにvlanが使われているか非常に明快でわかりやすくなっており、今のFreeBSDでも同じ使い方が出来るようになっています。
 
  # ifconfig bge0.10 plumb
   plumb ではなく、createでも可
 
 同様に、MacAddressの変更が必要であれば、次のようにして変更します。
 
  # ifconfig bge0.10 link 00:1c:c4:00:11:10
 
 無事に作れたか確認してみましょう。
 
  # ifconfig bge0.10
  bge0.10: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
          ether 00:1c:c4:00:11:03
          media: Ethernet autoselect (1000baseTX <full-duplex>)
          status: active
          vlan: 10 parent interface: bge0
 
 こちらの方がスマートで非常に簡単です。
 
 
 
 
 ** TIPS [#l1aac362]
 
 デバイスを破棄する場合(どちらか)
 
  # ifconfig bge0.10 destroy
  # ifconfig vlan200 destroy
 
 IPv4アドレスを付与(どちらも同じ)
 
  # ifconfig bge0.10 create 192.168.10.1/24
  # ifconfig bge0.10 create ; ifconfig bge0.10 inet 192.168.10.1 netmask 255.255.255.0
 
 IPv6アドレスを削除
 
  # ifconfig bge0.10 inet6 2001:200:564:5963::1 delete
 
 Media Type の指定(詳細はMan参照)~
 vlanデバイスには設定できません。
 
  # ifconfig bge0 media 100baseTX mediaopt full-duplex 
  # ifconfig bge0 192.168.0.10 netmask 255.255.255.0 media 100baseTX mediaopt full-duplex  <- IPアドレスと同時設定
 
 
 * /etc/rc.conf へ設定し、起動時に自動的に構成する [#z76f9b23]
 
 ** vlanN を使う方法 [#gd7f7aa1]
 
 ** NIC.vid を使う方法 [#jd7dd7fd]
 
 /boot/loader/conf に、if_vlanモジュールを自動的に読み込む設定をしていない場合、若しくはkernelに組み込んでいない場合は次のようにして児童にロードさせるように設定します。
 
  # echo 'if_vlan_load="YES"' >> /boot/loader.conf 
 
 rc.conf ファイルは、シェルスクリプトで使用される変数となるため、ifconfig_bge0.200 というインターフェース名は使用できません。そこで、rc.conf に書く場合は、'.' を '_' と置き換え、ifconfig_bge0_200 と置き換えます。
 
  ifconfig_bge0="up"
  cloned_interfaces="bge0.200 bge0.300 bge0.400"
  ifconfig_bge0_200="inet 192.168.200.1 netmask 255.255.255.0"
  ifconfig_bge0_300="inet 192.168.201.1 netmask 255.255.255.0"
  ifconfig_bge0_400="inet 192.168.202.1 netmask 255.255.255.0"
  ipv6_enable="YES"
  ipv6_network_interfaces="bge0.200 bge0.300"
  ipv6_defaultrouter="fe80::4989%bge0.200"
  ipv6_ifconfig_bge0_200="2001:200:564:4989::1 prefixlen 64"
  ipv6_ifconfig_bge0_200_alias0="2001:200:564:4989::2 prefixlen 64"
  ipv6_ifconfig_bge0_300="2001:200:564:5963::1 prefixlen 64"
  ipv6_ifconfig_bge0_300_alias0="2001:200:564:5963::2 prefixlen 64"
 
 Physical Addressを変更しなければいけない状況に有る場合は次のようにしてrc.confへ記載します。~
 ifconfig bge0>200 inet ipaddress netmask mask link 00:11:22:33:44:55 という書き方ができないため、次のようにします。
 
  ifconfig_bge0_200="link 00:11:22:33:44:55"
  ifconfig_bge0_200_alias0="inet 192.168.200.1 netmask 255.255.255.0"
 
 
 
 
 ** 備考 [#d2b39de6]
 
 ifconfig へそのままパラメータが渡されるため、ifconfig で使用可能なオプションはそのまま使用可能である。
 
  ifconfig bge0 inet 192.168.200.1 netmask 255.255.255.0 media 100baseTX mediaopt full-duplex
 
 と行いたければ、
 
  ifconfig_bge0="inet 192.168.200.1 netmask 255.255.255.0 media 100baseTX mediaopt full-duplex"
 
 と記述すればよい。
 
 
 
 
 
 * 参考リンク [#u3d7c52a]
 
 - [[FreeBSD 日本語マニュアル if_vlan- IEEE 802.1Q VLAN ネットワークインタフェース:http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=if_vlan&dir=jpman-7.1.2%2Fman&sect=0]]
 - [[FreeBSD 日本語マニュアル rc.conf -- システム設定情報:http://www.jp.freebsd.org/cgi/mroff.cgi?sect=5&cmd=&lc=1&subdir=man&dir=jpman-7.1.2%2Fman&subdir=man&man=rc.conf]]
 - [[FreeBSD 日本語マニュアル ifconfig -- ネットワークインタフェースのパラメータを設定する:http://www.jp.freebsd.org/cgi/mroff.cgi?sect=8&cmd=&lc=1&subdir=man&dir=jpman-7.1.2%2Fman&subdir=man&man=ifconfig]]
 
 - [[TagVLAN編:http://apex.wind.co.jp/tetsuro/f-bsd/vlan.html]]
 - [[FreeBSD BOXでVLAN(IEEE802.1q)を喋らせる:http://www.ojnet-japan.com/FreeBSD/VLAN/vlan.html]]
 - [[FreeBSD-dot1q:http://www.seichan.org/wiki/index.php?FreeBSD-dot1q]]
 - [[1つのインターフェースの有効活用:http://www.gnotes.jp/unix/wiki.cgi?page=%A3%B1%A4%C4%A4%CE%A5%A4%A5%F3%A5%BF%A1%BC%A5%D5%A5%A7%A1%BC%A5%B9%A4%CE%CD%AD%B8%FA%B3%E8%CD%D1]]
 - [[http://float.muranet.jp/~mura/blosxom.cgi/2006/09/]]
 - [[FreeBSD VLANs Configuration using ifconfig command:http://www.cyberciti.biz/faq/howto-configure-freebsd-vlans-with-ifconfig-command/]]
 - [[VLANトランク:http://www.infraexpert.com/study/vlan1.3.htm]]
 - [[スイッチ間リンクとIEEE802.1Qフレーム形式 - テクニカルサポート:http://www.cisco.com/JP/support/public/ht/tac/100/1008517/741_4-j.shtml]]
TOPページへ戻るページの更新   ページの編集新しいページの作成新しい下位ページの作成そのページを引用して新規作成そのページにファイルの添付ページの削除ページ名の変更前回の編集内容の表示バックアップページの参照ページへのリンク元を表示   サイトのページ一覧サイト内単語検索編集したページの履歴削除したページの履歴   別ウィンドウでマニュアルページへ