UTMにVyOSとWireGuardを入れてみる

これは Opt Technologies Advent Calendar 2019 5日目の記事です。

4日目の記事は abe-ma さんによる OneLoginとSwitch RoleでAWSのログインできるようにした です。

概要

何かイーサネットポートが沢山ある NUC とかで遊びたいな〜と思っていたところ、Intel CPU を搭載した一昔前の UTM が安く転がっていることに気づきました。

そのため、OpenVPNIPSec を置き換えるかもと最近注目されている WireGuard1VPN 接続できるようにしてみようと思います。

OpenVPN では AES-NI に対応した CPU でなければ速度が出ない気がしますが、WireGuard は暗号化方式が違うのであまり影響しないと思っています。

ハードウェア

本体には SG105a と記載されています。 おそらく UTM100std という型番も OEM で存在します。

f:id:kadokusei:20191205212610p:plain

f:id:kadokusei:20191205212621p:plain

スペック
CPU Atom E3826
RAM DDR3 2GB
ROM SSD 64GB
インターフェイス ギガビットイーサネット * 4
USB * 2
シリアルコンソール
VGA

ソフトウェア

VyOS をインストールしました。

いつのまにかサブスクリプションなしでダウンロードできるイメージはローリングリリースになっていたのでダウンロード時の最新版を選んでいます。

vyos-1.2-rolling-201912030217-amd64.iso

vyos.io

VyOSの導入

元々 UTM に入っている OS は大抵ライセンスが必要なので吹き飛ばす前提で進めていきます。

実際 Sophos という会社の OS が起動してきましたがライセンスを要求してきたのでそっと電源を落としました。

インストール

ダウンロードしたイメージをUSBメモリに焼きます。

Mac であれば dd コマンドでもなんでも良いのですが、個人的には Etcher が良いと思っています(これについては書きません)

USB ポートにイメージを焼いた USB メモリを挿したところ普通に VyOS が起動しました(起動の優先順位は本当にそれで良いのか…?)

ログインが必要なので vyos / vyos でログインし、以下のコマンドでインストールを開始します。

install image

基本的に Yes を選んでいけば何も問題なく、パスワードを聞かれたら任意のものを入力します。

終わったら poweroff コマンドで電源を落とし、USB メモリを取り外して再度起動するとインストール完了です。

サーバー側の設定

こんなイメージのネットワークを目指しますが、ひとまずはお試しという形です。

f:id:kadokusei:20191205212730p:plain

前提として VyOS は configure で設定モードに移行し、commit で反映、save で保存を行います。

IPアドレスの設定

インターフェイスに適当な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 で以下をインストールします。

WireGuard

WireGuard

  • WireGuard Development Team
  • ユーティリティ
  • 無料
apps.apple.com

接続設定

インストールしたクライアントを起動し、Add Empty Tunnel から新規トンネルを追加します。

f:id:kadokusei:20191205214657p:plain

トンネルを新規作成すると Public keyPrivateKey が表示されています。(どうせ消すので見えても大丈夫)

PublicKey は上記のサーバー側に設定を入れる必要があります。

f:id:kadokusei:20191205214938p:plain

また、以下のような設定を記載します。

[Interface]
PrivateKey = ******************************************** (最初から入っている)

[Peer]
PublicKey = [サーバー側で生成した鍵]
Endpoint = 192.168.100.1:12345

適当な名前をつけて設定を保存すると接続できました。

f:id:kadokusei:20191205220033p:plain

以上で当初の目的は達成です。

最後に

VyOS の機能として WireGuard が搭載されているので特に変なことをすることもなく接続することができました。

自宅ネットワークなどに入れる前に簡単に試した感じなので設定も必要最低限ですが、もう少し複雑になってもそれほどは困らないんじゃないかな?と思っています。

もう少し触ってみないとわからないですが、 OpenVPN は設定が大変すぎたのでユースケースに合えば乗り換えていきたいと思いました。

あとは Advent Calendar に間に合わせるためにかなり手を抜いて書いた 速度が計測できていないので、ちゃんと自宅に設置して確認したいですね。

いつか記事を更新するか別記事で書くかもしれません(小声)

6日目の担当は yamashita1238 です。


  1. Cloudflare が最近提供し始めた WARP にも採用されている