仮想ルータ構築 1(vyos・ESXi G/W)

3層Webシステム

インストールメディア入手

vyosはvyosプロジェクトが公開しているオープンソースの仮想ルータです。”vyos-1.5-rolling-202503030030”が今現在で一番新しいのでこれをダウンロードします。

VyOS Community

ダウンロートしたisoイメージはESXiのデータストアにアップロードします。

ESXiゲートウェイ構築

ESXi内外のゲートウェイとなる最上位の仮想ルータ(ESXiゲートウェイ)を構築します。

ESXiゲートウェイは本番サイトに含まれませんが、ESXi外部(PC)と本番サイトの経路にあるため冗長構成をとります。ESXiゲートウェイの構成は以下の通りです。

設定項目仮想ルータ(MASTER)仮想ルータ(BACKUP)
仮想マシン名(ホスト名)rt001rt002
ネットワークアダプタ1 ポートグループGlobal NetworkGlobal Network
ネットワークインターフェース1(eth0)IPアドレス192.168.11.201/24192.168.11.202/24
ネットワークインターフェース1(eth0)仮想IPアドレス192.168.11.200/24192.168.11.200/24
ネットワークアダプタ2 ポートグループESXi Rooting NetworkESXi Rooting Network
ネットワークインターフェース2(eth1)IPアドレス172.16.1.11/24172.16.1.12/24
ネットワークインターフェース2(eth1)仮想IPアドレス172.16.1.10/24172.16.1.10/24

仮想マシン作成

ESXiコンソール画面左の「仮想マシン」をクリック、画面左上部にある「仮想マシンの作成/登録」をクリックして仮想マシンの作成します。仮想マシン作成ウィザード各画面の設定は以下の通りです。

Select a name and guest OS

設定項目設定値
名前rt001
互換性ESXi 6.5 仮想マシン
ゲストOSファミリその他
ゲストOSのバージョンFreeBSD(64bit)

Custmize settings

追加操作:画面上部「ネットワーク・アダプタの追加」を1回クリック

設定項目設定値
CPU1
メモリ1024 MB
ハードディスク 1(SIZE)8 GB
 ディスク・プロビジョニングシン プロビジョニング
ネットワーク アダプタ 1Global Network
新しいネットワーク アダプタESXi Rooting Network
CD/DVD Drive 1Datastore ISO file
 CD/DVD Media[データストア・アップロード・ディレクトリ]/vyos-1.5-rolling-202503030030-generic-amd64.iso

Ready to complete

設定内容の確認を行います。問題がなければ「完了」をクリックして仮想マシンを作成します。

仮想マシン作成ウィザード画面が閉じて仮想マシン管理画面に戻るので最後に一覧にrt001が作成されていることを確認して完了です。

rt001と同じ手順でrt002の仮想マシンも作成します。

vyosインストール

仮想マシンを起動してブラウザコンソールを開きます。しばらくするとインストール開始画面が表示されるのでデフォルトのKVM Consoleを選択したままEnterを押下します。

ログインプロンプトが表示されたらvyosアカウント(初期パスワードvyos)でログインして以下のコマンドでインストールを開始します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
install image

vyosのインストールは対話形式で進めます。y/nを入力する項目はy(1か所だけY)、デフォルト値の上書きを入力する項目はそのままEnterキーを押下します。3番目と4番目の項目はvyosアカウントの新しいパスワードを入力します。

インストールが終わったらvyosをリブートします。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
sudo reboot

仮想ルータ構成

ESXiゲートウェイ外側インターフェース設定

仮想ルータのOS再起動後、vyosアカウントでログインしてインターフェースの状態を確認します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
show interfaces

eth0は仮想マシンを作るときにポートグループ”Global Network”を割り当てた1番目のネットワーク・アダプタ、eth1はポートグループ”ESXi Rooting Network”を割り当てた2番目のネットワーク・アダプタです。eth0がESXiゲートウェイ外側インターフェース、eth1がESXiゲートウェイ内側インターフェースになります。

編集モードに移行してeth0のIPアドレスとデフォルトゲートウェイを設定します。デフォルトゲートウェイのIPアドレスはインターネットに接続されている物理ルータのLAN側IPアドレスです。

【rt001で設定】
-----------------------------------------------------------------------------
# 編集モードに遷移
configure

# eth0にIPアドレスとサブネットマスク長を設定
set interfaces ethernet eth0 address 192.168.11.201/24


# デフォルトゲートウェイに物理ルータのLAN側IPアドレスを設定
set protocols static route 0.0.0.0/0 next-hop 192.168.11.1

# 変更を確定
commit


