T4gインスタンスにIPv6を有効にしてSoftEther VPN Server を構築する


SoftEther VPN Serverをなるべく安く構築したいと思い、AWSのT4gインスタンスに構築してみました。IPv6も使えるようにしています。

IPv6 CIDRの追加とルートテーブルの設定

EC2へインスタンスを構築する前に、VPCでIPv6を利用できるようにする必要があります。

VPCへIPv6 CIDRを追加

VPCコンソールのVPCを開き、「CIDRの編集」をクリックします。

「新しいIPv6 CIDRの追加」をクリックし、Amazon提供のIPv6 CIDRブロックにチェックが入っている状態で「CIDRの選択」をクリックすると、VPCにIPv6 CIDR(/56)が割り当てられます。

サブネットへIPv6 CIDRを追加

次に、サブネットにもIPv6アドレスを割り当てます。
VPCコンソールのサブネットを開き、「IPv6 CIDRの編集」をクリックします。

「IPv6 CIDRを追加」をクリックし、2桁の16進数字(00~FF)を入力して保存をクリックします。

続いて、「IPv6 CIDRの編集」の上にある、「自動割り当てIP設定の変更」をクリックします。その中の、IPv6アドレスの自動割り当てを有効にするにチェックを入れ、保存をクリックします。

必要であれば、VPCが持つ他のサブネットにも前述の作業を実施しましょう。ちなみに、VPCに割り当てられるIPv6 CIDRは/56固定、サブネットに割り当てられるIPv6 CIDRは/64固定で、変更することはできません。

IPv6のルートテーブルを追加

VPCコンソールのルートテーブルを開き、IPv6 CIDRを追加したVPCのルートテーブルを選択します。ルートタブにある、ルートの編集をクリックします。

::/0に対し、Internet Gatewayへのルートを設定します。

EC2インスタンスの生成

さて、EC2インスタンスを生成します。今回はなるべく安く構築するため、minimalイメージを利用し、EBSの容量削減を図ります。

EC2コンソールのAMIを開き、左上の自己所有と書かれている部分をクリックしパブリックイメージに切り替えます。「amzn2-ami-minimal」と検索し、出てきたイメージのAMIを選択して起動します。この時、所有者がamazonと書かれていることを確認してください。

インスタンスタイプは、t4g.nanoを使用します。インスタンスの詳細の設定画面では、IPv6が使われるようになっていることを確認します。また、必要であればIPv6アドレスを任意で指定してください。

ストレージのボリュームタイプはgp3、容量は3GBで作成します。IOPSの初期値が4000になっているため、3000に変更してください。
セキュリティグループはとりあえずSSHできるように設定します。

SoftEther VPN Serverのインストール

SSHでインスタンスにログインします。SSHクライアントソフトによるかもしれませんが、TeraTermでIPv6アドレスで接続する際は、IPv6アドレスを[]で囲まないと認識しないため注意してください。

インスタンスにログイン後、SoftEther VPN Serverをインストールします。x86系はバイナリファイルがあるのですが、Arm系のバイナリは用意されていないため、ソースコードからビルドする必要があります。公式サイトの手順に沿って実施します。

SoftEtherに必要なパッケージのインストール

sudo yum -y install -y wget
sudo yum -y groupinstall "Development Tools"
sudo yum -y install readline-devel ncurses-devel openssl-devel

SoftEtherのソースコードのダウンロード

GitHubからダウンロードもできますが、今回は公式サイトで配布されているものを利用します。
https://ja.softether.org/5-download/src

wget <コピーしたリンクを貼り付け>

今回ダウンロードしたファイルは、「softether-src-v4.34-9744-beta.tar.gz」です。違うファイルをダウンロードした場合は以降読み替えて利用してください。
ダウンロードしたファイルは展開しておきます。

tar xzvf softether-src-v4.34-9744-beta.tar.gz

SoftEtherのインストール

cd v4.34-9744/
./configure
make

makeすると、以下のようなエラーが出ました。-m64のオプションが理解できない、と。何故!!!

cc: error: unrecognized command line option ‘-m64’
make: *** [tmp/objs/Mayaqua/Cfg.o] Error 1

調べたところ、Arm系のgccにはm64オプションがないとのこと。この対処でいいのかよく分かりませんが、Makefileから-m64を消したらうまくいきました。

vi Makefile

vimで、m64の文字列を探し、手動で消します。私の環境では4か所ありました。

Makefileを保存したら、インストール作業を続行します。

make
sudo make install

SoftEtherの自動起動の設定

sudo vi /etc/systemd/system/vpnserver.service
vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=/usr/bin/vpnserver start
ExecStop=/usr/bin/vpnserver stop
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target
sudo systemctl start vpnserver
sudo systemctl enable vpnserver

SoftEther VPN Serverの設定

インストールが終わったら、SoftEther VPN Server Managerから設定を行います。煮るなり焼くなりお好きにどうぞ。

おわりに

当初の予定では、手持ちのYAMAHA RTX1210とL2TPv3で拠点間接続するところまでやりたかったのですが、何故かうまくいかなかったため諦めました。。。現在strongSwanの勉強中です。

[追記]strongSwanで拠点間接続する記事を書きました。
https://qiita.com/kerorinfather/items/d92c6a489a0b38ac081d

参考にしたサイト

SoftEther VPN を UNIX 上でビルドする方法