0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arch Linux に SoftEther をインストール (TAP接続あり)

Last updated at Posted at 2024-01-24

この項では、Arch Linuxの環境にSoftEtherを導入する方法について解説します。

SoftrEtherはローカルブリッジを行うことでNICと接続しますが、直接NICとブリッジした時に、通信速度が3Mbpsほどしか出なかったため、TAPインターフェイスを使った方法で接続する方法を模索しました。

その記事がどこにもなかったので、備忘録がてら書いていきます!!

SoftEtherのインストール

Arch Linuxのコミュニティリポジトリには、SoftEtherのエントリがあります。
今回は、それを使ってインストールしていきましょう。
Aurヘルパーは paru を使っていますが、yayの人は各自置き換えてください。

paruはyayに代わる新しいAURヘルパーです。

# paru -S softethervpn

ビルドに時間が掛かりますが、待ちましょう。
インストールが完了したら、起動&自動起動を設定します。

 # systemctl start softethervpn-server
 # systemctl enable softethervpn-server

以下のコマンドを打って動作を確認します。
Activeになっていることを確認して下しさい。

 # systemctl status softethervpn-server

 ● softethervpn-server.service - SoftEther VPN Server
     Loaded: loaded (/usr/*****)
     Active: active (running) since Wed 2024-01-24 02:35:42 JST 8h ago

GUIでサーバーをセットアップする

以下のページにアクセスして、ServerManagerをインストールします。

インストール出来たら、左下の New Setting からサーバーに接続します。
image.png

適当な名前を決め、HostNameにサーバーのIPを入力してください。
image.png

ポートはデフォルトで443を使っていますが、WEBサーバーなどですでに使っている場合は1194 5555などを試すことが出来ます。

OKを押すと、新しくパスワードを決めるように要求されるので入力してください。
すると、初期セットアップが表示されます。
image.png

この画面は一番上だけチェックをつける
image.png

DDNSの設定です。こだわりがなければこのままExitを押して閉じます。
image.png

ここでは、一番上のL2TP over IPsecにチェックをつけ、一番したのkeyにパスワードを設定します。
これは、OpenVPNなどで利用する事前共有鍵なので、メモしておいてください。
image.png

AzureはDisableにしてOK
image.png

セットアップは続きます。
次に、Userをセットアップする必要があるので、
名前、パスワードを決めてOKを押します。

このアカウントは、この後実際にデバイスからの接続の際に使うものです。
必要であれば、後でいくらでも追加できます。今回はtestという名前で生成しました。
image.png

完了したら、一通りWindowは閉じて大丈夫です。

さて、この状況ですでにローカルで接続が出来るはずです。
iPhoneや、PCを使ってローカルのアドレスで接続が出来ることを確認しましょう。

以下の例はiPhoneの設定例です。

説明: (任意の名前)
サーバー: (サーバーのIP)
アカウント: (設定したユーザーネーム)
RSA SecureID: オフ
パスワード: (設定したパスワード)
シークレット: (設定した事前共有鍵)
すべての信号を送信: オン

この時点で正しく接続が出来ることを確認しましょう。

TAPインターフェイスにブリッジする

外部からアクセスできるように設定すればこの時点でVPNサーバーとして利用できますが、二点問題があります。

  • Linuxの制約により、自身への通信が出来ません。つまり、VPNを使って、SoftEtherをインストールしているマシンへのアクセスが出来ません。
  • Arch固有の問題かもしれませんが、通信速度が著しく下がります。 私の環境では2-3mbpsしか出ませんでした。

これを回避するために、TAPインターフェイス(仮想のインターフェイス)を生成し、SoftEtherはそこを経由して通信するようにします。

まずは必要なものをインストールします。

# pacman -S bridge-utils net-tools netctl dhcpcd

これからの作業は、間違えた場合通信が出来なくなる可能性があります。
よって遠隔地のマシンをセットアップする際には十分に注意してください。

まずは、ip aを実行して、通信に利用しているNICを特定し、必要な情報は以下の通りです

  • インターフェイス名 (eth0とかenp5s0とかそういうやつ)
  • デフォルトゲートウェイ

次に、仮想ブリッジを生成します。
br0というコンフィグファイルを /etc/netctl/以下に生成します

cd /etc/netctl/
# touch br0

内容は以下のようにします。

/etc/netctl/br0
Description="Bridge connection"
Interface=br0
Connection=bridge

#先ほどしらべたインターフェイスの名前を入れる※()かっこ必要
BindsToInterfaces=(enp5s0)

IP=dhcp

次に、インターフェイスへが自動的にセットアップされることを無効化し、br0にIPアドレスを割り当てるようにします。

# nano /etc/dhcpcd.conf

書かれているコンフィグの先頭に #をつけてコメントアウトします。
そして、以下を追記。

/etc/dhcpcd.conf
# インターフェイスの名前
denyinterfaces enp5s0

# ブリッジの名前
interface br0

# サーバーのIP
static ip_address=192.168.100.44/24

# デフォルトゲートウェイ
static routers=192.168.100.1

# DNSサーバーを指定(なぜか自動取得がうまくいかなかったので)
static domain_name_servers=192.168.100.2

できたら、Windowsから設定画面を開いて。
Local Bridge Settingsを開く。
image.png
すでの存在している物理NICを選択してDeleteする。
そのあと、下の画面から Bridge with New Tap Deviceを選択。
device name は適当に。(今回はsoftether)にしました。

出来たら、これらの設定がSoftEtherが立ち上がる過程でセットアップされるようにします。

SoftEtherのコンフィグを変える

# nano /usr/lib/systemd/system/softethervpn-server.service

その中の[Service]にExecStartPostとExecStartPreの二行を足す。

/usr/lib/systemd/system/softethervpn-server.service
[Service]
Type=forking
ExecStart=/usr/bin/vpnserver start

# 追記
ExecStartPost=/bin/sleep 5 ; brctl addif br0 tap_softether

# 追記
ExecStartPre=/usr/bin/netctl start br0

ExecStop=/usr/bin/vpnserver stop
Restart=on-failure

完了したらsystemctl restart softethervpn-serverで再起動。
問題がなければ、reboot しましょう!

あとは、ルーターの設定を変えて ポートフォワードすれば外部からアクセスできます。
お疲れ様でした!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?