UTMにVyOSとWireGuardを入れてみる
これは Opt Technologies Advent Calendar 2019 5日目の記事です。
4日目の記事は abe-ma さんによる OneLoginとSwitch RoleでAWSのログインできるようにした です。
概要
何かイーサネットポートが沢山ある NUC とかで遊びたいな〜と思っていたところ、Intel CPU を搭載した一昔前の UTM が安く転がっていることに気づきました。
そのため、OpenVPN や IPSec を置き換えるかもと最近注目されている WireGuard1 で VPN 接続できるようにしてみようと思います。
OpenVPN では AES-NI に対応した CPU でなければ速度が出ない気がしますが、WireGuard は暗号化方式が違うのであまり影響しないと思っています。
ハードウェア
本体には SG105a と記載されています。 おそらく UTM100std という型番も OEM で存在します。
スペック | |
---|---|
CPU | Atom E3826 |
RAM | DDR3 2GB |
ROM | SSD 64GB |
インターフェイス | ギガビットイーサネット * 4 |
USB * 2 | |
シリアルコンソール | |
VGA |
ソフトウェア
VyOS をインストールしました。
いつのまにかサブスクリプションなしでダウンロードできるイメージはローリングリリースになっていたのでダウンロード時の最新版を選んでいます。
vyos-1.2-rolling-201912030217-amd64.iso
VyOSの導入
元々 UTM に入っている OS は大抵ライセンスが必要なので吹き飛ばす前提で進めていきます。
実際 Sophos という会社の OS が起動してきましたがライセンスを要求してきたのでそっと電源を落としました。
インストール
ダウンロードしたイメージをUSBメモリに焼きます。
Mac であれば dd
コマンドでもなんでも良いのですが、個人的には Etcher が良いと思っています(これについては書きません)
USB ポートにイメージを焼いた USB メモリを挿したところ普通に VyOS が起動しました(起動の優先順位は本当にそれで良いのか…?)
ログインが必要なので vyos / vyos でログインし、以下のコマンドでインストールを開始します。
install image
基本的に Yes を選んでいけば何も問題なく、パスワードを聞かれたら任意のものを入力します。
終わったら poweroff
コマンドで電源を落とし、USB メモリを取り外して再度起動するとインストール完了です。
サーバー側の設定
こんなイメージのネットワークを目指しますが、ひとまずはお試しという形です。
前提として VyOS は configure
で設定モードに移行し、commit
で反映、save
で保存を行います。
IPアドレスの設定
set interface ethernet eth0 192.168.1.1/24
SSH接続の有効化
必要であれば
set service ssh
シリアルコンソールの有効化
反映には再起動が必須な雰囲気でした。
set console device ttyS0 speed 115200
WireGuard
鍵の生成
ひとまずデフォルトのキーペアを作成します。
generate wireguard default-keypair
以下で公開鍵を確認できます。
show wireguard keypairs pubkey default
確認した公開鍵はクライアント側の設定で使用します。
インターフェイスの設定
set interfaces wireguard wg01 address 192.168.100.1/24 set interfaces wireguard wg01 peer <任意の設定名> pubkey <クライアント側のPublicKey> set interfaces wireguard wg01 port 12345
ポートは任意のもので良いですが、ここではこのように設定しています。
ここまでで簡易的ですがサーバー側の設定は完了です。
クライアント側の設定
Mac をクライアントとして設定していきます。
アプリケーションのインストール
App Store で以下をインストールします。
apps.apple.com接続設定
インストールしたクライアントを起動し、Add Empty Tunnel
から新規トンネルを追加します。
トンネルを新規作成すると Public key
と PrivateKey
が表示されています。(どうせ消すので見えても大丈夫)
PublicKey
は上記のサーバー側に設定を入れる必要があります。
また、以下のような設定を記載します。
[Interface] PrivateKey = ******************************************** (最初から入っている) [Peer] PublicKey = [サーバー側で生成した鍵] Endpoint = 192.168.100.1:12345
適当な名前をつけて設定を保存すると接続できました。
以上で当初の目的は達成です。
最後に
VyOS の機能として WireGuard が搭載されているので特に変なことをすることもなく接続することができました。
自宅ネットワークなどに入れる前に簡単に試した感じなので設定も必要最低限ですが、もう少し複雑になってもそれほどは困らないんじゃないかな?と思っています。
もう少し触ってみないとわからないですが、 OpenVPN は設定が大変すぎたのでユースケースに合えば乗り換えていきたいと思いました。
あとは Advent Calendar に間に合わせるためにかなり手を抜いて書いた 速度が計測できていないので、ちゃんと自宅に設置して確認したいですね。
いつか記事を更新するか別記事で書くかもしれません(小声)
6日目の担当は yamashita1238 です。
-
Cloudflare が最近提供し始めた WARP にも採用されている↩