Edited at

EC2に構築するSofteatherは便利で良いぞ!

久しぶりに記事投稿します。

インフラやってる人です。

今回のテーマはVPN環境構築です。

オフィス増えたりオフィス移転したりそもそも今のVPNってあんまり使い勝手良くないよね、とか色々あったついでに記事化することにいたしました。

VPNのサーバ構築って難しいですよねーって話もありつつ、何のソフトがいいんだろうっていう話があるのですが、openvpnとSofteatherを試した結果、Softeatherの方が快適でした。

ちなみにopenvpnは過去に何度か試してますが、何度も失敗しています。

(繋がりはするけどルーティングがうまくできないとか、なぜか証明書が通らないとか。)

でも、Softeatherのルーティングは調べた結果、かなりわかりやすいようにみなさん書いていらっしゃるのでとてもやりやすかったです。


Softeather簡易構築手順

SofteatherをEC2インスタンス内に構築する話の簡易手順になります。

簡易って書きながらがっつり書いてますけど…。


参考記事

困ったときは以下の記事を参考にすればだいたいのことが解決するので一度参照すると良いかと思います。


server情報

検証利用のサーバPrivate IP:172.31.10.31 (内部からサーバの設定を見たい場合はこちら)

検証利用のサーバPublic IP:18.182.112.221 (社外からVPNを利用する時はこちら)

VPNのIPアドレス: 10.150.0.1

VPNのDHCP割り当て領域: 10.150.0.0/16

よく記事で見かけるのが 192.168.30.0/24 でした。

社内適用する上でIPのレンジってデフォルトの192.168.30.0/24だと被る環境出てくるんじゃないの?ってことで、VPNのIPやVPNのDHCP割り当て領域を変えてます。

解放しておくポート

UDP:4500 -> 0.0.0.0/0

UDP:500 -> 0.0.0.0/0

TCP:443 -> 社内の自分がつなぐ拠点のみ(172.10.0.0/16)


拠点情報

AWS: 172.31.0.0/16

A拠点: 172.10.0.0/16 <- ぼくのいる拠点

B拠点: 172.11.0.0/16

C拠点: 172.12.0.0/16

ダミーのIPです。


vpnserverの再起動方法

sudo vpnserver stop

sudo vpnserver start


事前準備

softeatherのダウンロードURLですが、以下に保存されています。

欲しいバージョン -> Linux -> Packetix_VPN_Server -> 64bitと進んでいくとファイルがダウンロードできます。

Packetixという名前らしいです。

curl -O https://jp.packetix-download.com/files/packetix/v4.28-9669-beta-2018.09.11-tree/Linux/PacketiX_VPN_Server/64bit_-_Intel_x64_or_AMD64/vpnserver-v4.28-9669-beta-2018.09.11-linux-x64-64bit.tar.gz

永遠のbeta版…。

以下はコマンドを淡々と叩けばOKです

mkdir softeather

mv vpnserver-v4.28-9669-beta-2018.09.11-linux-x64-64bit.tar.gz softeather
cd softeather
sudo yum install gcc
sudo zxvf vpnserver-v4.28-9669-beta-2018.09.11-linux-x64-64bit.tar.gz softeather
cd vpnserver
make

数回 1 enter を押せばOK

cd ../

sudo mv vpnserver /usr/local/
sudo chown root:root -R /usr/local/vpnserver
sudo chmod 600 /usr/local/vpnserver/*
sudo chmod 700 /usr/local/vpnserver/vpncmd
sudo chmod 700 /usr/local/vpnserver/vpnserver
sudo vim /etc/profile

以下をファイルの一番最後に記述

export PATH=/usr/local/vpnserver:$PATH

sudo visudo

以下の通り /usr/local/vpnserver のパスを末尾に追記する

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/vpnserver


構築セットアップ関連


楽して構築したい人向け

以下の記事を参考に作った方が楽かもしれないです。


一旦自力で設定してみたい人向け

ルーティング情報は拠点が多くなるとめんどくさいって後悔しますよ…。

sudo vpnserver start

sudo vpncmd

成功すると vpnserver> という表示に切り替わる

HubCreate main

パスワードを入力 してください

UserCreate {user name} /Group:none /REALNAME:root /NOTE:none

UserPasswordSet {user name}

パスワードを入力 を入力してください

IPSecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no /DEFAULTHUB:main

ここまでは何も考えずに作成してOK

ルーティング情報はカスタマイズが必要なため環境に合わせてのセットアップが必要です。

社内だと多分こんな感じになるのかと思われます。

Dhcpset /Start:10.150.0.2 /End:100.150.255.254 /Mask:255.255.0.0 /Expire:7200 /GW:10.150.0.1 /DNS:10.150.0.1 /DNS2:none /Domain:none /Log:yes /PushRoute:"172.31.0.0/255.255.0.0/10.150.0.1,172.10.0.0/255.255.0.0/10.150.0.1,172.11.0.0/255.255.0.0/10.150.0.1,172.12.0.0/255.255.0.0/10.150.0.1"

SecureNatEnable
SecureNatHostSet /MAC:none /IP:10.150.0.1 /MASK:255.255.0.0
flush
exit


GUIからセットアップしたい人向け

CUIからは不慣れなのでGUIで設定してみたいという人向けにGUIが提供されています。

詳細はIDCフロンティアのブログを読んでいただくのが良いかと思います。

とはいえ、VPNの管理アカウントに対してロックかけておきたいので一度はGUIで起動するのが良さそうです。

理由としては最初のHubCreateコマンドでHub作成を行った後にパスワードを書けられるのですが、 vpncmd コマンドでログインする際、情報を何も入力していない場合は、簡単に管理アカウントでログインできることになっちゃうんですよね。

そしてコマンドが打ち放題なので一度GUIでログインしておくのおすすめです。

接続時はEC2のPrivate IP(172.31.10.31:443)で接続します。

初回はユーザ名が空欄、パスワードも空欄ですが、パスワード設定後はパスワード欄に設定したパスワードを入力します。


接続確認

Google検索でIPアドレスと検索して最初の方で引っかかったURLで確認(18.182.112.221がPublic IPなので18.182.112.221になっていればOK)

内部の接続確認はPrivate IPで確認するとつながりました。

構築環境の問題かもしれませんが、内部に立てているDNSサーバの情報を見る必要があるっぽく、内部の名前解決ができてないですね。


まとめ

最初は繋がらなくて

コ◯ンくん「あれれぇー?おかしいぞー?あのおじさん、SecureNat使ってるのにDhcpのIPが違うからインターネットにも繋がらなくて困ってるぞぉー?」

みたいなことになってました。

Google検索かけても外に出られないからどうなってんだよ…って思ってGUIからSecureNatの情報を見たらVPNのIPが192.168.30.1でした。

そりゃダメだ。

IDCフロンティアの記事にも書かれていたのですが、Bridgeいるのかな?と思ったら全然そんなことはなかったです。

現状できなくて困ってるのは内部のDNSが引けないためIPアドレスで接続してる形なことです。

なんか設定がいるのかなーと思ってますが、この辺はわかり次第、別記事にしたいと思います。