2020年4月16日木曜日

raspberry pi : VPNサーバーのインストール

目的:
自宅外から自宅のネットワークにアクセスできるようにする。
 
概要:
VPNサーバーとして Softether をインストールし、VPN接続で 自宅外から SSH接続やネットワークドライブ(samba) へのアクセスを行えるようにする。


手順:
  1. bridge-utils のインストール
    VPN接続でVPNサーバー自身(VPNサーバーをインストールした raspberry pi) にアクセスできるようにする為、仮想ブリッジを経由して物理NICアクセスする必要がある。
    1. bridge-utils をインストールする
      $ sudo apt install bridge-utils
       
    2.  /etc/network/interfaces に設定を追加
      $ sudo vi /etc/network/interfaces
      auto br0
      iface br0 inet manual
      bridge_ports eth0      <--- ブリッジ接続するポートを設定
      bridge_maxwait 10
      
       
    3. dhcpcd.conf でIPアドレスを設定する。
      $ sudo vi /etc/dhcpcd.conf
      denyinterfaces eth0
      
      interface br0
      static ip_address=192.168.1.91/24
      static routers=192.168.1.1
      static domain_name_servers=192.168.1.1 8.8.8.8
      
      ブリッジ(br0) に IPアドレス等を設定する。
      ブリッジ接続するポート(eth0) の 設定は削除(コメントアウト) し、
      denyinterfaces で DHCP によるIPアドレスの割り当てが無いようにする。
      denyinterfaces の 設定は、ポートの設定(他ポートも含む)よりも前に記述する。
        
    4.  リブートする
      $ sudo reboot
      リブートして、ifconfig 等で設定を確認する。
       
     
  2.  SoftEther のインストール
    1. SoftEther ソフトウェアの URL 確認 (WEBブラウザで確認)
      SoftEtherダウンロードセンター ( https://www.softether-download.com/ja.aspx) にアクセスする。
       「コンポーネントを選択」で 「SoftEther VPN Server」 を選択
       「プラットフォームを選択」で 「Linux」を選択
       「CPU を選択」 で 「ARM EABI (32bit)」を選択
       最新版のダウンロードファイルのURL を取得する。
        ( 右クリック して リンクのアドレス(URL)を コピーする )
       
    2. SoftEther ソフトウェアをダウンロードし、解凍する。
      以降は root で作業を行う。
      任意のディレクトリで、
      $ su
      # wget [取得した URL]
      # tar zxvf [ダウンロードしたファイル名]
          --> vpnserver ディレクトリができる。
       
    3. Make を実行
      vpnserver ディレクトリに移動して make を実行する。
      # cd vpnserver
      # make
          --> licence agreement を読み (1を選択)、同意 (1を入力) する。
          ( Ver 4.38 では 入力の要求は無かった。 2021.09/25 )
       
    4. vpnserverディレクトリを /usr/local に移動する。
      # cd ..
      # mv vpnserver /usr/local/
       
    5. パーミッションを変更
      # cd /usr/local/vpnserver
      # chmod 600 *
      # chmod 700 vpncmd
      # chmod 700 vpnserver
       
    6. 自動起動のサービスを作成する
      # vi /etc/systemd/system/vpnserver.service
      [Unit]
      Description=SoftEther VPN Server
      After=network.target network-online.target
      
      [Service]
      User=root
      ExecStart=/usr/local/vpnserver/vpnserver start
      ExecStop=/usr/local/vpnserver/vpnserver stop
      Type=forking
      RestartSec=3s
      WorkingDirectory=/usr/local/vpnserver/
      #ExecStartPost=/bin/sleep 10 ; brctl addif br0 tap_vlan
      
      [Install]
      WantedBy=multi-user.target
      
      コメントアウトした行は、管理マネージャで tap を設定した後、コメントアウトを解除する。
        
    7. サービスを起動する
      # systemctl start vpnserver

      起動確認
      # systemctl status vpnserver.service
       
    8. 自動起動を有効にする
      # systemctl enable vpnserver.service
       
    9. リブートして、サービスを確認する
      # reboot
      $ sudo systemctl status vpnserver.service
       
  3. 管理マネージャーの設定
    1. Windows PC に管理ソフトウェアをインストールする。
      SoftEtherダウンロードセンター ( https://www.softether-download.com/ja.aspx) にアクセスする。
       「コンポーネントを選択」で
         「SoftEther VPN Server Manager for Windows」 を選択
       「プラットフォームを選択」で
         「Windows (.Zip package without installeers)」を選択
      ダウンロードしたファイルを解凍し、vpnsmgr.exe を起動する。
       
    2. SoftEther VPN Server への接続設定
      「新しい接続設定」をクリック
      「接続設定名」 に接続先の 任意の名前を設定
      「ホスト名」 に SoftEther VPN Server をインストールした raspberry pi のIPアドレスを設定
      「ポート番号」に 443 を設定
      「OK」 を押下
       
    3. SoftEtheer VPN Server へ接続
      「接続」をクリック
      管理者のパスワード設定ダイアログが開くので、パスワードを設定。
       
    4. 簡易セットアップ
      SoftRther VPN Server / Bridge 簡易セットアップ ダイアログが開くので以下を設定。
      「リモートアクセス VPN サーバー」にチェックして 「次へ」を押下
      「はい」を押下
      「仮想 HUB 名」を入力し、「OK」を押下。(Default は VPN)
      「ダイナミック DNS ホスト名の変更」に任意の名前を設定し「閉じる」を押下
      「L2TP over IPsec」 にチェックし、上で入力した仮想HUB名を選択。
       事前共有鍵(9文字以内推奨)を決めてOKをクリックする。
      「VPN Azure 無効にする」を選択して「OK」 を押下。
      「VPN 接続を受け入れるためのユーザーの作成」で、「ユーザを作成する」を押下。
      「ユーザー名」に任意の名前 を入力、
      「認証方法」にパスワード認証 を選択、
      「パスワード認証」にパスワード を設定して 「OK」を押下
       確認画面で OK を押下する。
       作成したユーザ名が表示されたら、閉じるを押下する。
      「ローカルブリッジの設定」で、raspberry pi の LAN のポート名 (eth0 等)を選択して 閉じる を押下。
       
    5. ローカルブリッジの設定
      「ローカルブリッジ設定」を押下
       上で設定した仮想HUB を選択して、「ローカルブリッジの削除」を押下
      「新しいローカルブリッジの定義」で
       「仮想HUB名」を入力。(例えば VPN)
       「作成する種類」で 「新しいtapデバイスとのブリッジ接続」を選択
       「新しいtapデバイス名」を設定。(例えば、vlan)
       「ローカルブリッジを追加」を押下。
      「閉じる」を押下
      「暗号化と通信関係の設定」を押下
      「暗号化アルゴリズム名」を「DHE-RSA-AES256-SHA」に変更して「OK」を押下
       
    6. 自動起動のサービスの修正
      $ sudo vi /etc/systemd/system/vpnserver.service 
      自動起動サービスの コメントを外す。
      ローカルブリッジの設定で 「新しいtapデバイス名」を vlan 以外に設定した場合は、”tap_vlan" を "tap_[新しいtapデバイス名]” に変更する。
    7. raspberry pi をリブートする
      管理マネージャを閉じ、raspberry pi をリブートし、tap が ブリッジされている事を確認する。
      $ sudo reboot
      $ brctl show br0
      bridge name    bridge id             STP enabled    interfaces
      br0            8000.5ea8b6f10493     no             eth0
                                                          tap_vlan
      
       
  4. ルータ設定
    ルータのポートマッピングで、500/UDP, 4500/UDP を ラズベリーパイのIPアドレスにマッピングする。
    設定方法は、各ルータのマニュアルを参照。
     
  5. ファイアウォール解放
    ラズベリーパイのファイアウォール設定で、500/UDP, 4500/UDP を通過させるように設定する。
    sudo ufw allow 500/udp
    sudo ufw allow 4500/udp
     
  6. 通信確認
    スマホ等からVPN 接続できることを確認する。
    ・android の場合の例 (4G 等で接続)
    設定 - ネットワークとインターネット - VPN
    で、右上の + をクリックし、VPNプロファイルの編集を行う。
    (機種 や android バージョンによって 異なるかも)
     名前       : 任意の名前
     タイプ     :L2TP/IPSec PSK
     サーバーアドレス:ダイナミック DNS ホスト名 に設定した名前
     IPSec事前共有鍵 :設定した 事前共有鍵
     ユーザ名    :設定した ユーザ名
     パスワード   :設定した パスワード
    等を設定して保存後、接続できる事を確認する。
    (スマホは、4G 等の異なるネットワーク で接続していること。)

    ・Windows10 の場合の例 (テザリング等で接続)
    設定 - ネットワークとインターネット - VPN
    で、 +(VPN接続を追加する) をクリックし、VPN接続を追加する。
     VPNプロバイダー    :Windows(ビルトイン)
     接続名          : 任意の名前
     サーバー名またはアドレス:ダイナミック DNS ホスト名 に設定した名前
     VPNの種類       :事前共有キーを使ったL2TP/Ipsec
     事前共有キー      :設定した 事前共有鍵
     サインイン情報の種類  :ユーザー名とパスワード
     ユーザ名        :設定した ユーザ名
     パスワード       :設定した パスワード
    等を設定し、接続できる事を確認する。
    (Windows は、テザリング等 の異なるネットワーク で接続していること。)
     
  7. LOG の所在
    VPNサーバーインストールディレクトリ下に log ディレクトリがある。
    接続できない場合等、server_log ディレクトリ内の log を確認して原因調査を行う。

    /usr/local/vpnserver/server_log/vpn_********.log

0 件のコメント:

コメントを投稿