-----------------------------------------------------------------------------
【rt002で設定】
-----------------------------------------------------------------------------
configure
set interfaces ethernet eth0 address 192.168.11.202/24
set protocols static route 0.0.0.0/0 next-hop 192.168.11.1
commit

PCでコマンドプロンプトを立ち上げrt001、rt002にpingが通ることを確認します。

【PCから実行】
-----------------------------------------------------------------------------
ping -n 2 192.168.11.201
ping -n 2 192.168.11.202

sshの有効化とホスト名の設定を行います。

【rt001で設定】
-----------------------------------------------------------------------------
# sshを有効化
set service ssh

# ホスト名を指定
set system host-name rt001

# 設定変更を確定
commit

# 設定を保存
save

-----------------------------------------------------------------------------
【rt002で設定】
-----------------------------------------------------------------------------
set service ssh
set system host-name rt002
commit
save

PCでteratermを立ち上げてvyosアカウントでrt001(192.168.11.201)、rt002(192.168.11.202)にログインします。

ログインに成功したらESXiのブラウザコンソールは不要です。exitコマンドを繰り返し入力してOSからログアウト、右上化の”×”ボタンをクリックしてブラウザコンソールを閉じます。

ここからの作業はteratermで行います。VRRPグループ を作成してESXiゲートウェイ外側の通信を冗長化します。

【rt001で設定】
-----------------------------------------------------------------------------
# 編集モードに遷移
configure

# VRRPグループvlan10(vrid 10)を定義
set high-availability vrrp group vlan10 vrid 10

# vlan10のインターフェースにeth0を設定
set high-availability vrrp group vlan10 interface eth0

# vlan10の仮想IPアドレスを定義
set high-availability vrrp group vlan10 address 192.168.11.200/24

# プライオリティを設定
set high-availability vrrp group vlan10 priority 200

# アドバタイズ間隔(秒単位)を設定
set high-availability vrrp group vlan10 advertise-interval 1

# 設定変更を確定
commit


-----------------------------------------------------------------------------
【rt002で設定】
-----------------------------------------------------------------------------
configure
set high-availability vrrp group vlan10 vrid 10
set high-availability vrrp group vlan10 interface eth0
set high-availability vrrp group vlan10 address 192.168.11.200/24
set high-availability vrrp group vlan10 priority 100
set high-availability vrrp group vlan10 advertise-interval 1
commit

rt001、rt002から仮想IPアドレス(192.168.11.200)へのping疎通を実行し、問題がなければ設定を保存します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
ping -c 2 192.168.11.200
save

ESXiゲートウェイ内側インターフェース設定

ESXiゲートウェイ内側のインターフェースのIPアドレス設定と通信の冗長化を行います。

【rt001で設定】
-----------------------------------------------------------------------------
set interfaces ethernet eth1 address 172.16.10.11/24
set high-availability vrrp group vlan20 vrid 20
set high-availability vrrp group vlan20 interface eth1
set high-availability vrrp group vlan20 address 172.16.1.10/24
set high-availability vrrp group vlan20 priority 200
set high-availability vrrp group vlan20 advertise-interval 1
commit


-----------------------------------------------------------------------------
【rt002で設定】
-----------------------------------------------------------------------------
set interfaces ethernet eth1 address 172.16.10.12/24
set high-availability vrrp group vlan20 vrid 20
set high-availability vrrp group vlan20 interface eth1
set high-availability vrrp group vlan20 address 172.16.1.10/24
set high-availability vrrp group vlan20 priority 100
set high-availability vrrp group vlan20 advertise-interval 1
commit

rt001、rt002からネットワーク・インターフェースのIPアドレスと仮想IPアドレスにping疎通確認を行い問題がなければ設定を保存、編集モードを終了します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
ping -c 2 172.16.10.11
ping -c 2 172.16.10.12
ping -c 2 172.16.10.10
save
exit

“show vrrp”コマンドでVRRPの状態を確認します。rt001がMASTER、rt002がBACKUPとなっていればOKです。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
show vrrp


-----------------------------------------------------------------------------
【rt001実行結果】
-----------------------------------------------------------------------------
vyos@rt001:~$ show vrrp
Name Interface VRID State Priority Last Transition
------ ----------- ------ ------- ---------- -----------------
vlan10 eth0 10 MASTER 200 1m23s
vlan20 eth1 20 MASTER 200 1m20s
vyos@rt001:~$


-----------------------------------------------------------------------------
【rt002実行結果】
-----------------------------------------------------------------------------
vyos@rt002:~$ show vrrp
Name Interface VRID State Priority Last Transition
------ ----------- ------ ------- ---------- -----------------
vlan10 eth0 10 BACKUP 100 42s
vlan20 eth1 20 BACKUP 100 42s
vyos@rt002:~$

