VRFで自宅NWを構築してみた

お世話になります。私です。

標題の件につきまして、一先ずの構築が終了しましたのでご報告させていただきます。

  • そもそも、なぜにVRF?

勉強会をやったりやらなかったりを繰り返している、なんともやる気のない弊社ではありますが、この度、仮想化をテーマに1日を無駄に過ごそうというアレが話に上がりました。

仮想化、なんて言葉は弊社SI企業の大好物でして、コストを抑えるための材料として営業には必須のツールになっております。サーバ仮想化やらVLANやらは出来て当たり前ですから、なら次はルータの仮想化を勉強会のネタにしようということになったのが事の顛末。そして、私がなぜか資料を作ってくることになりました。

「あのぉ、APPエンジニア屋な弊社でNWな案件なんてないに等しいのでは…?」とそれとなく言ってみたら「そうなんだ、すごいね(棒読み)」で返されました(実話)

  • 要件定義()

VRF、要するにルーティングテーブルの仮想化ですが、自宅でも有効利用できるような構成を組んでみました。

我々、技術屋を名乗る者といたしましては、ISPを2契約するのは当然のことです。L3の1台や2台は、NWエンジニアでなくても自宅に所有しているものです。スイッチのリンクアップ点滅を眺め、扇風機いらずの轟音ファンに囲まれた生活、それこそがSIerとしての宿命だと考えております。

話が逸れました。ISPを2契約しているのだったらルータでマルチセッションさせればいいわけですが、そこはご愛嬌。それを言ってしまっては身も蓋もありません。なので今回は「このルータ、マルチセッションできねぇじゃねぇか」とか「FEじゃん、ダメじゃん」という方々のために、最低限の機材で素敵なNW環境を構築しようという話に持っていくことにします。

それを踏まえて、以下の構成図を作成いたしました。

f:id:tydk27:20150914133500j:plain

自宅NW構成図(仮)になります。SSG140はASAHIネット、1812jはOCNとPPPoEセッションを確立させています。

赤い点線はルート漏洩の線です。VRF20配下の仮想サーバ内は、ZABBIXやPostfixが住みついています。ですので、VRF10配下にいるサーバ情報を取得するために、経路情報を交換させてやる必要があるのです。

VRF10に属している某サーバが、どうしてもローカルセグメント内にいないといけないのでこういう構成になっています。仕方ないね。まぁその必要がなかったらVRF構築なんてせずに、踏み台サーバでも用意しておけばいいだけの話。

  • こんふぃぐ

以下は3750Gのコンフィグ(抜粋)になります。なお、IOSは12.2です。

まずVRFを設定します。経路情報の交換準備として、route-targetのimportとexportが必須。

ip vrf VRF10
 rd 200:1
 route-target export 200:1
 route-target import 200:1
 route-target import 200:2
!
ip vrf VRF20
 rd 200:2
 route-target export 200:2
 route-target import 200:2
 route-target import 200:1

GRTとVRFのループバックを設定。

interface Loopback0
 ip address 10.0.0.0 255.255.255.255
!
interface Loopback1
 ip vrf forwarding VRF10
 ip address 10.0.0.1 255.255.255.255
!
interface Loopback2
 ip vrf forwarding VRF20
 ip address 10.0.0.2 255.255.255.255

InterfaceやVLANは各々。

漏洩させる経路はBGPプロセスに所属させる必要があります。要するに、BGPのルーティングプロセスの中に、VRFを詰め込んでいくというイメージ。まぁ正直よくわかっていないです。BGPだけを使うのであればこれで問題ないのですが、OSPFを使う場合は経路情報を再配布しなければいけないのでまたちょっと違う。今回はとりあえずなのでBGPでそのまま経路交換させることにします。

router bgp 200
 no synchronization
 bgp log-neighbor-changes
 no auto-summary
 !
 address-family ipv4 vrf VRF10
  redistribute connected
  no synchronization
 exit-address-family
 !
 address-family ipv4 vrf VRF20
  redistribute connected
  no synchronization
 exit-address-family

VRFのゲートウェイを設定するため、静的ルートを追加。

ip route vrf VRF10 0.0.0.0 0.0.0.0 10.1.1.240
ip route vrf VRF20 0.0.0.0 0.0.0.0 10.1.2.240

あとは、各VRFのルーティングテーブルを確認して経路情報が交換されているか、pingがセグメントを超えて届くかを確認します。

設定自体は難しくはない。ないのだけど、MPLS VPN、Route Distinguisher、Route Target、MBGPといったことが理解できて初めてマトモな設計ができると思います。「とりあえず動けばいい」という残念SIer思想が染み込んでしまう前になんとかしましょう(ぉ