目次
Pythonでデータ解析と自動化ツールを開発しています。DjangoでのWeb開発も得意です!
VRRP (Virtual Router Redundancy Protocol) という仕組みを用いて可用性を高めるための設定方法をまとめます。
設定方法を検証するための構成
VirtualBox のゲスト OS として VyOS 用の VM を三つ用意します。192.168.200.0/24
のネットワークは VirtualBox の「内部ネットワーク」として用意します。
ホスト OS の所属するネットワーク
|
|
|NAT
| .1
|- eth0 | vyos-0001 | eth1 --|
| master .4 |
| VIP |---- eth0 | vyos-0003
| | .3
|- eth0 | vyos-0002 | eth1 --|
backup .2 192.168.200.0/24
固定 IP の設定
vyos-0001
vyos@vyos-0001# set interfaces ethernet eth1 address 192.168.200.1/24
vyos@vyos-0001# commit
vyos@vyos-0001# save
vyos-0002
vyos@vyos-0002# set interfaces ethernet eth1 address 192.168.200.2/24
vyos@vyos-0002# commit
vyos@vyos-0002# save
vyos-0003
vyos@vyos-0003# set interfaces ethernet eth0 address 192.168.200.3/24
vyos@vyos-0003# commit
vyos@vyos-0003# save
VRRP 設定
192.168.200.4/24
を仮想 IP として設定します。vyos-0001 の priority を高めに設定することで master に指定します。同じセグメントに他の VRRP のパケットが流れたときに区別ができるように、vrrp-group
というグループ ID を設定します。ここでは仮に 10 としました。また、sync-group
は今回の用途では実は不要な設定です。複数の VRRP 設定を同じ sync-group
に所属させると、あるグループの interface で failover が発生したときに、他のグループでも failover が発生するようになります。例えば vyos-0001 の eth0 と vyos-0002 の eth0 でも VRRP 設定を組んだときに、eth0 側と eth1 側で master が不一致になる状況を回避できます。公式ドキュメントはこちらです。VRRP は VyOS 公式ドキュメントにおける記述がなく、必要に応じて Vyatta のドキュメントを参照する必要があります。
vyos-0001
vyos@vyos-0001# set interfaces ethernet eth1 vrrp vrrp-group 10 virtual-address 192.168.200.4/24
vyos@vyos-0001# set interfaces ethernet eth1 vrrp vrrp-group 10 sync-group my-vrrp-sync-group
vyos@vyos-0001# set interfaces ethernet eth1 vrrp vrrp-group 10 priority 255
vyos@vyos-0001# commit
vyos@vyos-0001# save
vyos-0002
vyos@vyos-0002# set interfaces ethernet eth1 vrrp vrrp-group 10 virtual-address 192.168.200.4/24
vyos@vyos-0002# set interfaces ethernet eth1 vrrp vrrp-group 10 sync-group my-vrrp-sync-group
vyos@vyos-0002# set interfaces ethernet eth1 vrrp vrrp-group 10 priority 100
vyos@vyos-0002# commit
vyos@vyos-0002# save
内部からの確認
VRRP の状態を確認します。vyos-0001 が master として認識されていることが分かります。
vyos-0001
vyos@vyos-0001# run show vrrp detail
Use of uninitialized value in printf at /opt/vyatta/share/perl5/Vyatta/VRRP/OPMode.pm line 249.
--------------------------------------------------
Interface: eth1
--------------
Group: 1
----------
State: MASTER
Last transition: 2m6s
Source Address:
Priority: 255
Advertisement interval: 1 sec
Authentication type: none
Preempt: enabled
Sync-group: my-vrrp-sync-group
VIP count: 1
192.168.200.4/24
vyos-0002
vyos@vyos-0002# run show vrrp detail
Use of uninitialized value in printf at /opt/vyatta/share/perl5/Vyatta/VRRP/OPMode.pm line 249.
--------------------------------------------------
Interface: eth1
--------------
Group: 1
----------
State: BACKUP
Last transition: 1m13s
Master router: 192.168.200.1
Master priority: 255
Source Address:
Priority: 100
Advertisement interval: 1 sec
Authentication type: none
Preempt: enabled
Sync-group: my-vrrp-sync-group
VIP count: 1
192.168.200.4/24
外部からの確認
vyos-0003 から VIP に対して arping を実行すると、vyos-0001 の 192.168.200.1
に対して実行したときと同じ MAC アドレスが得られることが分かります。
vyos@vyos-0003:~$ arping 192.168.200.1
WARNING: interface is ignored: Operation not permitted
ARPING 192.168.200.1 from 192.168.200.4 eth0
Unicast reply from 192.168.200.1 [08:00:27:5A:75:64] 0.838ms
Unicast reply from 192.168.200.1 [08:00:27:5A:75:64] 0.842ms
vyos@vyos-0003:~$ arping 192.168.200.2
WARNING: interface is ignored: Operation not permitted
ARPING 192.168.200.2 from 192.168.200.4 eth0
Unicast reply from 192.168.200.2 [08:00:27:A6:0C:AC] 0.890ms
Unicast reply from 192.168.200.2 [08:00:27:A6:0C:AC] 0.987ms
vyos@vyos-0003:~$ arping 192.168.200.4
WARNING: interface is ignored: Operation not permitted
ARPING 192.168.200.4 from 192.168.200.4 eth0
Unicast reply from 192.168.200.4 [08:00:27:5A:75:64] 0.762ms
Unicast reply from 192.168.200.4 [08:00:27:5A:75:64] 0.850ms
障害時の検証
vyos-0001 と vyos-0002 に割り当てられた IP を確認します。一般に、一つのインターフェースには IPv4 と IPv6 の混在も含めて複数の IP を設定可能です。ただし、DHCP との混在はできません。
vyos-0001
vyos@vyos-0001# run show interfaces ethernet eth1
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:5a:75:64 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.1/24 brd 192.168.200.255 scope global eth1
valid_lft forever preferred_lft forever
inet 192.168.200.4/24 scope global secondary eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe5a:7564/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
20331 152 0 0 0 0
TX: bytes packets errors dropped carrier collisions
70623 1058 0 0 0 0
vyos-0002
vyos@vyos-0002# run show interfaces ethernet eth1
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:a6:0c:ac brd ff:ff:ff:ff:ff:ff
inet 192.168.200.2/24 brd 192.168.200.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fea6:cac/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
47460 791 0 0 0 774
TX: bytes packets errors dropped carrier collisions
1058 11 0 0 0 0
ここで vyos-0001 を落としてみます。
vyos@vyos-0001:~$ poweroff
vyos-0002 に VIP が移動しました。vyos-0001 を起動すると VIP は元に戻ります。
vyos@vyos-0002# run show interfaces ethernet eth1
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:a6:0c:ac brd ff:ff:ff:ff:ff:ff
inet 192.168.200.2/24 brd 192.168.200.255 scope global eth1
valid_lft forever preferred_lft forever
inet 192.168.200.4/24 scope global secondary eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fea6:cac/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
51600 860 0 0 0 843
TX: bytes packets errors dropped carrier collisions
2858 41 0 0 0 0
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- Ciscoルータの基本操作シスコ社の製品のうち、ルータは Cisco*** という製品名でスイッチは Catalyst*** という製品名です。いずれも *** は機種番号で、数字が小さいほど小規模ネットワーク向けとなっています。例えば資格試験 CCNA Routing and Switching では小規模および中規模ネットワークが対象です。そのため、中小規模のネットワークのルータおよびス
- BIND 9 ゾーンファイル Dynamic Update の設定方法DHCP 環境下などで IP が動的に付与される場合は DNS レコードを動的に更新する必要があります。これを実現する Dynamic Update 機能が BIND 9 には実装されています。使用方法をまとめます。Dynamic Update に対応した DNS を特に Dynamic DNS または DDNS とよぶことがあります。 ゾーンファイルの作成 ローカルホストに example.co...
- VyOS の基本的なルーティング設定本ページでは、複数の LAN をつなぐルータとしての設定方法をまとめます。具体的には、スタティックルーティングおよびダイナミックルーティング (RIP/OSPF/BGP)の設定方法を把握します。 設定方法を検証するための構成 ルーティング設定の検証を行うために VirtualBox で 5 台の VM を用意します。ホスト OS から vyos-0001 へ SSH 接続する部分を除き、「内部ネッ...
- BIND 9.10.2 の公式マニュアルに学ぶ DNS の基本DNS の実装としては Internet Systems Consortium (ISC) の Berkeley Internet Name Domain (BIND) が有名です。本ページは公式サイトの Documentation からダウンロードできる v9.10.2 の PDF マニュアルおよび『DNSの仕組み完全解説』から基本事項を抽出してまとめ
- スタティックルートの設定インターフェイスに IP を設定しただけでは他のデバイスと通信できません。各デバイスにルーティングテーブルを設定する必要があります。ルーティングテーブルの設定方法には動的に自動設定するものと、静的に手動設定するものの二種類があります。ここでは静的に手動設定するスタティックルートの方法を紹介します。 具体的にはまず PC0, PC1, Router0, Router1 それぞれ