2006年05月16日
LinuxでのタグVLANの利用 〜 vconfigの使い方
スイッチ間で VLAN-ID をやりとりするために利用されることが多いタグVLANですが、Linuxルータ上から直接利用することで、LANケーブルのタコ足を解消することができます。まあ、「L3スイッチ使うからいいもん」という方は軽く流してやって下さい(笑
ただ、LinuxのnetfilterでVLAN間のフィルタ制御ができるのは魅力に感じます。
ただ、LinuxのnetfilterでVLAN間のフィルタ制御ができるのは魅力に感じます。
vconfigはdebianではvlanパッケージに含まれているので、
これで、さくっとインストールできます。
使い方も非常にシンプルで、
とするだけです。
例えば、
とすると、eth0.1 というインターフェイスが作られ、VLAN-ID=1 のタグ付きパケットはここから出入り出来るようになります。些細なことですが、VLANタグ付きのパケットが eth0.* から出入りしている様子を最初に目の当たりにした時には、なぜかえらく感動したものです。(笑)
例によって debian では、/etc/network/interfaces に iface bond0.1 inet static なエントリを記述しておくと /etc/network/if-pre-up.d/vlan が良きに計らってくれるので、テスト目的以外で vconfigを実行する機会はほとんどないかもしれませんね。
この構成は netfilter と組み合わせる事で真価を発揮します。
「VLANを分けたのはいいけど、ここからあそこにはアクセスさせたい」というニーズは比較的多いのではないでしょうか。例えば、VLAN1からVLAN2には繋がらないが、VLAN2からVLAN1には繋がるようにしたいというニーズがあれば、以下のようにします。
さらに、VLAN1からVLAN2上のWebServerへのHTTPだけは通したいというニーズもあるならば、以下のようにします。
ポリシールーティングやブリッジ等と組み合わせると、もっと楽しい事ができそうです。
apt-get install vlan
これで、さくっとインストールできます。
使い方も非常にシンプルで、
vconfig add デバイス名 VLAN-ID
とするだけです。
例えば、
vconfig add eth0 1
とすると、eth0.1 というインターフェイスが作られ、VLAN-ID=1 のタグ付きパケットはここから出入り出来るようになります。些細なことですが、VLANタグ付きのパケットが eth0.* から出入りしている様子を最初に目の当たりにした時には、なぜかえらく感動したものです。(笑)
例によって debian では、/etc/network/interfaces に iface bond0.1 inet static なエントリを記述しておくと /etc/network/if-pre-up.d/vlan が良きに計らってくれるので、テスト目的以外で vconfigを実行する機会はほとんどないかもしれませんね。
この構成は netfilter と組み合わせる事で真価を発揮します。
「VLANを分けたのはいいけど、ここからあそこにはアクセスさせたい」というニーズは比較的多いのではないでしょうか。例えば、VLAN1からVLAN2には繋がらないが、VLAN2からVLAN1には繋がるようにしたいというニーズがあれば、以下のようにします。
iptables -F FORWARD
iptables -P FORWARD DROP
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -i eth0.2 -o eth0.1 -j ACCEPT
さらに、VLAN1からVLAN2上のWebServerへのHTTPだけは通したいというニーズもあるならば、以下のようにします。
iptables -F FORWARD
iptables -P FORWARD DROP
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -i eth0.2 -o eth0.1
iptables -A FORWARD -j ACCEPT -i eth0.1 -o eth0.2 -d WebServer -p tcp --dport 80
ポリシールーティングやブリッジ等と組み合わせると、もっと楽しい事ができそうです。
klab_gijutsu2 at 16:11│Comments(0)│TrackBack(0)