Pulse Connect Secure
Pulse Connect Secure (PCS, 旧名: Juniper SSL VPN) はビジネス向けの商用 VPN ソリューションです。
インストール
AUR
pulse-secureAUR パッケージをインストールしてサービスを実行:
$ pulsesvc -h <hostname> -Port <port number> -u <username> -realm <realm> -Url <login URL>
ログイン URL はブラウザで使用する URL とは違うので注意してください。#サーバー/URL に関するノートセクションを参照。
GUI クライアントの pulseUi
を使用するには webkitgtkAUR をインストールする必要があります。GUI クライアントでは URL はブラウザで使用する URL と同じです。
OpenConnect
OpenConnect の VPN クライアントは Pulse Connect Secure もサポートしています。詳しくは アナウンス を見てください。
使用するには openconnect をインストールします。Juniper VPN のセットアップが接続後に入力を必要としない場合、以下のコマンドで接続できます:
# openconnect --juniper https://vpn.example.com/
NetworkManager を使いたい場合は networkmanager-openconnect あるいは最新の git バージョンをインストールしてください。VPN 接続は GUI や以下のコマンドで作成できます:
$ nmcli con add type vpn con-name "Connection Name" ifname "*" vpn-type openconnect -- vpn.data "gateway=vpn.example.com,protocol=nc"
サードパーティスクリプト
JNC
1. 会社の VPN サイトを開いて、ログインしたら Juniper クライアントをダウンロード・インストールしてください。
2. jncAUR をインストールしてください。64ビット環境では32ビットのパッケージをインストールする必要があります (Multilib)。上流のウェブサイト を参照。
3. .config ファイルを保存するディレクトリを作成:
$ mkdir -p ~/.juniper_networks/network_connect/config
4. 作成したディレクトリに以下の .config ファイルを適宜修正してコピー:
~/.juniper_networks/network_connect/config/.config
host=foo.bar.com user=username password=secret realm= realm with spaces cafile=/etc/ssl/bar-chain.pem certfile=
- cafile
- ホストの証明書を検証する ca チェイン。
- certfile
- DER 形式のホスト証明書。Cafile または certfile は VPN のサインインページからダウンロードして設定できます (証明書情報から証明書をエクスポート)。
- realm
- VPN のサインインページのソースから realm を確認できます。realm という単語で検索してください。
5. Network Connect を起動:
$ jnc --nox
クライアントを停止するには:
$ jnc stop
MSJNC
Mad Scientist の "msjnc" スクリプト は gtk2-perl, glib-perl, unzip を必要とします。
64ビット環境の手順
Multilib を有効化して lib32-zlib, net-tools, glib-perl, perl-libwww, gtk2-perl パッケージをインストールしてください。
使用する Juniper VPN ウェブサイトにアクセスしたら、ログインしてインストールを試行してください。以下のようなエラーが表示されます:
Setup failed. Please install 32 bit Java and update alternatives links using update-alternatives command. For more details, refer KB article KB25230
これで ~/.juniper_networks/ncLinuxApp.jar
ファイルが作られるはずです。
ncLinuxApp.jar
がダウンロードされない場合、手動で取得してください。URL は次のようになっているはずです: https://server/dana-cached/nc/ncLinuxApp.jar
(先にログインが必要です)。
それから msjnc スクリプトをダウンロードして実行可能属性を付与して PATH
を通してください。
msjnc を使って ncsvc を自動でインストール
(ncsvc をインストールする前に) msjnc を初めて実行したときに ncLinuxApp.jar
が展開され、サービスをインストールするためにパスワードが要求されます。sudo を設定してユーザーが全てのコマンドを実行できるようにする必要があります。
suid で ~/.juniper_networks/network_connect/ncsvc
にサービスがインストールされたら、プロファイルを作成して接続してください。
msjnc の手動インストール
以下のディレクトリを作成:
$ mkdir -p ~/.juniper_networks/network_connect $ mkdir -p ~/.juniper_networks/tmp
ソフトウェアを展開:
$ unzip ~/.juniper_networks/ncLinuxApp.jar -d ~/.juniper_networks/tmp
NC.jar
を network_connect
ディレクトリにコピー:
$ cp ~/.juniper_networks/tmp/NC.jar ~/.juniper_networks/network_connect
サービスをインストール:
$ sh ~/.juniper_networks/tmp/installNC.sh ~/.juniper_networks/network_connect
msjnc を起動して、プロファイルを作成して接続してください。
サーバー/URL に関するノート
サーバー/URL にはログインページとは異なるログインフォームを処理する URL を指定する必要があります。例えば、ログインフォームが /dana-na/auth/url_0/welcome.cgi
にあったとしてもフォームが実際に処理されるのは /dana-na/auth/url_0/login.cgi
であったりします。ログインページの HTML からフォームの action 属性を探してください。
JVPN
JVPN Perl スクリプト は Juniper VPN 接続を確立して以下の機能をサポートしています:
- Host Checker による接続。
- root で実行したときに Juniper に必要な java とデーモンファイル (ncsvc) を自動でダウンロード。
インストール
perl の依存パッケージ perl-term-readkey と perl-lwp-protocol-https をインストールしてください。ダウンロードしたら、jvpn を root で実行するか通常ユーザーで実行するかによって以下のセクションの手順に従ってください。
root で実行
以下のコマンドを実行してください:
# curl -L https://github.com/samm-git/jvpn/archive/v0.7.0.tar.gz | tar xz
カレントディレクトリに jvpn-0.7.0
ファイルが作成されます。
以下のコマンドでスクリプトを起動してください:
# ./jvpn.pl
初めて起動したときにスクリプトは必要なファイルをすべてダウンロードします。
通常ユーザーで実行
ウェブブラウザを使って VPN のウェブサイトに接続して適切なソフトウェアをダウンロードしてください。ダウンロードしたファイルは ~/.juniper_networks/network_connect/
に配置されます (VPN 接続が失敗した場合でもダウンロードされます)。
ブラウザで Java プラグインを機能させる必要があるため複雑です (適切なセキュリティ設定が必要です)。Network Connect のインストール時に、ブラウザは ncsvc (Juniper デーモン) の setuid フラグを設定するための root パスワードを要求します。
そして以下のコマンドを実行して jvpn をフォルダにインストール:
$ cd ~/.juniper_networks/network_connect $ curl -L https://github.com/samm-git/jvpn/archive/v0.7.0.tar.gz | tar xz --strip-components=1
次に jvpn.ini
を編集してください (ファイル内に手順が書かれています)。
最後に、以下のコマンドでスクリプトを起動:
$ cd ~/.juniper_networks/network_connect $ ./jvpn.pl
トラブルシューティング
ログインは成功するのに Network Connect が確立しない
- 最初に Java がインストールされているか確認してください。
~/.juniper_networks/network_connect
を開いてください。ncsvc
の setuid が root に設定されていることを確認してください。設定されていない場合は修正してください。ldd ncsvc
を実行してライブラリが欠けていないか確認してください。- Juniper フォーラム に書かれている手順に従ってコマンドラインから実行してください。
-L 5
スイッチで全てをログに出力し root で strace を使います。また、ncsvc.log
にエラーが出力されていないか確認してください。
Network Connect が起動すると設定エラーメッセージが表示される
net-tools がインストールされているか確認してください。
ncapp.error Failed to connect/authenticate with IVE.
Ubuntu フォーラムの 投稿 を見てください。場合によっては、ポリシーによってコマンドラインからの接続が許可されないことがあります。bin32-jreAUR と bin32-firefoxAUR をインストールしてブラウザから認証してください。
ncsvc とカーネルのバージョン 3.19 と 4.5 から 4.9
Juniter VPN は linux 3.19 をサポートしていません。UNIXgr を見てください。
linux バージョン 4.5 から 4.9 でも問題が存在します (4.10 以上でもおそらく問題が発生します)。詳しくは カーネルのバグトラッカーの Bug 121131 を見てください。問題を解決する方法は2つあります:
- バージョン 4.4 までダウングレードするか linux-lts をインストールする。
- kernel bugzilla のコメントによれば IPv6 のルーター広告を無効化して再接続すれば問題が解決します。以下のコマンドでルーター広告を無効にできます:
# echo 0 > /proc/sys/net/ipv6/conf/default/router_solicitations
上記の設定を永続化するには systemd-tmpfiles を使います:
/etc/tmpfiles.d/disable-router-solicitations.conf
w /proc/sys/net/ipv6/conf/default/router_solicitations - - - - 0
Unauthorized new route has been added, disconnecting
pulse-secureAUR クライアントを使用している場合、ルーティングテーブルのストラテジが衝突して connman で VPN が使えないことがあります。~/.pulse_secure/pulse/pulsesvc.log
に以下のようなメッセージがないかチェックしてください:
rmon.error Unauthorized new route to x.x.x.x/y.y.y.y has been added (conflicts with our route to z.z.z.z), disconnecting (routemon.cpp:598)
上記のメッセージがある場合、NetworkManager を使用することで問題は解決します。