SoftEtherを利用してVPN Clientを構築する手順です
環境は Centos7.3 1611 を利用です
マシンの中に 仮想NIC を作って、VPN Server と通信できるようにします
構築イメージ
---------------------------------
|
| VPN-Hub1 (10.10.10.110):VpnHub1(仮想DHCP)
| ↑↓ ↑↓
| ↑↓ VPN-Nic1 (10.10.10.111):tap_tap1
| ↑↓
| ↑↓ 物理NIC(192.168.56.101):待ち受けポート:44444
| ↑↓
--↑↓----------------[CentOS7 SoftEther Server]
↑↓
↑↓ (10.10.10.0/24)
↑↓
--↑↓--------------------[SoftEther Client]
| ↑↓
| ↑↓ 物理NIC(192.168.56.222)
| ↑↓
| Vpn-Nic (10.10.10.222):vpn_tap1
|
---------------------------------
※ この記事は SoftEther Client の構築手順です
SoftEther インストール
コンパイル環境
# mkdir -p /usr/local/src/yum/22.softether_client
# cd /usr/local/src/yum/22.softether_client
# yum --enablerepo=epel \
--downloadonly \
--downloaddir=./ \
install \
gcc \
gcc-c++ \
glibc \
make \
binutils \
zlib \
openssl \
readline \
ncurses \
zlib-devel \
openssl-devel \
readline-devel \
ncurses-devel \
psmisc \
# yum localinstall *.rpm
SoftEther - Clientのダウンロード
最新版は確認:http://jp.softether-download.com/files/softether/
# wget --proxy-user=user \
--proxy-password=pass \
-e HTTP_PROXY=proxy.com:8080 \
http://jp.softether-download.com/files/softether/v4.22-9634-beta-2016.11.27-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
※ http://jp.softether-download.com/files/softether/v4.29-9680-rtm-2019.02.28-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz
# ls -l
-rw-r--r-- 1 root root 6275136 11月 27 2016 softether-vpnclient-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
-rw-r--r-- 1 root root 6249551 2月 28 19:41 softether-vpnclient-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz
※ 2019/3/12 追記 バージョンが 4.22から4.29に変わっています
SoftEther Client 展開&コンパイル
# tar xvfz softether-vpnclient-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
# cd vpnclient/
# make
SoftEther Client インストール
# cd ..
# mv vpnclient /usr/local/
# cd /usr/local/vpnclient/
SoftEther Client セキュリティ設定
# chmod 600 *
# chmod 700 . vpncmd vpnclient code lib
SoftEther Client の仮想NICにIPアドレスを設定するシェル
#!/bin/bash
# case Static IP
TAP_IF="vpn_tap1"
# 30sec Loop
for i in {1..30}
do
sleep 1
ip tap | grep --quiet ${TAP_IF}
STATUS=$?
if [ "${STATUS}" == "0" ]
then
ip address add dev ${TAP_IF} 10.10.10.222/24
# - 旧方式 ifcfg ${TAP_IF} add 10.10.10.222/24
break;
fi
done
exit 0
# chmod 700 /usr/local/vpnclient/setting_ip.sh
※ ifcfg 方式から ip 方式へ変更(2024.01.09)
SoftEther Client の自動起動設定
サービスの起動時に、仮想NIC (vpn_tap1) に固定IPアドレスを付与する
[Unit]
Description=SoftEther VPN Client
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/vpnclient/vpnclient start
ExecStartPost=/usr/local/vpnclient/setting_ip.sh
ExecStop=/usr/local/vpnclient/vpnclient stop
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable vpnclient
SoftEther Client の設定
□ VPN Client へ接続
まだいろいろ設定していないので、サービス(systemctl)としてではなく直接 vpnclient を起動する
# cd /usr/local/vpnclient
# ./vpnclient start
# ./vpncmd localhost /CLIENT
□ VPN Client の管理者パスワードの設定
>PasswordSet
>Quit
□ VPN Client の管理者パスワードの設定確認
起動時にパスワード入力を必要とする
# ./vpncmd localhost /CLIENT
□ VPN Client のヘルプ確認
VPN Client> help
下記の 66 個のコマンドが使用できます:
About - バージョン情報の表示
AccountAnonymousSet - 接続設定のユーザー認証の種類を匿名認証に設定
AccountCertGet - 接続設定に用いるクライアント証明書の取得
AccountCertSet - 接続設定のユーザー認証の種類をクライアント証明書認証に設定
AccountCompressDisable - 接続設定の通信時のデータ圧縮の無効化
AccountCompressEnable - 接続設定の通信時のデータ圧縮の有効化
AccountConnect - 接続設定を使用して VPN Server へ接続を開始
AccountCreate - 新しい接続設定の作成
AccountDelete - 接続設定の削除
AccountDetailSet - 接続設定の高度な通信設定の設定
AccountDisconnect - 接続中の接続設定の切断
AccountEncryptDisable - 接続設定の通信時の暗号化の無効化
AccountEncryptEnable - 接続設定の通信時の暗号化の有効化
AccountExport - 接続設定のエクスポート
AccountGet - 接続設定の設定の取得
AccountImport - 接続設定のインポート
AccountList - 接続設定一覧の取得
AccountNicSet - 接続設定で使用する仮想 LAN カードの設定
AccountPasswordSet - 接続設定のユーザー認証の種類をパスワード認証に設定
AccountProxyHttp - 接続設定の接続方法を HTTP プロキシサーバー経由接続に設定
AccountProxyNone - 接続設定の接続方法を直接 TCP/IP 接続に設定
AccountProxySocks - 接続設定の接続方法を SOCKS プロキシサーバー経由接続に設定
AccountRename - 接続設定の名前の変更
AccountRetrySet - 接続設定の接続失敗または切断時の再試行回数と間隔の設定
AccountSecureCertSet - 接続設定のユーザー認証の種類をスマートカード認証に設定
AccountServerCertDelete - 接続設定のサーバー固有証明書の削除
AccountServerCertDisable - 接続設定のサーバー証明書の検証オプションの無効化
AccountServerCertEnable - 接続設定のサーバー証明書の検証オプションの有効化
AccountServerCertGet - 接続設定のサーバー固有証明書の取得
AccountServerCertSet - 接続設定のサーバー固有証明書の設定
AccountSet - 接続設定の接続先の設定
AccountStartupRemove - 接続設定のスタートアップ接続を解除
AccountStartupSet - 接続設定をスタートアップ接続に設定
AccountStatusGet - 接続設定の現在の状態の取得
AccountStatusHide - VPN Server への接続中に接続状況やエラー画面を表示しないように設定
AccountStatusShow - VPN Server への接続中に接続状況やエラー画面を表示するように設定
AccountUsernameSet - 接続設定の接続に使用するユーザー名の設定
CertAdd - 信頼する証明機関の証明書の追加
CertDelete - 信頼する証明機関の証明書の削除
CertGet - 信頼する証明機関の証明書の取得
CertList - 信頼する証明機関の証明書一覧の取得
Check - SoftEther VPN の動作が可能かどうかチェックする
KeepDisable - インターネット接続の維持機能の無効化
KeepEnable - インターネット接続の維持機能の有効化
KeepGet - インターネット接続の維持機能の取得
KeepSet - インターネット接続の維持機能の設定
MakeCert - 新しい X.509 証明書と秘密鍵の作成 (1024 bit)
MakeCert2048 - 新しい X.509 証明書と秘密鍵の作成 (2048 bit)
NicCreate - 新規仮想 LAN カードの作成
NicDelete - 仮想 LAN カードの削除
NicDisable - 仮想 LAN カードの無効化
NicEnable - 仮想 LAN カードの有効化
NicGetSetting - 仮想 LAN カードの設定の取得
NicList - 仮想 LAN カード一覧の取得
NicSetSetting - 仮想 LAN カードの設定の変更
NicUpgrade - 仮想 LAN カードのデバイスドライバのアップグレード
PasswordGet - VPN Client サービスに接続するためのパスワードの設定の取得
PasswordSet - VPN Client サービスに接続するためのパスワードの設定
RemoteDisable - VPN Client サービスのリモート管理の禁止
RemoteEnable - VPN Client サービスのリモート管理の許可
SecureGet - 使用するスマートカードの種類の ID の取得
SecureList - 使用できるスマートカードの種類の一覧の取得
SecureSelect - 使用するスマートカードの種類の選択
TrafficClient - 通信スループット測定ツールクライアントの実行
TrafficServer - 通信スループット測定ツールサーバーの実行
VersionGet - VPN Client サービスのバージョン情報の取得
それぞれのコマンドの使用方法については、"コマンド名 ?" と入力するとヘルプが表示されます。
コマンドは正常に終了しました。
□ VPN Client サービスのリモート管理の禁止
リモートから接続可能にしとくと怖いので・・
>RemoteDisable
□ インターネット接続の維持機能の無効化
>KeepDisable
>KeepGet
現在の状態 |無効
□ 新規仮想NIC の作成
>NicCreate tap1
>NicList
仮想 LAN カード名|tap1
状態 |有効 (使用可能)
MAC アドレス |00AC71755582
バージョン |Version 4.22 Build 9634 (Japanese)
□ サーバ接続用VPNアカウント作成(設定)
クライアント管理の「アカウント」と、サーバ側で作成した「ユーザ」は別物
サーバ側で設定した「ユーザ」で接続するための「アカウント」を設定です
>AccountCreate USER1 /SERVER:192.168.56.101:44444 /HUB:VpnHub1 /USERNAME:HubUser1 /NICNAME:tap1
>AccountList
接続設定名 |USER1
状態 |オフライン
接続先 VPN サーバー|192.168.56.101:44444 (直接 TCP/IP 接続)
仮想 HUB 名 |VpnHub1
仮想 LAN カード名 |tap1
□ サーバ接続用VPNアカウントパスワード設定 & 自動起動設定
サーバ側で作成した「ユーザ」で接続するためのパスワードを設定します
また、vpnclient が起動したときに自動的に接続に行くようにも設定しときます
※ これやらないと毎回接続操作が必要です
>AccountPasswordSet USER1 /TYPE:standard
>AccountStartupSet USER1
>AccountGet USER1
接続設定名 |USER1
接続先 VPN Server のホスト名 |192.168.56.101
接続先 VPN Server のポート番号 |44444
接続先 VPN Server の仮想 HUB 名 |VpnHub1
経由するプロキシサーバーの種類 |直接 TCP/IP 接続
サーバー証明書の検証 |無効
接続に使用するデバイス名 |tap1
認証の種類 |標準パスワード認証
ユーザー名 |HubUser1
□ サーバ接続
設定できたので接続してみます
もし、「接続完了」にならなければ、ユーザ名、パスワード、HUB名、サーバアドレス、ポート等々を確認してみてくださいです
サーバ側のログ( /usr/local/vpnserver/server_log/vpn_yyyymmdd.log )も確認した方が良いかも
>AccountConnect USER1
>AccountList
接続設定名 |USER1
状態 |接続完了
接続先 VPN サーバー|192.168.56.101:44444 (直接 TCP/IP 接続)
仮想 HUB 名 |VpnHub1
仮想 LAN カード名 |tap1
□ 仮想NIC 確認
仮想NIC が作成されていることの確認
>Quit
# ip tap
vpn_tap1: tap
□ サービス停止
# ./vpnclient stop
□ UDPホールパンチングの無効化
設定ファイを直接編集
※ 必要ないのでパンチしないよーにしときます
# cp -p vpn_client.config vpn_client.config.org
# vi vpn_client.config
declare AccountDatabase
{
declare Account0
{
declare ClientOption
{
string AccountName USER1
bool NoUdpAcceleration true
□ サービス再起動(自動接続 & 自動IP付与)
サービスとして起動すると、ちゃんとIPアドレスを仮想NICに設定してくれることを確認
# systemctl start vpnclient
# ip addr show vpn_tap1
5: vpn_tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:ac:71:75:55:82 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.222/24 brd 10.10.10.255 scope global vpn_tap1
valid_lft forever preferred_lft forever
□ 自動接続ステータス確認(クライアント)
アカウントがサービス起動時に自動的に接続に行っていることも確認
# ./vpncmd localhost /CLIENT
>AccountStatusGet USER1
接続設定名 |USER1
セッション接続状態 |接続完了 (セッション確立済み)
サーバー名 |192.168.56.101
ポート番号 |TCP ポート 44444
>Quit
通信確認(クライアント -> サーバ)
ちゃんとサーバと接続されていることも確認
# ping -c 3 10.10.10.111
PING 10.10.10.111 (10.10.10.111) 56(84) bytes of data.
64 bytes from 10.10.10.111: icmp_seq=1 ttl=64 time=2.42 ms
64 bytes from 10.10.10.111: icmp_seq=2 ttl=64 time=1.02 ms
64 bytes from 10.10.10.111: icmp_seq=3 ttl=64 time=1.01 ms
--- 10.10.10.111 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.010/1.489/2.428/0.664 ms
以上
クライアント側構築も完了
再起動した時にも自動的につながることとか確認してみてくださいです