我想用nmcli
它来连接到我通常使用 Cisco Annyconnect 的 VPN。
我已经安装了networkmanager-openconnect
软件包(在 Arch 中),现在我想通过nmcli
.然而,nmcli
界面对我来说似乎太复杂了。
看了一下nmcli c add help
,应该是这样的:
Usage: nmcli connection add { ARGUMENTS | help }
ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]<setting>.<property> <value>)+]
和:
TYPE_SPECIFIC_OPTIONS:
...
vpn: vpn-type vpnc|openvpn|pptp|openconnect|openswan|libreswan|ssh|l2tp|iodine|...
[user <username>]
但帮助消息中的解释对我来说太简洁了,我在网上找不到任何示例。
nmcli
用于类似目的的任何人都可以在这里分享他们的例子吗?
失败的尝试
有一个配置示例这里。探索可用的手册页我什至没有找到form:main:group_list=CLIENTGROUP
应该做什么。
失败:
Error: Connection activation failed: No valid secrets
对于那些寻找最简单的选择的人;你可以openconnect
直接使用:
sudo openconnect my.vpn.gateway
只要您不需要将其提供给非 sudoer,那么这种方法就有效。当这种情况发生时,围绕名称解析的情节就会变得复杂(参见这里)。
我更愿意nmcli
处理这个问题。
答案1
我可以向您展示我在 Debian 11 上的 cisco anyconnect 配置的配置。该.nmconnection
文件存储在/etc/NetworkManager/system-connetictions
.
[connection]
id=CONNECTION_NAME
uuid=528f01b5-111e-4f9c-848f-b3234c0d733a
type=vpn
autoconnect=false
permissions=
[vpn]
authtype=password
autoconnect-flags=0
certsigs-flags=0
cookie-flags=2
enable_csd_trojan=no
gateway=VPN_URL
gateway-flags=2
gwcert-flags=2
lasthost-flags=0
pem_passphrase_fsid=no
prevent_invalid_cert=no
protocol=anyconnect
stoken_source=disabled
xmlconfig-flags=0
service-type=org.freedesktop.NetworkManager.openconnect
[vpn-secrets]
autoconnect=yes
form:main:group_list=GROUP
form:main:username=USERNAME
lasthost=VPN_URL
save_passwords=yes
你必须更换CONNECTION_NAME
,,, .VPN_URL
GROUP
USERNAME
那天我做了很多努力才让它发挥作用。所以我不确定我是怎么做到的。我不再知道我是否在文本编辑器中通过nmtui
或通过 NetworkManager-GUI 创建了该文件。我从来没有用过nmcli
。我假设我使用 NetworkManager GUI 创建连接,因为nmtui
它无法处理 VPN。特别是eduroam
互联网上有很多例子。
答案2
我通过运行找到了线索:
nmcli connection show CONNECTION_NAME
对于已经工作的连接。
这里有一段设置 VPN 连接的脚本:
# Helper error function
fail()
{
echo "$*" 1>&2
exit 1
}
name="Connection Name"
gateway="my.gateway.com"
group_name="VpnGroup"
group_passwd="GroupSecret"
username="remoteuser"
local_user="localuser"
nmcli connection add con-name "$name" type vpn vpn-type vpnc ||
fail "Unable to create the connection"
nmcli connection modify "$name" \
"autoconnect" "false" \
"connection.permissions" "user:$local_user" \
"vpn.data" "IKE DH Group=dh2,
IPSec ID=$group_name,
IPSec gateway=$gateway,
IPSec secret-flags=0,
Local Port=0,
NAT Traversal Mode=natt,
Perfect Forward Secrecy=server,
Vendor=cisco,
Xauth password-flags=2,
Xauth username=$username,
ipsec-secret-type=save,
xauth-password-type=ask" \
"vpn.secrets" "IPSec secret=$group_passwd" \
"ipv6.ip6-privacy" "0"