「OpenConnect」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) |
Kusanaginoturugi (トーク | 投稿記録) 序章とインストール章を更新 |
||
| 1行目: | 1行目: | ||
[[Category:仮想プライベートネットワーク]] |
[[Category:仮想プライベートネットワーク]] |
||
[[en:OpenConnect]] |
[[en:OpenConnect]] |
||
[ |
[[pt:OpenConnect]] |
||
[https://www.infradead.org/openconnect/ OpenConnect] は、client-to-site VPNs 向けのフリーかつオープンソースのソフトウェアです。いわゆる SSL VPN サーバー/ゲートウェイ/コンセントレーターに接続することができ、具体的には以下に対応しています: |
|||
* Cisco AnyConnect ''anyconnect'' |
|||
:OpenConnect は Cisco の AnyConnect SSL VPN のクライアントです。ASA5500 シリーズ, IOS 12.4(9)T, Cisco SR500, 870, 880, 1800, 2800, 3800, 7200 シリーズ, Cisco 7301 ルーターなどによってサポートされています。 |
|||
* Palo Alto Networks (PAN) GlobalProtect ''gp'' |
|||
* Junos / Ivanti Pulse Secure ''pulse''、詳細は [[Pulse Connect Secure]] を参照 |
|||
* Juniper Network Connect ''nc'' |
|||
* Fortinet ''fortinet'' |
|||
* F5 ''f5'' |
|||
* Array Networks ''array'' |
|||
== インストール == |
== インストール == |
||
[[GNOME]] や [[KDE]] のような[[デスクトップ環境]]を使用している場合は、おそらく [[NetworkManager]] を利用しているため、その統合のために {{pkg|networkmanager-openconnect}} パッケージを[[インストール]]してください。このパッケージは依存関係として {{pkg|openconnect}} パッケージもインストールします。統合が不要な場合は、{{pkg|openconnect}} パッケージのみを[[インストール]]してください。 |
|||
{{pkg|openconnect}} パッケージを[[インストール]]してください。 |
|||
一部の VPN はスプリットルーティングとして構成されており、その結果スプリット DNS も使用されます。これに対応するため、また一般的にも、[[systemd-resolved]] と resolv.conf の stub モードを使用することが推奨されます。これを確認するには {{ic|resolvectl}} を実行し、''Global'' セクション内に "resolv.conf mode: stub" という行があるか確認してください。出力全体を理解することは非常に有用であるため、[https://systemd.io/RESOLVED-VPNS/ 学習]しておくとよいでしょう。VPN に接続している場合、出力は概ね以下のようになります: |
|||
{{hc|$ resolvectl| |
|||
Global |
|||
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC{{=}}no/unsupported |
|||
resolv.conf mode: stub |
|||
Link 2 (enp1s0) |
|||
Current Scopes: DNS |
|||
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC{{=}}no/unsupported |
|||
Current DNS Server: 192.168.0.1 |
|||
DNS Servers: 192.168.0.1 |
|||
DNS Domain: ~home.box |
|||
Link 3 (tun0) |
|||
Current Scopes: DNS |
|||
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC{{=}}no/unsupported |
|||
Current DNS Server: 10.10.10.10 |
|||
DNS Servers: 10.10.10.10 |
|||
DNS Domain: ~example.org ~int.example.net |
|||
}} |
|||
== 使用方法 == |
== 使用方法 == |
||
2026年3月19日 (木) 12:59時点における版
OpenConnect は、client-to-site VPNs 向けのフリーかつオープンソースのソフトウェアです。いわゆる SSL VPN サーバー/ゲートウェイ/コンセントレーターに接続することができ、具体的には以下に対応しています:
- Cisco AnyConnect anyconnect
- Palo Alto Networks (PAN) GlobalProtect gp
- Junos / Ivanti Pulse Secure pulse、詳細は Pulse Connect Secure を参照
- Juniper Network Connect nc
- Fortinet fortinet
- F5 f5
- Array Networks array
インストール
GNOME や KDE のようなデスクトップ環境を使用している場合は、おそらく NetworkManager を利用しているため、その統合のために networkmanager-openconnect パッケージをインストールしてください。このパッケージは依存関係として openconnect パッケージもインストールします。統合が不要な場合は、openconnect パッケージのみをインストールしてください。
一部の VPN はスプリットルーティングとして構成されており、その結果スプリット DNS も使用されます。これに対応するため、また一般的にも、systemd-resolved と resolv.conf の stub モードを使用することが推奨されます。これを確認するには resolvectl を実行し、Global セクション内に "resolv.conf mode: stub" という行があるか確認してください。出力全体を理解することは非常に有用であるため、学習しておくとよいでしょう。VPN に接続している場合、出力は概ね以下のようになります:
$ resolvectl
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (enp1s0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.0.1
DNS Servers: 192.168.0.1
DNS Domain: ~home.box
Link 3 (tun0)
Current Scopes: DNS
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.10.10.10
DNS Servers: 10.10.10.10
DNS Domain: ~example.org ~int.example.net
使用方法
OpenConnect は NetworkManager と一緒に使ったり、コマンドラインで手動で使用することができます。
NetworkManager
networkmanager-openconnect パッケージをインストールしてください。nm-applet (NetworkManager のトレイアイコン、network-manager-applet パッケージに含まれています) などのユーティリティを使って設定・接続します。インストール後、NetworkManager.service を再起動してください。
詳しくは NetworkManager を参照。
コマンドライン
root で openconnect を実行してユーザー名とパスワードを必要に応じて入力してください:
# openconnect vpnserver
もしくはユーザー名とパスワードを指定して実行してください:
# echo -n password | openconnect -u user --passwd-on-stdin vpnserver
VPN プロバイダは完全なトンネル接続、あるいはスプリットトンネル接続など、様々なアクセス構成にあわせて様々な認証グループを提供しています。様々な認証グループを表示して、サーバーへの接続についての詳細情報を得るには:
# openconnect --authenticate vpnserver
netctl の統合
シンプルな tuntap netctl.profile(5) を使うことで通常の netctl のワークフローに OpenConnect を統合することができます。例:
/etc/netctl/vpn
Description='VPN'
Interface=vpn
Connection=tuntap
Mode=tun
#User=root
#Group=root
BindsToInterfaces=(enp0s25 wlp2s0)
IP=no
PIDFILE=/run/openconnect_${Interface}.pid
SERVER=vpn.example.net
AUTHGROUP="<AUTHGROUP>"
LOCAL_USERNAME=<USERNAME>
REMOTE_USERNAME=<VPN_USERNAME>
# Assuming the use of pass(1):
PASSWORD="`su ${LOCAL_USERNAME} -c "pass ${REMOTE_USERNAME}" | head -n 1`"
ExecUpPost="echo '${PASSWORD}' | /usr/bin/openconnect --background --pid-file=${PIDFILE} --interface=${Interface} --authgroup=\"${AUTHGROUP}\" --user=${REMOTE_USERNAME} --passwd-on-stdin ${SERVER}"
ExecDownPre="kill -INT $(cat ${PIDFILE}) ; ip link delete ${Interface}"
以下のように実行することができます:
$ netctl start vpn $ netctl restart vpn $ netctl stop vpn
上記のプロファイルで使用している LOCAL_USERNAME は gpg-agent に依存しており、あらかじめ PGP 鍵のパスフレーズがキャッシュされている必要があります。gpg-agent が起動していない場合、pass からインタラクティブに取り合わせを行うことができません。