如何在 nmcli 中设置 VPN 连接?

如何在 nmcli 中设置 VPN 连接?

我想用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_URLGROUPUSERNAME

那天我做了很多努力才让它发挥作用。所以我不确定我是怎么做到的。我不再知道我是否在文本编辑器中通过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" 

相关内容