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
[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