🌟

【VITOTHON】quagga を使って BGP ルータ jail を作る

2023/07/18に公開

FreeBSD に jail を組み込んだアプライアンス VITOTHON[1][2] を使用して BGP の練習をします。この記事では、以下の過程を説明します。

  1. VITOTHON を使ってルータ用 jail flavour を作成する
  2. 作成した jail に quagga をインストールする
  3. 作成した jail を BGP ルータとして動作させて、AS 間で疎通確認を行う

今回作成するネットワーク図
赤が AS65001、青が AS65002 です。
server01 - server02 間で ping が通れば OK です。

ルータ用 jail を用意する

[root@vitothon /jails/flavours]# cp -r example router

jail に quagga をインストールする

[root@vitothon /jails/flavours]# mkdir router/pkg
[root@vitothon /jails]# cd router/pkg/
[root@vitothon /jails/flavours/router/pkg]# pkg fetch --o . -d quagga
[root@vitothon /jails/flavours/router/pkg]# mv All/* .
[root@vitothon /jails/flavours/router/pkg]# ls
All			indexinfo-0.3.1.pkg	quagga-1.2.4_11.pkg	readline-8.2.1.pkg
[root@vitothon /jails/flavours/router/pkg]# rm -r All

quagga の設定

[root@vitothon /jails/bin]# jls
   JID  IP Address      Hostname                      Path
     6                  server01                      /jails/server01
     7                  server02                      /jails/server02
     8                  router01                      /jails/router01
     9                  router02                      /jails/router02
    10                  bridge00                      /jails/bridge00
    11                  bridge01                      /jails/bridge01
    12                  bridge02                      /jails/bridge02
    
[root@vitothon /jails/bin]# jexec router01 /bin/sh
# vi /etc/rc.conf // 以下 2 行を追記
quagga_enable="YES"
quagga_daemons="zebra bgpd"

// bgpd.conf と zebra.conf を用意する
# cd /usr/local/etc/
# touch bgpd.conf // 中身は以下
hostname Router
password zebra
# touch zebra.conf // 中身は以下
hostname Router
password zebra

# service quagga start
# vtysh

Hello, this is Quagga (version 1.2.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

router01# conf t
router01(config)# router bgp 65001
router01(config-router)# network 10.0.1.0/24
router02(config-router)# bgp router-id 192.168.100.1
router01(config-router)# neighbor 192.168.100.2 remote-as 65002
router01(config-router)# end
router01# write mem
Building Configuration...
Configuration saved to /usr/local/etc/quagga/zebra.conf
Configuration saved to /usr/local/etc/quagga/bgpd.conf
[OK]
// router02 も同様に設定
router02# conf t
router02(config)# router bgp 65002
router02(config-router)# network 10.0.2.0/24
router02(config-router)# bgp router-id 192.168.100.2
router02(config-router)# neighbor 192.168.100.1 remote-as 65001
router02(config-router)# end
router02# write mem
Building Configuration...
Configuration saved to /usr/local/etc/quagga/bgpd.conf
[OK]

// 確認
router02# show ip bgp
BGP table version is 0, local router ID is 192.168.100.2
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
              i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 10.0.1.0/24      192.168.100.1            0             0 65001 i
*> 10.0.2.0/24      0.0.0.0                  0         32768 i
# ここで、2つのネットワークが見えていれば OK です。
# 最後に server02 に入って、server01 に向けて ping を打ってみてください。
# 設定が間違っていなければ ping が通るはずです。
脚注
  1. http://www.fikastudio.net/VITOTHON.ova ↩︎

  2. https://github.com/FikaStudio-code/VITOTHON ↩︎

Discussion