会社のISP回線は固定IPじゃないのだが、GCPを使って固定IPゲートウェイを作ったのでメモ
まず最初に某オープンVPN使ったが速度が遅い、というか通信途切れる。
MTUとMSS調整してもどうも接続が途切れるので2日で諦めたw
次いで、昔外から家の中のPCにつなぐ時に使ってたSoftetherがさらに進化してるというのでトライ。
1. GCEでVM立てる
まずはGCEでUbuntuインスタンスを立てる。
マシンタイプはn1-standard-1にした。個人用途ならg1-smallでもいいが、会社で数名が使うのでスタンダードで。
ネットワーク設定で、IP forwarding(IP転送)の設定をONにした。
てか、これいらないのかな?某オープンVPNの時は必須だったのでそれを倣っただけ。
VM作ったあとだとIP forwarding設定を変更出来ないのよね。
Network Tagに「vpn」という文字列をセットする。
あとでVPC Firewall Rules設定で、vpnタグに対しての通信を許可するため。
そしてExtenal IPをStaticにして固定IPにしておく事。
2. VPC Firewall Rules設定で穴をあける
新しいFirewallルールをdefault-allow-vpnという名前で作る。
ネットワークタグ「vpn」に対してIngress通信を許可で、許可ポートは下記のもの
tcp:5555
udp:500,1701,4500
tcp:5555がSoftether用で、udpポートはMacのL2TP/IPSec用のポート。マカー社員用の措置。
3. Softether VPN Serverのインストール
Ubuntuへのインストールは公式の方法だとinitdを使う起動方法しか書いてないので、このサイトを参考にしてsystemdで起動するようにした↓
自分だけのVPNサーバを作る!Ubuntu 18.04 に SoftEther VPN Serverをインストール
ビルドに必要なライブラリを先にインストールしておく必要があるので、
$ sudo apt install build-essential
で先にインストールしておく。
ファイヤーウォールはGCPのVPC Firewall設定でやるので、ufwは使わない。
インストール後、vpncmdというコマンドラインのCUI管理機能でセットアップするんだが、これが分かりづらかったの代替案。
Virtualbox内のWindowsゲストOSにSoftetherVPN Server ManagerというGUI管理ツールをインストールして設定。
これは楽だw
※話が脱線するが、VirtualboxをUbuntuにインストールする手順はこちらに書いてます。で、Windowsもってない場合はここから60日間だけ使える検証用WindowsのOVAファイルをダウンロードして、Virtualboxにインポートすれば60日間使えます。
やることは仮想ハブとユーザーを作成し、SecureNAT機能をONにするのと、あとはDHCPサーバー機能もONにした。
そして、ローカルブリッジ機能は絶対にONにしてはイケない。
やりたことはNATなのでローカルブリッジは不要。
しかし、最初よくわからずローカルブリッジをONにした結果、CPU利用率が100%になって全く通信出来ない状況になった。
というわけで、SecureNAT機能を使う時は、ローカルブリッジは必ず無効にする。
External IPを固定にしてるので、ダイナミックDNS機能は無効化する。
GUIから無効化しようとしると、設定ファイルを編集してオフにしろという。
というわけで設定ファイル編集画面から一旦設定ファイルをエクスポートして、それを編集してDDNSをオフ→そして再びインポートすればDDNS無効化できる。
ユーザーを追加して、次はSoftetherクライアントのインストール
4. Softether VPN Clientのインストール
サーバーはUbuntu、そしてクライアントもUbuntu(Xubuntu)である。
Linuxクライアントのインストール方法はServer版と全く同じです。
なので、上記でやった手順の「server」を「client」に読み替えて、クライアントをインストールします。
vpncmdでの設定はこうした。
VPN Client>NicCreate vpn #サーバーアドレスとユーザー名は正しいものを入れる VPN Client>AccountCreate softether /SERVER:203.0.113.9:5555 /HUB:VPN /USERNAME:orenomemo /NICNAME:vpn #パスワードは正しいものを入れる VPN Client>AccountPasswordSet softether /PASSWORD:mypassword /TYPE:standard VPN Client>AccountEncryptEnable softether VPN Client>AccountStartupSet softether
コマンドライン設定がメンドクサイ場合は、これまたVirtualboxのゲストWindowsにSoftetherVPN Client ManagerをインストールしてGUIで仮想NICの作成と接続設定を作成すればOK.
vpncmdで、RemoteEnableを実行しておくとVirtualboxクライアントからリモート接続できます。
Vitrualboxホストオンリーネットワークを有効にしてるので、そこから繋ぎます。
そして厄介なのがSoftether接続後に自分でルーティング設定を変える必要がある。
そしたらsoftetherクライアント起動後にルーティング設定を追加するためのスクリプトを書いた人がいたので、それを参考にした。
SoftEther VPN ClientをUbuntu 14.04LTSで使うときにちょっとはまったこと – KITA Eng.
ちょっと修正してある。
vpnclient起動にちょっと時間がかかる時があるのでsleepを入れた。
あとは、テザリングしてる時でも使えるようにデフォルトゲートウェイのIPアドレスをコマンドラインで取得して一時ファイルに記録しておくようにした。
#!/bin/bash DAEMON=/home/orenomemo/vpnclient/vpnclient #vpnclient のパスに変える VPNUP=`ps -ef | grep vpnclient | grep -v grep | wc -l` VPNNAME=vpn_vpn DEFROUTE=$(ip route show | grep -E -m1 '^default'|awk '{print $3}') NEWDEFROUTE=192.168.30.1 CONFIG=~/.softethercfg if [ ${DEFROUTE} = ${NEWDEFROUTE} ]; then DEFROUTE=$(cat ${CONFIG}) fi SERVER=203.0.113.9 #softetherサーバのIPに変える NIC=wlp0s20f3 test -x ${DAEMON} || exit 0 case "$1" in start) if [ ${VPNUP} = 0 ]; then sudo ${DAEMON} start sleep 3 VPNLINK=`ip -4 -o addr | grep -c vpn_` sudo dhclient ${VPNNAME} while [ ${VPNLINK} = 0 ] do echo "Waiting for startup vlan up..." sleep 1 VPNLINK=`ip -4 -o addr | grep -c vpn_` done sudo ip route add ${SERVER} via ${DEFROUTE} dev ${NIC} sudo ip route replace default via ${NEWDEFROUTE} dev ${VPNNAME} echo ${DEFROUTE} > ${CONFIG} else echo "VPN Client has already started!" exit 1 fi ;; stop) if [ ${VPNUP} = 0 ]; then echo "VPN client has already stoped" exit 1 else sudo ip route del ${SERVER} via ${DEFROUTE} dev ${VPNNAME} sudo ip route replace default via ${DEFROUTE} dev ${NIC} sudo ${DAEMON} stop rm -rf ${CONFIG} fi ;; restart) $0 stop sleep 3 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
ルーティング変更後、下記ページを開いてIPアドレスがGCEのExternal IPアドレスになってれば、Softetherをゲートウェイにしたアクセス完了という事。
これで、DHCPで度々IPアドレスが変わる会社でも常に固定IPでネットにアクセスできる固定IPゲートウェイの出来上がり。