ネットワーク設計を見直してみた(タグVLAN対応KVMホスト, 仮想化Linuxルーター, IPv6対応)(3)

前回について、今度はLinuxルーターを仮想化する方法についてまとめてみる。。
前回までの作業で、物理ホスト、仮想ホストを好きなセグメントに配置できるようになっているので、まずはインターネット接続用のセグメントを用意する.このセグメントには、基本的にルーターとモデムだけを置き、それ以外の通信は全てルーターを通すように構成する。筆者の環境ではVLAN254をこの目的で使用している。(構成図は(1)を参照。。)

Linuxルーターの使い方については、この辺を参照。
http://centossrv.com/linux-router.shtml

更に仮想化環境で使う場合については、こちらを参照。
http://projects.tsuntsun.net/~nabeken/diary/Diary/20081228.html


ルーターとはいえ、やっていることはPPPoE接続を行うことと、IPマスカレードを行うことと、オプションでパケットフィルタを行うぐらいで、それほど複雑な構成ではない。一応Linux自体はQuaggaなどを通じて、ルーティングプロトコルも扱えるので念のため。w (ちなみにwindowsServerでも一部のルーティングプロトコルが扱えるが、バージョンによってサポート状態がさまざまなようだ。。 http://articles.techrepublic.com.com/5100-10878_11-1052877.html)

筆者はルーター用のVMとしてFedoraを用いたため、adsl-setupではなく、pppoe-setupを用いた。このコマンドを実行すると、プロバイダ向けのパスワード等を入力するCUIが現れ、ifcfg-ppp0 が構成される。(詳細設定は /etc/ppp 以下に存在する。 )

実際にppp接続を構成するには、次のようにifupを行う。

# ifup ppp0

これで、ルーター機がグローバルIPを得るので、インターネットと通信できるようになる。このままだと、VLAN254にしかNICが接続されておらず、内部との通信ができないため、他にDMZ(VLAN251)にもルーターからNICをつないでいる。

注意点として、ルーターがGlobal IPを得た時点で、デフォルトゲートウェイがインターネット側に設定されるため、内部に複数のセグメントがある(VLAN11とVLAN251に対応)場合には、内部側のセグメントへの静的経路が必要になることがある。

この場合、セグメントが2つしかなく、次のルーターはその両方にNICがつながっている構成なので、
単に 192.168.0.0/16 をそちらのルーターに転送する設定とした。

(/etc/sysconfig/static-routes)
any net 192.168.0.0 netmask 255.255.0.0 gw 192.168.251.135 dev eth0


また、グローバルIPを振る場合には、iptablesによるパケットフィルタとIPマスカレードの設定が必要だが、こちらは、pppoe-setup付属のもの(/etc/ppp/firewall-masq)を用いた。こちらはsetup時の設定で有効にすることができ、TCPのブロックやマスカレードなど基本的な設定を行ってくれる。こちらをベースに適宜変更するとよさそうだ。。(筆者もDNSやNTPを使用するため、いくつか変更を加えている。。)

ここまでで一通りタグVLAN, ルーターについてはまとめたので、次回以降IPv6について記述していこうと思う。(もちろん、他にも色々と細かい話はあるのだが。。。 w)