LoginSignup
12
9

More than 5 years have passed since last update.

VyOSとVRRPで冗長化されたルーターを作る

Last updated at Posted at 2017-09-23

VyOSで一つのグローバルIPを配下のローカルIPアドレスで共有する、いわゆる普通のブロードバンドルーター的な動作をするルータを作ってみます。

ただし、1台だけで構築した場合、そのサーバに何らかの障害が起きると、配下のサーバは通信できなくなってします。

そこで、登場するのがVRRPです。
設定手順に重点を置き、詳細は割愛しますが、VRRPを利用することで、2台以上のサーバがお互いに死活監視を行い、
常に一台だけが特定のIPアドレスを握ることで、全体として稼働し続けるルーターを構築することができます。

IPアドレス構成

以下のようなIPアドレスの構成とします

ホスト名 グローバルIP(eth0) ローカルIP(eth1)
router-01 198.51.100.172/28 192.168.0.252/24
router-02 198.51.100.173/28 192.168.0.253/24
仮想IP 198.51.100.174/28 192.168.0.254/24

通常のインターフェース設定

それぞれ以下のようにすでにIPアドレスが設定されている状態にします。

router-01

interfaces {
    ethernet eth0 {
        address 198.51.100.172/28
        hw-id 9c:a3:ba:31:92:f8
    }
    ethernet eth1 {
        address 192.168.0.252/24
        hw-id 9c:a3:ba:31:12:7c
    }
    loopback lo {
    }
}

router-02

interfaces {
    ethernet eth0 {
        address 198.51.100.173/28
        hw-id 9c:a3:ba:31:3b:6a
    }
    ethernet eth1 {
        address 192.168.0.253/24
        hw-id 9c:a3:ba:31:20:34
    }
    loopback lo {
    }
}

仮想IPアドレスとVRRPの設定

VRRPの設定と、マスタの時に握る仮想IPアドレスを設定します。
全てのルータに共通の設定を流し込むだけでOKです。

configure

set interface ethernet eth0 vrrp vrrp-group 100
set interface ethernet eth0 vrrp vrrp-group 100 advertise-interval 1
set interface ethernet eth0 vrrp vrrp-group 100 preempt false
set interface ethernet eth0 vrrp vrrp-group 100 virtual-address 198.51.100.174/28
set interface ethernet eth0 vrrp vrrp-group 100 sync-group syncgroup01

set interface ethernet eth1 vrrp vrrp-group 100
set interface ethernet eth1 vrrp vrrp-group 100 advertise-interval 1
set interface ethernet eth1 vrrp vrrp-group 100 preempt false
set interface ethernet eth1 vrrp vrrp-group 100 virtual-address 192.168.0.254/24
set interface ethernet eth1 vrrp vrrp-group 100 sync-group syncgroup01

commit
save
exit

動作確認

それぞれのサーバのシェルで show vrrp すると以下のように、一台がマスタ、残りがバックアップになっていることがわかります。

以下の場合では、router−01がバックアップ、router-02がマスタになっており、仮想IPアドレスも、router-02が握っていることが確認できます。

router-01

vyos@router-01:~$ show vrrp
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              100    BACKUP  no         no     18s         syncgroup01
eth1              100    BACKUP  no         no     18s         syncgroup01
vyos@router-01:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 9c:a3:ba:31:92:f8 brd ff:ff:ff:ff:ff:ff
    inet 198.51.100.172/28 brd 198.51.100.175 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::9ea3:baff:fe31:92f8/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 9c:a3:ba:31:12:7c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.252/24 brd 192.168.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::9ea3:baff:fe31:127c/64 scope link
       valid_lft forever preferred_lft forever

router-02

vyos@router-02:~$ show vrrp
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              100    MASTER  no         no     14s         syncgroup01
eth1              100    MASTER  no         no     12s         syncgroup01
vyos@router-02:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 9c:a3:ba:31:3b:6a brd ff:ff:ff:ff:ff:ff
    inet 198.51.100.173/28 brd 198.51.100.175 scope global eth0
       valid_lft forever preferred_lft forever
    inet 198.51.100.174/28 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::9ea3:baff:fe31:3b6a/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 9c:a3:ba:31:20:34 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.253/24 brd 192.168.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet 192.168.0.254/24 scope global secondary eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::9ea3:baff:fe31:2034/64 scope link
       valid_lft forever preferred_lft forever

NAT (IP masquarade) の設定

上記まででは、IPアドレスを持っているだけで、実際に配下のサーバがインターネットと通信するためにはNATの設定が必要です。
この設定に関してはVRRPを使わない場合と同様です。

configure

set nat source rule 100
set nat source rule 100 description "masquarade"
set nat source rule 100 outbound-interface eth0
set nat source rule 100 translation address 198.51.100.174
set nat source rule 100 source address 192.168.0.0/24

commit
save
exit

動作確認

配下に設置したサーバからインターネット上のサーバにpingを送りながらそれぞれのルーターを再起動してみましたが、
切り替えのタイミングで遅延が発生すルものの、継続して通信できていることが確認できます。

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9