rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

SoftEther VPN Gate クライアントソフトインストールと接続設定

2020 Jun. 07.
2020 May 21.
2020 May 17.
2020 May 16.
2020 Apr. 11.
2020 Apr. 07.
2020 Apr. 05.
2020 Apr. 04.


出典
https://rauq04.blogspot.com/2014/02/linux-softether-vpn-client-vpngate.html
https://qiita.com/onokatio/items/aa656c23e24d721eed31
https://ja.softether.org/1-features/1._%E6%A5%B5%E3%82%81%E3%81%A6%E5%BC%B7%E5%8A%9B%E3%81%AA_VPN_%E6%8E%A5%E7%B6%9A%E6%80%A7


手順

この作業ではパケットのルーティングテーブルを書き換えるので、LAN外部との通信が作業中に遮断される。
したがって、ホストがLAN外と通信中は作業してはならない。
外部からリモート作業する場合は、LAN内の別のホストに外部からSSH接続し、そこから目的のホストにSSH接続する等、工夫を要する。

vpncmdコマンドで作成される仮想ネットワークインターフェース名とLinux上に表示される仮想ネットワークインターフェース名は異なるので要注意。

SoftEtherサーバーはHTTPS ベースの VPN プロトコルを採用している。
 Ethernet over SSL (Ethernet over HTTPS)

SoftEtherサーバーはレガシーなVPNプロトコルもサポートしている。
 VPNL2TP/IPsec VPN (L2TP over IPsec)
 MS-SSTP (PPP over HTTPS)
 OpenVPN (IP over TCP/UDP)
 L2TPv3/IPおよびEtherIP/IPsec


1.SoftEther VPN Clientをインストール
   https://www.softether-download.com/ja.aspx?product=softether
   https://qiita.com/Daisuke-Otaka/items/b9d99c9dcbb84cf813d7

  ・ソースをダウンロード・解凍する
  ・ソースをビルドする
    $ make
  ・ビルドしたディレクトリを/usr/local以下の適当なところに移動する
   $ sudo make install ではなく、そのまま移動する
  ・ファイル属性を設定

2.https://www.vpngate.net/ja/ から VPN Gateサーバーアドレスを取得(毎作業毎に行う)
 回線速度の速いサーバーのアドレス検出
  $ wget http://www.vpngate.net/api/iphone/ -O - 2> /dev/null | grep JP | grep Daiyuu | sort -rn -k 5 -t "," | grep -oP -m 1 '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

 接続アカウントに登録したサーバーアドレス(AAA.BBB.CCC.DDD)の存在確認
  $ wget http://www.vpngate.net/api/iphone/ -O - 2> /dev/null | grep -o 'AAA.BBB.CCC.DDD'

3.VPN Gateサーバーへのパケットがデフォルトゲートウェイを必ず通過するようにルーティングテーブルを設定(毎作業毎に行う)
 # route add VPN-SERVER-ADDRESS gw YOUR-LAN-GATEWAY-ADDRESS dev REAL-NIC

4.vpnclientを起動(毎作業毎に行う)
 # cd VPNCLIENT-DIR/
 # ./vpnclient start

5.vpncmdを起動(毎作業毎に行う)
 # ./vpncmd
  (画面表示)
   1. VPN Server または VPN Bridge の管理
   2. VPN Client の管理
   3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

   1 - 3 を選択: 2

   接続先のホスト名または IP アドレス: (Enterのみを押す)


6.( VPN Client> PasswordSet は不要 )

7.仮想NICを作成(初回のみ)
 VPN Client> NicCreate vpn0
  vpn0は任意の仮想NIC

8.仮想NIC有効化(初回のみ)
 VPN Client> NicEnable vpn0

9.接続アカウントを作成(初回のみ)
 VPN Client> AccountCreate vpngate /SERVER:VPN-SERVER-ADDRESS:PORT /HUB:VPNGATE /USERNAME:vpn /NICNAME:vpn0
  vpngateは任意のアカウント名
  VPN-SERVER-ADDRESS:PORTはサーバーIPアドレス:ポート番号
  VPNGATEは任意のハブ名
  vpnは任意のユーザー名

  例 VPN Client>AccountCreate vpngate /SERVER:222.111.333.444:443 /HUB:VPNGATE /USERNAME:vpn /NICNAME:vpn0

