朝日ネットで業務システムを開発しているkakoです。前回の記事では、プライベートASになんちゃってISP(KakoNet)を構築するための手順と、VirtualBoxの内部ネットワークにVyOSとUbuntuを構築する方法について述べました。今回は下図のように、次の検証・構築手順として挙げている、VyOS間のBGPについて記載したいと思います。
仮想環境に検証用ネットワークを構築
VirtualBoxを用いて、仮想環境に下図のような検証用ネットワークを構築します。
①前回の手順にならってVyOSを2台(kako-rt、hoge-rt)、Ubuntuを2台(kako-host、hoge-host)構築します。
②サブネットごとに別々の「内部ネットワーク」を用意して、各々のノードを接続し、IPアドレスを設定します。
③加えて、sshで接続できるように「ホストオンリーアダプター」も用意し、IPアドレスを設定します。
構築後の設定は下記のようになっています。
kako-rt
vyos@kako-rt:~$ show interfaces Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 192.0.2.1/25 u/u eth1 192.168.56.111/24 u/u eth2 10.0.0.1/24 u/u lo 127.0.0.1/8 u/u ::1/128
hoge-rt
vyos@hoge-rt:~$ show interfaces Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 192.0.2.129/25 u/u eth1 192.168.56.121/24 u/u eth2 10.0.0.2/24 u/u lo 127.0.0.1/8 u/u ::1/128
kako-host
ubuntu@kako-host:~$ hostname -I 192.168.56.112 192.0.2.2 ubuntu@kako-host:~$ route カーネルIP経路テーブル 受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース default 192.0.2.1 0.0.0.0 UG 0 0 0 enp0s8 192.0.2.0 * 255.255.255.128 U 0 0 0 enp0s8 192.168.56.0 * 255.255.255.0 U 0 0 0 enp0s3
hoge-host
ubuntu@hoge-host:~$ hostname -I 192.168.56.122 192.0.2.130 ubuntu@hoge-host:~$ route カーネルIP経路テーブル 受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース default 192.0.2.129 0.0.0.0 UG 0 0 0 enp0s8 192.0.2.128 * 255.255.255.128 U 0 0 0 enp0s8 192.168.56.0 * 255.255.255.0 U 0 0 0 enp0s3
VyOS間でのBGP
BGP設定前のルータの状態を確認
kako-rt
vyos@kako-rt:~$ show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route C>* 10.0.0.0/24 is directly connected, eth2 C>* 127.0.0.0/8 is directly connected, lo C>* 192.0.2.0/25 is directly connected, eth0 C>* 192.168.56.0/24 is directly connected, eth1
hoge-rt
vyos@hoge-rt:~$ show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route C>* 10.0.0.0/24 is directly connected, eth2 C>* 127.0.0.0/8 is directly connected, lo C>* 192.0.2.128/25 is directly connected, eth0 C>* 192.168.56.0/24 is directly connected, eth1
BGPの設定
kako-rtとhoge-rtに下記コマンドを入力することで、VyOS間でBGPピアを張ります。
kako-rt
$ configure # set protocols bgp 65536 neighbor 10.0.0.2 remote-as 65537 # set protocols bgp 65536 neighbor 10.0.0.2 soft-reconfiguration inbound # set protocols bgp 65536 network 192.0.2.0/25 # commit # save # exit
hoge-rt
$ configure # set protocols bgp 65537 neighbor 10.0.0.1 remote-as 65536 # set protocols bgp 65537 neighbor 10.0.0.1 soft-reconfiguration inbound # set protocols bgp 65537 network 192.0.2.128/25 # commit # save # exit
各コマンドの簡単な解説
下記コマンドで相手のAS番号とルータのIPアドレスを設定します。
set protocols bgp <自分のAS番号> neighbor <相手のルータのIPアドレス> remote-as <相手のAS番号>
下記コマンドで、相手から受けた経路をキャッシュし、BGPセッションを上げ直さなくてもポリシー変更ができるようにします。
set protocols bgp <自分のAS番号> neighbor <相手のルータのIPアドレス> soft-reconfiguration inbound
下記コマンドで自身が外部に広報する経路情報を生成します。
set protocols bgp <自分のAS番号> network <広報する経路>
BGPが有効であることの確認
下記のように、VyOS上でBGPが設定されていることを確認します。対向ルータとのBGP state
がEstablished
であり、広報されている経路情報を新しく受け取っていることがわかります。
kako-rt
vyos@kako-rt:~$ show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route C>* 10.0.0.0/24 is directly connected, eth2 C>* 127.0.0.0/8 is directly connected, lo C>* 192.0.2.0/25 is directly connected, eth0 B>* 192.0.2.128/25 [20/1] via 10.0.0.2, eth2, 00:01:05 C>* 192.168.56.0/24 is directly connected, eth1 vyos@kako-rt:~$ show ip bgp BGP table version is 0, local router ID is 192.168.56.111 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 192.0.2.0/25 0.0.0.0 1 32768 i *> 192.0.2.128/25 10.0.0.2 1 0 65537 i Total number of prefixes 2 vyos@kako-rt:~$ show ip bgp neighbors 10.0.0.2 BGP neighbor is 10.0.0.2, remote AS 65537, local AS 65536, external link BGP version 4, remote router ID 192.168.56.121 BGP state = Established, up for 00:02:22 Last read 08:01:27, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: 4 Byte AS: advertised and received Route refresh: advertised and received(old & new) Address family IPv4 Unicast: advertised and received (後略)
hoge-rt
vyos@hoge-rt:~$ show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route C>* 10.0.0.0/24 is directly connected, eth2 C>* 127.0.0.0/8 is directly connected, lo B>* 192.0.2.0/25 [20/1] via 10.0.0.1, eth2, 00:10:02 C>* 192.0.2.128/25 is directly connected, eth0 C>* 192.168.56.0/24 is directly connected, eth1 vyos@hoge-rt:~$ show ip bgp BGP table version is 0, local router ID is 192.168.56.121 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 192.0.2.0/25 10.0.0.1 1 0 65536 i *> 192.0.2.128/25 0.0.0.0 1 32768 i Total number of prefixes 2 vyos@hoge-rt:~$ show ip bgp neighbors 10.0.0.1 BGP neighbor is 10.0.0.1, remote AS 65536, local AS 65537, external link BGP version 4, remote router ID 192.168.56.111 BGP state = Established, up for 00:10:43 Last read 07:56:49, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: 4 Byte AS: advertised and received Route refresh: advertised and received(old & new) Address family IPv4 Unicast: advertised and received (後略)
下記のように、kako-hostからhoge-hostに対してpingコマンドを打つことで、到達性があることを確認します。
ubuntu@kako-host:~$ ping 192.0.2.130 PING 192.0.2.130 (192.0.2.130) 56(84) bytes of data. 64 bytes from 192.0.2.130: icmp_seq=1 ttl=62 time=0.799 ms 64 bytes from 192.0.2.130: icmp_seq=2 ttl=62 time=2.12 ms 64 bytes from 192.0.2.130: icmp_seq=3 ttl=62 time=1.95 ms
おわりに
今回はVyOS間でのBGPを検証するための最低限の手順を述べました。VyOSではさらに詳細なBGPの設定も可能であるため、必要に応じて検証していきたいと思います。次回はPPPoEサーバおよびクライアントについて検証を行いたいと思います。
採用情報
朝日ネットでは新卒採用・キャリア採用を行っております。