mac で softether への接続
できなくはないけど、設定がめんどくさい。
いくつか手順が必要。
公式マニュアルは、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 関連資料
- https://takuya-1st.hatenablog.jp/entry/2018/09/05/170339
- https://takuya-1st.hatenablog.jp/entry/2016/08/11/143928
softether の準備
softether の mac版はコマンドクライアントから持ってきます。
ダウンロード
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
ビルド
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を作成する
VPN Client>NicCreate NicCreate コマンド - 新規仮想 LAN カードの作成 仮想 LAN カードの名前: se0 コマンドは正常に終了しました。
接続設定
コンソール画面から、接続設定を作るのは面倒なので、WindowsやUbuntuから動作中の設定をインポートするほうが速いでしょう。
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
私は、macに iproute2相当のエイリアスを提供してくれるパッケージを入れてるので、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