10.匿名ログイン設定(初回のみ)
 VPN Client> AccountAnonymousSet ACCOUNTNAME
  例 VPN Client> AccountAnonymousSet vpngate

11.VPN Gateサーバーのアドレスをアカウントに設定(毎作業毎に行う)
 VPN Client> AccountSet ACCOUNTNAME /SERVER:VPN-SERVER-ADDRESS:PORT /HUB:HUBNAME
  例 VPN Client> AccountSet vpngate /SERVER:222.111.333.444:443 /HUB:VPNGATE

12.VPN Gateサーバーへの接続(毎作業毎に行う)
 VPN Client> AccountConnect vpngate
 VPN Client> exit

13.仮想NICへのアドレスセット(毎作業毎に行う)
 $ ip a show vpn_vpn0
  vpncmdで作ったNICに"vpn_"を付したものが仮想NIC
  IPV4アドレスがセットされていないはず。

 # dhclient -v vpn_vpn0

 確認
  $ networkctl status

14.デフォルトゲートウェイを変更(毎作業毎に行う)
 デフォルトゲートウェイを、物理NICを通過するルートから仮想NICを通過するルートに変更する
 仮想NICのアドレスの下位17bitから32bit部分を 254.254 としたアドレスをデフォルトゲートウェイアドレスに設定する

  例 仮想NICのアドレス確認
     $ ifconfig vpn_vpn0
       inet 10.242.217.69 -> デフォルトゲートウェイアドレスは 10.242.254.254

    ホストがLAN外部と通信していないことを確かめて
    物理NICを通過するデフォルトゲートウェイを削除
     # route del default

    仮想NICを通過するデフォルトゲートウェイをセット
     # route add default gw 10.242.254.254 dev vpn_vpn0

    VPN Gateサーバーを経由した通信を確かめる
     $ networkctl status
     $ traceroute www.yahoo.co.jp

    名前解決ができない時は /etc/resolv.conf の最終行に
    nameserver 8.8.8.8
    とgoogleネームサーバーをセカンダリネームサーバーに指定してみる

15.VPN Gateサーバー経由のインターネット接続を利用する

16.VPN Gateサーバー接続終了(毎作業毎に行う)
 # route del default
 # route add default gw YOUR-LAN-GATEWAY-ADDRESS dev REAL-NIC
 # route del VPN-SERVER-ADDRESS
 # ./vpncmd (最初の質問に 2 を選択し、次の質問にはEnterのみを押す)
 VPN Client> AccountDisconnect vpngate
 VPN Client> exit
 # ./vpnclient stop

17.dhclientを停止する
 $ ps ax -f | grep dhclient
 # kill -9 DHCLIENT-PROCESS

vpncmdコマンドプロンプトに入らず、シェルプロンプト上で処理する場合(スクリプト処理用)

(上記1は同じ)

2.https://www.vpngate.net/ja/ から VPN Gateサーバーアドレスを取得(毎作業毎に行う)

 回線速度の速いサーバーのアドレス検出
 $ VpnServerAdress=`wget http://www.vpngate.net/api/iphone/ -O - 2> /dev/null | grep JP | grep Daiyuu | sort -rn -k 5 -t "," | grep -oP -m 1 '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'`

3.VPN Gateサーバーへのパケットがデフォルトゲートウェイを必ず通過するようにルーティングテーブルを設定(毎作業毎に行う)
 $ su -
 # RealNIC=`route | grep -m 1 default | sed 's/[\t ]\+/\t/g' | cut -f 8`
 # RealGWayAddress=`route -n | grep ${RealNIC} | sed 's/[\t ]\+/\t/g' | cut -f 2 | sort -r | sed -n '1,1p'`
 # route add ${VpnServerAdress} gw ${RealGWayAddress} dev {$RealNIC}

