朝日ネット 開発者ブログ

朝日ネットのエンジニアによるリレーブログ。今、自分が一番気になるテーマについて書きます。

ISPを構築してみる (3)

朝日ネットで業務システムを開発しているkakoです。前回の記事では、プライベートASになんちゃってISP(KakoNet)を構築するための手順と、VirtualBoxの内部ネットワークにVyOSとUbuntuを構築する方法について述べました。今回は下図のように、次の検証・構築手順として挙げている、VyOS間のBGPについて記載したいと思います。

f:id:kako-asahi:20180816054158p:plain

仮想環境に検証用ネットワークを構築

VirtualBoxを用いて、仮想環境に下図のような検証用ネットワークを構築します。

f:id:kako-asahi:20180816203307p:plain

①前回の手順にならって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 stateEstablishedであり、広報されている経路情報を新しく受け取っていることがわかります。

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サーバおよびクライアントについて検証を行いたいと思います。

採用情報

朝日ネットでは新卒採用・キャリア採用を行っております。