我到处搜索我的帖子的答案。大多数结果都建议使用网络管理器,但我认为这不是我的解决方案,因为我运行的是没有 UI 的 Ubuntu 服务器。
有没有人有过使用命令行连接 L2TP 上的 VPN 隧道的经验?任何链接或线索都非常感谢。
谢谢
答案1
我正在寻找这个然后我在这里找到了一个开始的解决方案:
https://gist.github.com/pastleo/aa3a9524664864c505d637b771d079c9
但仍然需要 GUI,然后我决定测试并得到了完整的解决方案,如下所示:
注意:我使用的是 Centos 7,但我认为它适用于 Ubuntu
- 安装 NetworkManager-l2tp
Centos 7:
yum -y 安装 NetworkManager-l2tp
Ubuntu:(
安装前需要添加存储库)
sudo 添加 apt 存储库 ppa:nm-l2tp/network-manager-l2tp
apt-get 安装网络管理器-l2tp
- 以 root 身份运行此命令(运行前请自行进行更改,如下所示):
你必须改变:
- [vpnName] = 您的连接的名称
- [ipv4] = l2tp/ipsec 服务器的 ip
- [PSK] = 来自 l2tp/ipsec 服务器的预共享密钥
- [用户] = 要连接的用户名
- [用户密码] = 要连接的用户的密码
我不知道生成的 PSK 是否适合您,但对我来说是可行的。如果不只是连接到另一台带有 GUI 的 PC,则从文件 /etc/NetworkManager/system-connections/{vpn_name} 复制 PSK 并粘贴
就是这样!
显示生成的文件:nmcli c show id [vpnName]
从 CLI 启动 VPN:nmcli c up [vpnName]
从 CLI 停止 VPN:nmcli c down [vpnName]
希望它能够有所帮助,因为整个互联网上没有其他关于如何做到这一点的信息!
享受您的 l2tp/ipsec VPN!
答案2
我知道这是一篇旧帖子,但它今天对我有帮助,所以这是我的解决方案。
它没有像这样工作(ubuntu server 20.04),我按照另一个答案的建议尝试,在带有 GUI 的 VM 上建立连接,但我没有复制,而是比较了文件。ipsec 密钥不在 vpn.data 中,而是在 vpn.secrets 中,以纯文本形式,所以我更改了命令,它成功了。
我所做的是安装网络管理器
sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp
sudo apt install network-manager-l2tp
并运行这个命令
sudo nmcli connection add connection.id [vpnName] con-name [vpnName] type VPN vpn-type l2tp ifname -- connection.autoconnect no ipv4.method auto vpn.data "gateway = [ipv4], ipsec-enabled = yes, mru = 1400, mtu = 1400, password-flags = 0, refuse-chap = yes, refuse-mschap = yes, refuse-pap = yes, require-mppe = yes, user = [user]" vpn.secrets "password=[user-password], ipsec-psk = [PSK]"
更改:
- [vpnName] = 您的连接的名称
- [ipv4] = l2tp/ipsec 服务器的 ip
- [PSK] = 来自 l2tp/ipsec 服务器的预共享密钥
- [用户] = 要连接的用户名
- [用户密码] = 要连接的用户的密码
(删除括号)
连接和断开连接:
nmcli c up [vpnName]
nmcli c down [vpnName]
PS 这是我第一次回答,如有错误请多包涵