それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

mac で softetherVPN への接続(クライアント)

macsoftether への接続

できなくはないけど、設定がめんどくさい。

いくつか手順が必要。

公式マニュアルは、L2TP over IPSec なのですが、IPSec 上に L2TPを通して、その上にSSHを通してってもう考えたくないので、カプセル化は少ないほうが管理上も速度面でも嬉しいので、直接つなぎます。*1

tap の準備

brew install tuntap
sudo reboot 

私は上記コマンドだけでインストール完了し、Kextを有効にするために再起動をした。

ただ、私の環境はcsrutils がオフになっているので、一般的に動くかどうかはわからない。

kext を使うので、macOSのCSPが使える必要があるかもしれない。 SIP ( sytem itegrity protection )をdisableで使う。

csrutil status
csrutil disable

sip spctl 関連資料

softether の準備

softethermac版はコマンドクライアントから持ってきます。

ダウンロード

ダウンロードサイトから、macOS版をダウンロードする。

https://www.softether-download.com/en.aspx?product=softether

 curl -LJO https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnclient-v4.38-9760-rtm-2021.08.17-macos-x64-64bit.tar.gz

f:id:takuya_1st:20211103200748p:plain

ビルド

tar zxvf softether-vpnclient*
cd vpnclient
make 

softether client の起動

クライアントは常駐するソフトである。そういう設計らしい。まぁもともとWindowsのタスクトレイに居座るタイプだし、MacOSのメニューバーに居座ることをしてないので、自分で起動するってことかな。

まず起動します。

cd vpnclient
sudo ./vpnclient start

使用終わったら stop

sudo ./vpnclient stop

stop するの忘れがち。

softether の接続設定を作る

vpnclient に接続します。

  • 2 client の管理
  • localhost 指定で自ホストのClientと対話
  • VPNClientでコマンドで操作
takuya@vpnclient$ sudo ./vpncmd
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ
SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
Version 4.38 Build 9760   (Japanese)
Compiled 2021/08/17 22:32:49 by buildsan at crosswin
Copyright (c) SoftEther VPN Project. All Rights Reserved.

vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 2

接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
接続先のホスト名または IP アドレス: localhost

VPN Client "localhost" に接続しました。

VPN Client>

仮想NICを作成する

tap に接続されるSoftetherNICを作成する。

VPN Client>NicCreate
NicCreate コマンド - 新規仮想 LAN カードの作成
仮想 LAN カードの名前: se0

コマンドは正常に終了しました。

接続設定

コンソール画面から、接続設定を作るのは面倒なので、WindowsUbuntuから動作中の設定をインポートするほうが速いでしょう。

VPN Client>AccountImport
AccountImport コマンド - 接続設定のインポート
インポート元ファイル名: /path/to/file

とくに、仮想Hubの名前はServer側と密接に関わってるはずです。 適当に決められないはず。

他の動作済み設定をインポートするのが確実だと思います。

接続

VPN Client>AccountConnect
AccountConnect コマンド - 接続設定を使用して VPN Server へ接続を開始
接続設定の名前: ocn

IPアドレスの割当。

tapデバイスsoftether が使うので、tap デバイスIPアドレスを割り当てる。

Softetherの場合は、接続先がDHCPしていてて自動的に割り当てがほとんどだと思う。だからDHCPから割当もらえば十分。

sudo ipconfig set tap0 DHCP

ルーティングの追加。

接続ができたら、ルーティングを追加する。

sudo ip route add 10.100.10.0/24 via 10.9.100.254 dev tap0

私は、maciproute2相当のエイリアスを提供してくれるパッケージを入れてるので、ip route add で済ませた。

疎通の確認

route を確認してー

ip route get 10.100.10.100

ping を打ち込んでー

ping 10.100.10.100

ssh で接続してみる。

ssh -vvv 10.100.10.0

切断。

接続が終われば切断する。

VPN Client>AccountDisconnect
AccountDisconnect コマンド - 接続中の接続設定の切断
接続設定の名前: ocn

設定の確認

VPN Client>AccountGet
AccountGet コマンド - 接続設定の設定の取得
接続設定の名前: ocn

項目                                 |値
-------------------------------------+-----------------------------
接続設定名                           |ocn
接続先 VPN Server のホスト名         |vpn.example.ac.jp
接続先 VPN Server のポート番号       |443
接続先 VPN Server の仮想 HUB 名      |Vpn
経由するプロキシサーバーの種類       |直接 TCP/IP 接続
サーバー証明書の検証                 |無効
接続に使用するデバイス名             |seth0
認証の種類                           |RADIUS または NT ドメイン認証
ユーザー名                           |USER@EXAPLE
VPN 通信に使用する TCP コネクション数|1
各 TCP コネクションの確立間隔        |1
各 TCP コネクションの寿命            |無制限
半二重モードの使用                   |無効
SSL による暗号化                     |有効
データ圧縮                           |無効
ブリッジ / ルータモードで接続        |無効
モニタリングモードで接続             |無効
ルーティングテーブルを調整しない     |有効
QoS 制御機能を使用しない             |無効
コマンドは正常に終了しました。

対話型の省略

対話型のCLIは便利だけど、なれてくると面倒でしかないので。

次のように、コマンドに引数を与えると、一回で実行できるショートカットとして動作する。

sudo ./vpncmd /CLIENT localhost /CMD AccountList

もともとがWindowsのCMD.exe っぽいコマンドなので、「引数」にハイフンをつけずスラッシュ(/)で指定するのがちょっとわかりにくい。macOSでもスラッシュで指定ですね。

接続切断 の省略

接続切断はぱぱっと呼び出したい。

接続は、次のようにする

sudo ./vpncmd /CLIENT localhost /CMD AccountConnect ocn

切断は、次のようにする。

sudo ./vpncmd /CLIENT localhost /CMD AccountDisconnect ocn

切断したら、クライアントを終了する

ほんとこれよく忘れるので注意です。

sudo ./vpnclient stop

参考資料

https://qiita.com/ask/items/9ff1529d228ec093aa07

*1: っていうか、ネットワーク管理の業者がこの仕様を理解できないので、macOSからL2TPできないんです。設定してもらえないんです。