准备
这篇文章是帮助一个同学在Ubuntu环境下配置学校VPN的过程中产出的,其平台为 Ubuntu Desktop 20.10,学校提供的VPN接入为 L2TP/PPTP,使用Network Manager GUI完成配置. 由于本人常用的发行版不是Ubuntu, 因此对于Server版的配置流程不甚熟悉,Server版的同学可以使用nmcli即Network Manager CLI或编写L2TP配置文件实现.
- 在Ubuntu上安装必要依赖以支持L2TP.请根据自己的DE或网络管理配置选取合适的依赖. - sudo apt-get install network-manager-l2tp #NM 的L2TP插件 sudo apt-get install network-manager-l2tp-gnome #Gnome的设置面板
- 新增VPN.如果你依赖安装成功,则Network Manager的新增选项中应当出现L2TP的新增连接选项.选取,填入诸如服务器地址,用户名,密码等必要信息.
- PPP设置.这里参考学校给出的文档选择合适的身份验证方法. 我校允许 PAP,CHAP两种,但是基于兼容性考量,建议同时勾选MSCHAP的两项.下方设置按需勾选,似乎对于连通性影响不大.
- IPsec 设置. 这里参考学校对Windows和macOS的配置方案,如果提供了 Pre-Shared key(预共享密钥),则启用IPsec Tunnel并选取 PSK验证,填入密钥.大多数信息都能在针对 Windows/macOS的教程上找到相关设置.
- 一些Linux特有设置.相对于 Windows/macOS,在Linux上配置IPsec要特别注意以下几点: - 是否开启IKEv2 密钥交互协议?我校未开启,错误配置会导致无法连接.
- 加密算法(Phase1 Algorithms)是什么?这一点是在Linux上启用IPsec的关键,在其他系统上不需要用户手动配置,学校给出的文档也没有覆盖这一点.我校的算法是 - Phase1 Algorithms: des-sha1-modp768 Phase2 Algorithms: des-sha1
 
- 点击连接即可。如果出现问题,可以使用 nmcli的相关功能查看日志.如果右上角的图标在一段时间内变为VPN字样且无错误通知,那么应该是连接成功了。如果你想知道加密算法是怎么获得的,请看下节.
获取加密算法
这里的加密算法参数被很多教程忽略了,要么是建议穷举测试,要么建议联系VPN服务商....这里给出一个通用可行的方法.需要root权限.
- 安装 - ike-scan. IKE Scan是专门针对- IPsec VPN Servers进行嗅探和爆破的安全工具(是的,属于Kali Linux的预制软件套装),这里我们只用它来获取加密方式就好.APT包管理器可以直接安装.- sudo apt-get install ike-scan
- 嗅探: - 非常简单: - sudo ike-scan vpn.xxx.xxx(你的VPN服务器地址)- 返回示例如下,略去IP地址. - Starting ike-scan 1.9.4 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/) xxx.xxx.xxx.xxx Main Mode Handshake returned HDR=(CKY-R=2a5ae41ac67c049a) SA=(Enc=DES Hash=SHA1 Auth=PSK Group=1:modp768 LifeType=Seconds LifeDuration=28800) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0) VID=6c7bf882554ec286ee33c11826bb2891 Ending ike-scan 1.9.4: 1 hosts scanned in 0.200 seconds (5.01 hosts/sec). 1 returned handshake; 0 returned notify- 我们只关注SA参数部分: - SA=(Enc=DES Hash=SHA1 Auth=PSK Group=1:modp768 LifeType=Seconds LifeDuration=28800),这里就可以获取到加密方式和LifeTime.- 我们将其用 - -拼接得到- Phase1 Algorithms:- des-sha1-modp768(吐槽下这个古老的加密方式.)- 然后我直接将最后一部分去掉作为 - Phase2 Algorithms: des-sha1.- Lifetime填写 - 28800Seconds,注意设置面板中的项目单位,可能要转换为分钟.