VyOS は Debian GNU/Linux をもとにしたオープンソースの OS です。かつて無償提供されていた Vyatta Core から fork して開発されています。ルーティングソフトウェア Quagga やこちらのページに記載した OpenVPN を利用した、ソフトウェアルータとしての機能を有しています。AWS EC2 の AMI も Marketplace で提供されており様々な環境で利用できますが、ここではこちらのページで基本的な利用方法をまとめた VirtualBox に VyOS の ISO イメージをインストールして利用します。
こちらのページと同様に新規に仮想マシンを作成します。
こちらの一覧から最新バージョンの amd64.iso
をダウンロードしてインストールします。2017/1/9 時点の最新バージョンは 1.1.7 です。起動後にログインするための ID とパスワードは以下のとおりです。
vyos
vyos
ISO イメージの Live-CD 上で動作していることを確認します。
$ show system image
System running on Live-CD
ディスクにインストールするために、以下のコマンドを実行します。ユーザーガイドにも記載のとおり Yes または既定値を指定して進めます。
$ install image ← install system ではありません
reboot
すると再び Live-CD から起動してしまうため、ここでは一度仮想マシンを停止します。
$ poweroff ← halt は使用できません
停止後、仮想マシンの「設定」→「ストレージ」→「vyos-1.1.7-amd64.iso
を右クリック」→「割り当てを除去」によって、Live CD を取り外します。この状態で再度仮想マシンを起動して VyOS 1.1.7 linux (KVM Console)
を選択します。ログイン後、以下のコマンドを実行すると、先程インストールしたイメージが利用されていることが確認できます。
$ show system image
...
1: 1.1.7 (default boot)
こちらのページで使用方法を把握した Cisco ルータの基本コマンドと似たようなコマンドで操作できます。例えば ?
または tab 入力によって候補を表示できます。更に ?
または tab 入力によって、候補毎のヘルプが表示されます。加えて、Linux の基本的なコマンドも使用できます。これらのコマンドを利用して VyOS の初期設定を行います。現在の全設定を表示するためには以下のコマンドを実行します。
$ show configuration
特権モードに入ってから同様の確認を行うためには run
を付与します。
$ configure
# run show configuration
# exit
$ show configuration
様々な設定方法が考えられますが、ここではゲスト OS である VyOS の eth0 が NAT 設定である場合を考えます。
VyOS の eth0 は VirtualBox を起動しているホスト OS とは別のネットワークに所属しています。そのネットワーク内には VirtualBox が提供する DHCP サーバが存在します。eth0 には DHCP によってネットワーク内で有効なプライベート IP を付与できます。更にネットワーク内には VirtualBox が提供する仮想ルータが存在します。VyOS はこの仮想ルータの NAT によって VirtualBox を起動しているホスト OS の IP を利用して外のネットワークと通信します。
VyOS から外のネットワークへの通信を開始する場合はこれで問題ありませんが、外部から VyOS が所属するネットワーク内への SSH 通信を開始するためには、仮想ルータにポートフォワーディングを設定しておく必要があります。「設定」→「ネットワーク」→「アダプター 1」→「高度」→「ポートフォワーディング」→「Rule 1 TCP 2222 を 22 に転送」
初期設定では dhcp 設定が存在しませんので、以下のコマンドを実行します。特権モードに入ります。
$ configure
dhcp 設定を eth0 に登録します。
# set interfaces ethernet eth0 address dhcp
show
で差分を確認して commit
で確定します。
# show interfaces ethernet eth0
+address dhcp
duplex auto
hw-id 08:00:27:8c:9a:7b
smp_affinity auto
speed auto
# commit
プライベート IP が付与されたことを確認します。
# run show interfaces ethernet eth0
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:8c:9a:7b brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe8c:9a7b/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
34318 378 0 0 0 0
TX: bytes packets errors dropped carrier collisions
32084 276 0 0 0 0
再起動時に設定が消えないようにします。
# save
初期設定では ssh サービスが開始されていませんので、以下のコマンドを実行します。特権モードに入ります。
$ configure
SSH 設定を有効にします。
# set service ssh
差分を確認して確定します。
# show service
+ssh {
+ port 22
+}
# commit
再起動時に設定が消えないようにします。
# save
ホスト OS から接続するためには以下のコマンドを実行します。
$ ssh vyos@127.0.0.1 -p 2222
# set system login user mynewuser authentication plaintext-password mypassword
# show system login
# commit
# show system login
# save
# set system login user mynewuser authentication plaintext-password mypassword2
commit
前の取消# discard
# delete system login user mynewuser
次回ログイン時に確認できます。
# set system host-name myhostname
VyOS の設定はファイルシステムのように階層構造になっています。初期状態では最上位から絶対パスのような指定方法で設定を変更しますが edit
コマンドで編集中の階層を最上位から変更できます。
# edit system
一つ上の階層に移動できます。
# up
最上位に移動するコマンドもあります。
# top
VirtualBox の設定が NAT の場合は VirtualBox が提供する DHCP サーバが存在します。一方、ブリッジの場合はホスト OS と同じネットワークに所属することになるため DHCP サーバが存在しないことがあります。存在しない場合は以下のコマンドで IP を付与する必要があります。ホスト OS が所属するネットワークのアドレスは 192.168.179.0/24
であるとします。
# set interfaces ethernet eth1 address 192.168.179.200/24
# commit
# run show interfaces ethernet eth1
これで eth1 によってホスト OS のネットワーク内で通信できるようになりました。ネットワークの外に出て通信するためには、更にデフォルトゲートウェイを設定する必要があります。DHCP サーバーから IP を取得する場合は、DHCP サーバーから提供されていた情報です。ホスト OS の環境設定からデフォルトゲートウェイを調べて、同じ値を設定します。
# set system gateway-address 192.168.179.1
# commit
これで外部との通信が可能になりました。
# ping www.example.com