RaspberryPi4 SoftEtherVPN編

# はじめに
VPN使いたいのでセットアップした

# 仮想ブリッジの設定
br0を使うためにbridge-utilsを入れる

``` bash
sudo apt update
sudo apt install bridge-utils
```

`/etc/network/interfaces`にブリッジの設定を追加

```
# eth0
auto eth0
iface eth0 inet manual

# br0
auto br0
iface br0 inet manual
bridge_ports eth0
bridge_maxwait 10
```

`/etc/dhcpcd.conf`でeth0のIPを固定する

```dhcpcd.conf
# static ip for vpn
denyinterfaces eth0
interface br0
static ip_address=192.168.11.xx/24
static routers=192.168.11.1
static domain_name_servers=8.8.8.8
```

# SoftEtherのインストール
[公式のインストール手順](https://ja.softether.org/4-docs/1-manual/7/7.3)を参考に入れる。(init.dのやり方しか載ってないけど。)

実行ファイルを[公式HP](https://www.softether-download.com/en.aspx?product=softether)から取得する
以下の順に選択
>Select Software: SoftWther VPN (Freeware)
Select Component: SoftWther VPN Server
Select Platform: Linux
Select CPU: ARM EABI (32bit)

rtm(リリース版)の最新のURLをコピーする

``` bash
cd /tmp/
curl -O https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-arm_eabi-32bit.tar.gz
tar -zxf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-arm_eabi-32bit.tar.gz
cd vpnserver
sudo make # 適当に許可する
cd ..
mv vpnserver /usr/local/
cd /usr/local/vpnserver/
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver
```

# systemdへの登録
`/etc/systemd/system/vpnserver.service`を作成

```vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Type=forking
RestartSec=3s
WorkingDirectory=/usr/local/vpnserver/
ExecStartPre=/sbin/ip link set dev eth0 promisc on

[Install]
WantedBy=multi-user.target
```

自動起動の設定する

```bash
sudo systemctl daemon-reload
sudo systemctl enable vpnserver
sudo systemctl start vpnserver
```

# SoftEther VPN Server Managerで設定する

windowsから設定する

実行ファイルを[公式HP](https://www.softether-download.com/en.aspx?product=softether)から取得する
以下の順に選択
>Select Software: SoftWther VPN (Freeware)
Select Component: SoftWther VPN Server Manager for Windows
Select Platform: Windows
Select CPU: Intel (x86 and x64)

適当にインストールする。

### 接続先の作成
新しい接続設定を押す
以下の感じで接続先を作る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/3c3e8309-01fb-48b6-631f-19bb13eb1b91.png)

設定できたら接続する
初回はPWを設定するように言われる

リモートアクセス VPN サーバーを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/c2de8a6b-6537-08da-cd49-4bebca2bbaaa.png)

L2TP サーバー機能を有効にするを選択
IPsec事前共有鍵は適当に設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/62fb55a1-fad9-d00f-df75-083700d8cbcf.png)


ユーザーを追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/b1e0251a-1ca0-254c-5621-71f6c79d8750.png)

ダイナミックDNSで適当なドメインを設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/6654312c-46dc-53aa-63e8-24a2a56b1e50.png)

ローカルブリッジを設定する
仮想 HUB -> VPN
LANカード -> br0
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/054b6fcf-1e22-2e55-f397-7019411f21df.png)



# ポート開放
RaspberryPiのIPに対してルーターで`500`と`4500`番のポートを開放する

私はBuffaloのWSR-5400AX6を使っているのですが、コヤツ不具合で上記ポートだけ開放できなかったです。。。
SSHとかはつながるのに。

# iphoneの設定
設定-> 一般 -> VPN -> VPN構成を追加...

>タイプ：L2TP
説明：適当につける
サーバ：ダイナミックDNSで設定したホスト名を設定 ex.vpn-xxx.softether.net
アカウント：追加したユーザー名
RSA SecureID：OFF
パスワード：追加したユーザーのパスワード
シークレット：IPsec事前共有鍵を入力
すべての信号を送信：ON


うまく設定できているとVPN接続できるはず。


# おまけ

softetherのDDNSはVPNサーバー毎に設定されるので、RaspberryPiが吹っ飛んだ場合同じドメインを設定できない
`vpn_server.config->DDnsClient->Key`の値を保存しておくことで、吹っ飛んだ場合も同じドメインを設定することができる

参考：[VPNFAQ007. softether.net のダイナミック DNS のホスト名を他のサーバーに移行する方法](https://ja.softether.org/4-docs/3-kb/VPNFAQ007)