VRRP同期グループ設定

各インターフェースの冗長化は完了しましたが、eth0、eth1それぞれ個別に冗長化されている状態です。

この状態はどちらかのインターフェースに障害が発生した場合、そのインターフェースのみがBACKUP側に切り替わり、もう片方のインターフェースはMASTER側に残ったままとなってしいます。

同期グループを定義して両方のインターフェースが切り替わるように設定します。

【rt001、rt002で設定】
-----------------------------------------------------------------------------
# 編集モードに遷移
configure

# 高可用性VRRPの編集
edit high-availability vrrp

# 同期グループMAINのメンバーにvlan10を設定
set sync-group MAIN member vlan10

# 同期グループMAINのメンバーにvlan20を設定
set sync-group MAIN member vlan20

# 設定変更を確定
commit

# 設定を保存
save

high-availability構成の内容は”show high-availability”コマンドで確認することができます。

【rt001実行結果】
-----------------------------------------------------------------------------
vyos@rt001# show high-availability
vrrp {
group vlan10 {
address 192.168.11.200/24 {
}
advertise-interval 1
interface eth0
priority 200
vrid 10
}
group vlan20 {
address 172.16.1.10/24 {
}
advertise-interval 1
interface eth1
priority 200
vrid 20
}
sync-group MAIN {
member vlan10
member vlan20
}
}
[edit]

上はrt001の出力ですが、rt002の出力内容もほぼ同じです。ただしrt002のプライオリティにはvlan10、vlan20とも100が設定されています。

DNS設定

仮想ルータにDNSを設定、ESXiゲートウェイ自身をDNSサーバとしてESXi内部からのリクエストを処理できるようにフォワーダーを構成します。

【rt001で設定】
-----------------------------------------------------------------------------
# 仮想ルータのDNSを設定
set system name-server 192.168.11.1

# DNSクエリ転送先に仮想ルータ自身のDNSを設定
set service dns forwarding system

# DNSクエリをリスニングするIPアドレスを設定
set service dns forwarding listen-address 172.16.1.10
set service dns forwarding listen-address 172.16.1.11


# DNSクエリのリクエストを許可するクライアントを指定
set service dns forwarding allow-from 172.16.0.0/16

# 設定変更を確定
commit


-----------------------------------------------------------------------------
【rt002で設定】
-----------------------------------------------------------------------------
set system name-server 192.168.11.1
set service dns forwarding system
set service dns forwarding listen-address 172.16.1.10
set service dns forwarding listen-address 172.16.1.12
set service dns forwarding allow-from 172.16.0.0/16
commit

nslookupコマンドでNICT公開NTPのURLに対する名前解決とping疎通を確認し、問題がなければ設定を保存します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
nslookup ntp.nict.jp
ping -c 2 ntp.nict.jp
save

NTP設定

時刻同期するタイムサーバをNICT公開NTP、NTPクライアントはESXi内部からのみ許可しするよう仮想ルータのNTPを設定します。

【rt001、rt002で設定】
-----------------------------------------------------------------------------
# NTPの設定を削除
delete service ntp

# 時刻問合せを許可するクライアントのネットワークを指定
set service ntp allow-client address 172.16.0.0/16

# 上位NTPサーバを指定
set service ntp server ntp.nict.jp pool

# 設定変更を確定
commit

NTPの設定内容を確認する場合は”show service ntp”を実行します。

【rt001実行結果】
-----------------------------------------------------------------------------
vyos@rt001# show service ntp
allow-client {
address 172.16.0.0/16
}
server ntp.nict.jp {
pool
}
[edit]

chronyを再起動してNTPの設定を反映します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
sudo su - -c 'systemctl restart chrony.service'

時刻同期の状況を確認します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
chronyc sources

【rt001実行結果】
-----------------------------------------------------------------------------
vyos@rt001# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp-a3.nict.go.jp 1 6 17 12 -124us[ -176us] +/- 2900us
^+ ntp-b2.nict.go.jp 1 6 17 12 +44us[-3419ns] +/- 2881us
^+ ntp-k1.nict.jp 1 6 17 12 +130us[ +81us] +/- 7594us
^+ ntp-a2.nict.go.jp 1 6 17 12 +19us[ -33us] +/- 2775us
[edit]
vyos@rt001#

ntp.nict.jpとの時刻同期が正常にできていることを確認して設定を保存します。

【rt001、rt002で実行】
-----------------------------------------------------------------------------
save

ESXiゲートウェイの初期設定はこれで終わりです。次は本番サイト・ゲートウェイを構築します。

コメント

タイトルとURLをコピーしました