background
今回1年ぶりにSoftetherVPNを一から構築したので健忘録をかねて構築方法を書いていこうと思います。 以前はCentOS7で構築していましたが、ほとんど構築方法は変わっていませんでした。
また、今回は最終的に443ポートをShadowsocksと共有するサーバーにしたので、別記事でその内容も書いていこうと思います。
setUpcentos
今回は設定を全てrootユーザーで行なっているので、構築が終わったらssh周り、root周りの設定を行ってください。また、rootユーザーでない場合はコマンドの先頭に”sudo”を入れてください。
まずはサーバーを更新します。
dnf -y update
次にSELinuxを無効化します。
#SELinuxの設定を開くvi /etc/selinux/config
以下がconfigの中身です。# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing//←ここを"disabled"に変更
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.SELINUXTYPE=targeted
Softetherのインストール
まずはsoftetherをダウンロードします。 最新版はここからダウンロードできます。 以下のコードを編集すると任意のバージョンをダウンロードできます。 “wget <ここにダウンロードURLを入れる>”
wget https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz
ダウンロードが終わったらダウンロードファイルの解凍をします。 ”tar -xf <ここに解答するファイル名を入れる>”
解凍したファイルをビルドするために必要なコマンドをインストールします。tar -xf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz
解凍したファイルをビルドするために必要なコマンドをインストールしてビルドします。
dnf -y install gcc readline-devel openssl-devel make
cd vpnserver
make
“make”コマンドを実行するとライセンスの同意を求められます。
ビルドが完了したらSoftetherのファイルを移動します
#ディレクトリをもどる
cd ..
#ディレクトリの移動
mv vpnserver /opt/
#Softetherのディレクトリに移動cd /opt/vpnserver
Softetherを起動
./vpnserver
setUpSoftether
ここからは完全に我流なので、不要な設定をしているかもしれないです。というか他の解説サイトでしてない設定がある・・・
PCにサーバー管理マネージャーをインストールし、VPNサーバーにアクセスします。初回アクセス時に管理パスワードを聞かれるので設定して下さい。
サーバーにアクセスすると簡易セットアップが表示されるので、「リモートアクセスVPNサーバー」を選択し「仮想HUB名」を設定してください。
ダイナミックDNS、IPsec/L2TP、VPN Azureクラウドは好きに設定してください。 また、この時画面にしたがってVPNアカウントを作成しておくと良いと思います。
簡易セットアップが終了するとメイン画面が表示されます。
画面左下の「ローカルブリッジ設定」を設定します。
「新しいローカルブリッジの定義」より「仮想HUB」を選択、「新しtapデバイスとのブリッジ」を選択し、「新しいtapデバイス名」を設定します。
管理マネージャーでの設定はここまでです。 サーバーのコンソールに戻り、Softetherの自動起動を設定します。 以下のコマンドで自動起動スクリプトを作成します。
vi /etc/systemd/system/vpnserver.service
スクリプト内容は以下です。[Unit]Description=SoftEther VPN ServerAfter=network.target
[Service]
Type=forking
EnvironmentFile=-/opt/vpnserver
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
ExecStartPost=/bin/sleep 1 ; /sbin/ifconfig tap_vpn 192.168.30.2 netmask 255.255.255.0
Restart=always
[Install]WantedBy=multi-user.target
ざっくり解説をすると、上で作成したtapデバイスと実際のネットワークアダプタをブリッジしてます。
スクリプトの作成が終わったら自動起動に登録します。
#追記が終わったら登録
systemctl daemon-reload
systemctl enable vpnserver.service
#登録したスクリプトを実行
systemctl start vpnserver.service
再起動して問題なく動けば設定は完了です。 問題なく動いてるかは以下のコマンドで確認してください。
systemctl status vpnserver.service
setUpfirewall
最後にVPNクライアントがSoftetherにアクセス出来るようにファイアーウォールの設定を行います。 今回はファイアーウォールにユーザー定義サービスを追加します。 以下のコマンドでルールを作成します。
vi /etc/firewalld/services/softether-vpn.xml
ルールの内容は以下です。
<?xml version=“1.0” encoding=“utf-8”?>
<service>
<short>SoftetherVPN</short>
<description>Softether VPN Server</description>
<!-- TCP -->
<port protocol="tcp" port="443"/>
<port protocol="tcp" port="992"/>
<port protocol="tcp" port="1194"/>
<port protocol="tcp" port="5555"/>
<!-- UDP -->
<port protocol="udp" port="443"/>
<port protocol="udp" port="992"/>
<port protocol="udp" port="1194"/>
<port protocol="udp" port="5555"/>
<!-- UDP Speed up -->
<port protocol="udp" port="40000-44999"/>
</service>
ポートを変更する場合は上のルールを書き換えてください。 ルールができたら以下のコマンドでファイアーウォールのポートを解放します。
#Softetherで使うポートを解放
firewall-cmd --permanent --zone=public --add-service=softether-vpn
firewall-cmd --permanent --zone=public --add-service=ipsec
#ファイアーウォールの更新
firewall-cmd --reload
以下のコマンドでサービスが追加されていれば完了です。
#ファイアーウォールの更新確認
firewall-cmd --list-all
最後にクライアントからアクセスができ、IPアドレスが書き換わっていることが確認できれば正常です。
Appendix
BBRを利用してTCPを高速化する設定を合わせてしています。
briefSummary
今回は健忘録をかねて作業中に記録した内容を書き出してみました。 実際にはこの後にShadowSocksなども設定しているので近いうちにそれも記事にしようと思います。
我流も多いですがこの記事が誰かの役に立てば幸いです。