CentOS8でSoftetherVPNを構築する

今回1年ぶりにSoftetherVPNを一から構築したので健忘録をかねて構築方法を書いていこうと思います。
以前はCentOS7で構築していましたが、ほとんど構築方法は変わっていませんでした。

また、今回は最終的に443ポートをShadowsocksと共有するサーバーにしたので、別記事でその内容も書いていこうと思います。

CentOS8の設定

今回は設定を全て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

vi(vim)の編集後内容は”esc”を入力後
“:w”で保存できます。
“:wq”で保存して終了できます。
“:q!”で保存せず終了できます。

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

現在のディレクトリ内にあるファイル一覧を取得するには”ls”コマンドを利用します。

解凍したファイルをビルドするために必要なコマンドをインストールします。

dnf -y install gcc readline-devel openssl-devel make

解凍したフォルダに移動します。

cd vpnserver

ファイルをビルドします。

make

“make”コマンドを実行するとライセンスの同意を求められます。
全て”1″で同意してください。

ビルドが完了したらSoftetherのファイルを移動します

#ディレクトリをもどる
cd ..
#ディレクトリの移動
mv vpnserver /opt/
#Softetherのディレクトリに移動
cd /opt/vpnserver

Softetherを起動

./vpnserver

Softetherの設定

ここからは完全に我流なので、不要な設定をしているかもしれないです。というか他の解説サイトでしてない設定がある・・・

PCにサーバー管理マネージャーをインストールし、VPNサーバーにアクセスします。初回アクセス時に管理パスワードを聞かれるので設定して下さい。

サーバーにアクセスすると簡易セットアップが表示されるので、「リモートアクセスVPNサーバー」を選択し「仮想HUB名」を設定してください。

VPNマネージャー1


ダイナミックDNS、IPsec/L2TP、VPN Azureクラウドは好きに設定してください。
また、この時画面にしたがってVPNアカウントを作成しておくと良いと思います。

簡易セットアップが終了するとメイン画面が表示されます。

画面左下の「ローカルブリッジ設定」を設定します。

「新しいローカルブリッジの定義」より「仮想HUB」を選択、「新しtapデバイスとのブリッジ」を選択し、「新しいtapデバイス名」を設定します。

VPNマネージャー2

管理マネージャーでの設定はここまでです。

サーバーのコンソールに戻り、Softetherの自動起動を設定します。

以下のコマンドで自動起動スクリプトを作成します。

vi /etc/systemd/system/vpnserver.service

スクリプト内容は以下です。

[Unit]
Description=SoftEther VPN Server
After=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

ファイアーウォールの設定

最後に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アドレスが書き換わっていることが確認できれば正常です。

ネットワークの高速化

BBRを利用してTCPを高速化する設定を合わせてしています。
よければ参考にしてください。

まとめ

今回は健忘録をかねて作業中に記録した内容を書き出してみました。
実際にはこの後にShadowSocksなども設定しているので近いうちにそれも記事にしようと思います。

我流も多いですがこの記事が誰かの役に立てば幸いです。

ーーー追記ーーー

関連内容を記事にしました。

コメント

タイトルとURLをコピーしました