4.vpnclientを起動(毎作業毎に行う)
 # PathVpnClientCom=`find /usr/ -name vpnclient`
 # DirVpnClient=`dirname ${PathVpnClientCom}`
 # cd $DirVpnClient
 # ./vpnclient start

5.仮想NICを作成
 # ./vpncmd localhost /CLIENT /CMD NicCreate vpn0
  vpn0は任意の仮想NIC

6.仮想NIC有効化
 # ./vpncmd localhost /CLIENT /CMD NicEnable vpn0

 (存在する仮想NIC名の取得)
  # ./vpncmd localhost /CLIENT /CMD AccountList | grep LAN | sed -e "s/^.*|//"

7.接続アカウントを作成
 # ./vpncmd localhost /CLIENT /CMD AccountCreate vpngate /SERVER:VPN-SERVER-ADDRESS:PORT /HUB:VPNGATE /USERNAME:vpn /NICNAME:vpn0
  vpngateは任意のアカウント名
  VPN-SERVER-ADDRESS:PORTはサーバーIPアドレス:ポート番号
  VPNGATEは任意のハブ名
  vpnは任意のユーザー名

8.匿名ログイン設定
 # ./vpncmd localhost /CLIENT /CMD AccountAnonymousSet vpngate

9.VPN Gateサーバーのアドレスをアカウントに設定(毎作業毎に行う)
 # ./vpncmd localhost /CLIENT /CMD AccountSet ACCOUNTNAME /SERVER:VPN-SERVER-ADDRESS:PORT /HUB:HUBNAME
  例 # ./vpncmd localhost /CLIENT /CMD AccountSet vpngate /SERVER:222.111.333.444:443 /HUB:VPNGATE

10.VPN Gateサーバーへの接続(毎作業毎に行う)
 # AccountName=`./vpncmd localhost /CLIENT /CMD AccountList | grep 接続設定名 | sed -e "s/^.*|//"`
 # ./vpncmd localhost /CLIENT /CMD AccountConnect ${AccountName}

11.Linux上の仮想ネットワークインターフェースへのアドレスセット(毎作業毎に行う)
 # VpnNIC=`./vpncmd localhost /CLIENT /CMD AccountList | grep LAN | sed -e "s/^.*|//"`
 # LinuxVirNIC=`ip l | grep -Po "\S+${VpnNIC}"`
 # dhclient $LinuxVirNIC

12.デフォルトゲートウェイを変更(毎作業毎に行う)
 デフォルトゲートウェイを、物理ネットワークデバイスを通過するルートから仮想ネットワークデバイスを通過するルートに変更する
 仮想NICのアドレスの下位17bitから32bit部分を 254.254 としたアドレスをデフォルトゲートウェイアドレスに設定する

 # VirNicAddress=` ip -4 a show ${LinuxVirNIC} | grep -Po "inet\s+[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | grep -Po "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"`
 # VirGWayAddress=`echo ${VirNicAddress} | grep -Po "[0-9]+\.[0-9]+\."`
 # VirGWayAddress="${VirGWayAddress}254.254"
 # route del default
 # route add default gw ${VirGWayAddress} dev ${LinuxVirNIC}

13.VPN Gateサーバー経由のインターネット接続を利用する

14.VPN Gateサーバー接続終了(毎作業毎に行う)
 # route del default
 # route add default gw ${RealGWayAddress} dev {$RealNIC}
 # route del ${VpnServerAdress}
 # ./vpncmd localhost /CLIENT /CMD AccountDisconnect ${AccountName}
 # ./vpnclient stop

15.dhclientを停止する
 while :
 do
  NumPsLines=`ps ax -f | grep "dhclient .*${LinuxVirNIC}" | grep -v grep | wc -l
  if [ $NumPsLines -lt 1 ]
  then
   break
  fi
  PidDhclient=`ps ax -f | grep -v grep | grep -m1 "dhclient .*${LinuxVirNIC}" | sed -n '1,1p' | sed 's/[\t ]\+/\t/g' | cut -f 2`
  kill -9 ${PidDhclient}
 done