1. 背景

    1. Raspbian StreatchにSoftether VPN Serverをインストールして他国で運用していた。Busterにアップデートして再起動したら、アクセスできなくなった。現地の方の協力を得てStreatchで復旧したが、将来的にいつかはBusterへのアップデートが必要になる時がある可能性があるため、Busterでのセットアップを試してみた。
  2. 主なポイント

    1. 「Linux オペレーティングシステム内部での制限事項により、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。」https://www2.softether.jp/jp/vpn3/manual/web/3-6.aspx#vpn_3_6_11 そのため、VPNクライアントとSoftether VPN Serverをインストールした機器の通信のためには、Stretchの時代からブリッジが必要。
    2. eth0とブリッジの両インターフェースをDHCPに設定した場合、同じIPアドレスが振られることがある。https://yuutosi.net/post-912/ 私の環境では、Busterから発生しました。この問題を解決するため、/etc/dhcpcd.conf に、denyinterfaces eth0 という行が必要になった。
    3. /etc/init.d を使う事例が多いが、2010年以降に採用されたsystemdを使う方がいいらしい?
    4. https://cgbeginner.net/raspi-vpn/
    5. 2019-9-26版Raspbian Buster with desktopでは、dhclientコマンドが不要であったが、2019/12/22時点でsudo apt-get dist-upgradeを実行すると、dhclientコマンドが必要。
  3. Raspbian Busterの新規インストール

    1. 「Raspbian Buster with desktop」をダウンロード。2019年9月26日版を使用
    2. 「Windows 10」と「BalenaEtcher」https://www.balena.io/etcher/ を使用して、Micro SDに書き込み
    3. sshでアクセスするため、起動ボリュームに、sshというファイル(中身無しの0バイト)を作成
    4. 「Raspberry」に、Micro SDを挿入
    5. LANケーブルを挿入し、電源ON
  4. Raspbianの初期設定

    1. sudo raspi-configコマンドにて、以下を設定。
      1. Change User Password
      2. Network Options
        1. Hostname
      3. Boot Options
        1. Desktop / CLI
        2. Splash Screen >> No
      4. Localisation Options
        1. Change Timezone
        2. Change Wi-fi Country
      5. Interfacing Options
        1. SSH >> enabled
        2. VNC >> enabled
      6. Advanced Options
        1. Resolution
  5. Softether VPN Clientのインストール

    1. wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.31-9727-beta/softether-vpnclient-v4.31-9727-beta-2019.11.18-linux-arm_eabi-32bit.tar.gz
    2. tar xzvf softether-vpnclient-v4.31-9727-beta-2019.11.18-linux-arm_eabi-32bit.tar.gz
    3. sudo mv vpnclient /usr/local/
    4. cd /usr/local/vpnclient/
    5. sudo make
    6. 1
    7. 1
    8. 1
    9. sudo chmod 0600 *
    10. sudo chmod 0700 vpncmd
    11. sudo chmod 0700 vpnclient
    12. sudo ./vpnclient start
    13. sudo ./vpncmd
    14. 2
    15. NicCreate tun0
    16. NicEnable tun0
    17. AccountCreate **** /SERVER:***.***.***.***:*** /HUB:*** /USERNAME:*** /NICNAME:tun0
    18. AccountPasswordSet **** /PASSWORD:*********** /TYPE:standard
    19. AccountConnect ****
    20. AccountStartupSet ****
    21. AccountList
    22. exit
    23. (sudo dhclient vpn_tun0)
    24. sudo nano /etc/dhcpcd.conf
      interface vpn_tun0
      static ip_address=192.168.***.***/24
    25. sudo nano /etc/systemd/system/vpnclient.service
      [Unit]
      Description=Softether VPN Client Service
      After=network.target
      [Service]
      Type=forking
      User=root
      ExecStart=/usr/local/vpnclient/vpnclient start
      ExecStop=/usr/local/vpnclient/vpnclient stop
      Restart=on-failure
      [Install]
      WantedBy=multi-user.target
    26. sudo systemctl enable vpnclient
    27. sudo systemctl start vpnclient
    28. sudo reboot
  6. ブリッジの設定(VPN Server用を使用する場合)

    1. sudo apt-get install bridge-utils -y
    2. sudo nano /etc/network/interfaces
    3. 以下の行を追加
      auto br0
      iface br0 inet manual
      bridge_ports eth0
      bridge_maxwait 10
    4. sudo nano /etc/dhcpcd.conf
    5. 以下の行を追加
      denyinterfaces eth0
    6. sudo reboot
  7. Softether VPN Serverのインストール(VPN Server用を使用する場合)

    1. wget https://github.com/SoftEtherVPN/SoftEtherV(VPN Server用を使用する場合)PN_Stable/releases/download/v4.31-9727-beta/softether-vpnserver-v4.31-9727-beta-2019.11.18-linux-arm_eabi-32bit.tar.gz
    2. tar xzvf softether-vpnserver-v4.31-9727-beta-2019.11.18-linux-arm_eabi-32bit.tar.gz
    3. sudo mv vpnserver/ /usr/local/
    4. cd /usr/local/vpnserver/
    5. sudo make
    6. 1
    7. 1
    8. 1
    9. sudo chmod 0600 *
    10. sudo chmod 0700 vpncmd
    11. sudo chmod 0700 vpnserver
  8. tapの作成(VPN Server用を使用する場合)

    1. vpnserverを仮起動
      sudo ./vpnserver start
    2. SoftEther VPN Server and VPN Bridgeにて、vpnserverを設定
    3. vlanタップを作成し、ブリッジ作成
  9.  Systemdでの起動設定(VPN Server用を使用する場合)

    1. sudo nano /etc/systemd/system/vpnserver.service
    2. 以下を記述
      ※dhclientコマンドは、2019/9/26版Busterでは不要であったが、2019/12/22時点のapt-get dist-upgrade状態では必要

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

      [Service]
      ExecStart=/usr/local/vpnserver/vpnserver start
      ExecStop=/usr/local/vpnserver/vpnserver stop
      WorkingDirectory=/usr/local/vpnserver/
      ExecStartPost=/bin/sleep 10 ; brctl addif br0 tap_vlan ; /bin/sleep 5 ; dhclient br0
      Type=forking
      RestartSec=3s

      [Install]
      WantedBy=multi-user.target

    3. sudo chmod 0755 /etc/systemd/system/vpnserver.service
    4. sudo systemctl enable vpnserver.service
    5. sudo systemctl start vpnserver.service
  10. Raspbian Busterの更新

    1. 以下のコマンド群を実行
      1. sudo apt-get update
      2. sudo apt-get dist-upgrade -y
      3. sudo apt autoremove
  11. 参考リンク

    1. Raspberry Piで作るSoftEther VPNの環境
      systemdでtapデバイスを使っている例
      https://chibashi.me/development/softether-vpn-server-201902/
    2. https://qiita.com/kumasun/items/6fd9ddafc8ea6278f088
    3. https://cgbeginner.net/raspi-vpn/