OSSで開発されているネットワークOS(Wikipediaの説明より)であるVyOSを使って、仮想環境上にルーターを構築してみる。
VyOSはDebianベースで動作するOSで、VMにインストールすることができる。
ちなみにLinux(CentOS)をルーターにするには以下参照。
社内のハンズオンイベントで扱ったりひよこ本にも載ってたりしててVyOS触っておきたいなーと思いつつタスク積んでいたけど、Linuxにスタティックルートの設定をする際にこれあった方が絶対によさそうだったのでようやく自宅ラボに導入しようとしてます。。
ちなみに本記事ではVyOSのイメージの入手とOSインストール、OSインストール後のIPアドレス設定と外部からssh接続できるようにする設定までです。
Rolling Release版のVyOS イメージの入手
「Rolling Release」であればISOのダウンロードページにすぐたどり着く。
なんだけど、初めてなのでLTS(2021.04.07時点でv1.2.7)を使いたい。
なんだけど、ここを見ると全部有償版に見える。。。
ハテ…と思ってドキュメントのinstallationのページを見てみると、
登録すればダウンロードできるっぽい?
Registered subscribers can log into https://support.vyos.io/ to have access to a variety of different downloads via the “Downloads” link. These downloads include LTS (Long-Term-Support) and associated hot-fix releases, early public access releases, pre-built VM images, as well as device specific installation ISOs.
というわけで、ここからユーザー登録。
・・・してみたけど、やっぱりLTSのダウンロードページを見つけられない。
ということであきらめて、現在の最新版を使ってみる。
最初にも書いたけど「Rolling Release」->「Downloading Rolling Release」で1.4のISOファイルダウンロードページにたどり着く。
「latest」をダウンロードするとあとからわからなくなるので、2021.04.07時点で最新の「vyos-1.4-rolling-202104061641-amd64.iso」をゲット。(中身はlatest)
ちなみにOVAファイルも配布されてたけど、1.1.8で妙に古かったのでスルー。
VMの作成
インストールのドキュメントは以下。
The minimum system requirements are 512 MiB RAM and 2 GiB storage. Depending on your use you might need additional RAM and CPU resources e.g. when having multiple BGP full tables in your system.
マシンスペックは掲載されてるけど、ESXiで作る際の「ゲストOSのバージョン」はいまいち。ベースはDebianだけどバージョンがわからず。
あとで変更できるし、とりあえず「Debian GNU/Linux 10 (64bit)」で作成。
(ちなみに以下の通り10.9
なので最新版のイメージであれば選択するDebianバージョンも最新でたぶん大丈夫)
vyos@vyos:~$ cat /etc/debian_version 10.9
今回はルーターとして動かしたいのでNICを2個セット。
マシンスペックはそんなに必要ないみたいだけど、一応こんな感じ。
install
CDブートするとLive Linux状態で使用可能になる。
VMにインストールするには「Permanent installation」の項を参照
電源投入するとログイン待ち状態になるので、ユーザー名・パスワードはどちらもvyos
を入力しコンソールログインする。
インストールするにはinstall image
を実行。
聞かれる質問は以下の通り。基本デフォルトで問題ない。
- Would you like to continue? (Yes/No) [Yes]:
- Partition (Auto/Parted/Skip) [Auto]:
- Install the image on? [sda]:
- This will destroy all data on /dev/sda. Continue? (Yes/No) [No]: Yes
- How big of a root partition should I create? (2000MB - 4294MB) [4294]MB:
これでCreating filesystem on /dev/sda1 と表示されパーティションが作成される。
- What would you like to name this image? [1.4-rolling-202104061641]:
- Which one should I copy to sda? [/opt/vyatta/etc/config/config.boot]:
- Enter password for user 'vyos': <管理ユーザー"vyos"のパスワードを入力する>
- Retype password for user 'vyos':
- Which drive should GRUB modify the boot partition on? [sda]:
Setting up grub: と出てOK
と表示されれば処理完了。
poweroff
してシャットダウンし、isoファイルをVMから取り外す。
設定
ディスクから起動したらvyosユーザーでログイン。
主要な設定はQuick Startを参照。
IPアドレス設定
NICを2個乗せているので、ip a
で2つあることを確認(このコマンドでいいんだっけ 後述)し、eth0
とeth1
がそれぞれVMのどのNICかをESXiのネットワークアダプタのMACアドレスを見て確認する。
configure
を実行して設定モードに変更。
vyos@vyos:~$ configure [edit] vyos@vyos#
これはプロンプトが以下の2行になるって感じかな。。
[edit] vyos@vyos#
で、eth0のアドレス設定。
172.16.1.3
でサブネットは/23
。
DHCPはオフになってるので特にdelete
の必要はない。
set interfaces ethernet eth0 address 172.16.1.3/23
eth1は別途設定するので未設定のまま残しておく。
set
を実行したらshow
で内容を確認できる。
問題無ければ、commit
で適用し、save
で保存する。
(commit
を実行した時点で設定が反映されるので他のホストからping
などで反応できる。ただしsave
しないとreboot
で設定は消える)
設定確認
最初ip a
を使って確認してた…
vyos@vyos:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 fe80::200:ff:fe00:0/64 scope link 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 mq state UP group default qlen 1000 link/ether 00:0c:29:3b:48:8c brd ff:ff:ff:ff:ff:ff inet 172.16.1.3/23 brd 172.16.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe3b:488c/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:3b:48:96 brd ff:ff:ff:ff:ff:ff inet6 fe80::20c:29ff:fe3b:4896/64 scope link valid_lft forever preferred_lft forever
けどここはネットワークOSらしく、show interfaces
を使おう。
vyos@vyos:~$ show interfaces Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 172.16.1.3/23 u/u eth1 - u/u lo 127.0.0.1/8 u/u ::1/128
sshサーバー
以降の作業用にsshサーバーを有効にする。
IPアドレスと同様configure
で設定モードで実行する。
vyos@vyos:~$ configure [edit] vyos@vyos#
set service ssh
これを実行し、IPアドレスの設定と同様にcommit
とsave
すれば、他のホストからsshで接続できるようになる。
zaki@ubuntu-node:~$ ssh vyos@172.16.1.3 The authenticity of host '172.16.1.3 (172.16.1.3)' can't be established. ECDSA key fingerprint is SHA256:O03Yp97VsV5iOpw+BrW/tUvQH6l3ritn1+njB8rR9CE. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '172.16.1.3' (ECDSA) to the list of known hosts. Welcome to VyOS vyos@172.16.1.3's password: Linux vyos 5.10.27-amd64-vyos #1 SMP Sun Apr 4 22:05:07 UTC 2021 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. vyos@vyos:~$
というわけで、VyOSをインストールしてeth0のみアドレス設定完了。
現在の構成はこんな感じ。
ルーターの設定などは次回で。。