> 注意:如果你公司的 VPN 网络是在苹果下使用的,本文可能不适用(苹果系统不支持 PPTP)。
用 Linux 和用 Windows/macOS 不一样,它真的需要用户操心很多东西。比如怎么连接公司的 VPN 网络……
我是折腾了挺久,反正系统自带的 VPN 连接管理界面,不管你怎么配置,就是用不了!!!
最后,我翻了 arch 的官方文档,发现有一个叫 [PPTP Client](https://wiki.archlinux.org/title/PPTP_Client) 的东西,配置起来超级简单,敲几下命令就连接上了……
真正连上的那一瞬间,真的很有成就感!趁热记录下来:)
好了, 我们进入正题,首先是安装:
```bash
sudo pacman -S pptpclient
```
然后配置一下连接(起名叫 company):
```bash
sudo pptpsetup --create company --server 域名或 IP 地址 --username 账号 --password 密码 --encrypt
```
可以用以下命令测试一下 company 连接:
```bash
sudo pon company debug dump logfd 2 nodetach
```
会打印一堆调试信息,并最终程序卡住不会退出。连接成功后,你会看到一个 ppp0 的网卡:
```bash
ip addr
```
要用公司 VPN 连接的时候,需要加个路由:
```bash
sudo pon company
sudo ip route add default dev ppp0
```
结束使用时去掉就好了:
```bash
sudo ip route del default dev ppp0
sudo poff company
```
经过以上步骤配置后,就可以使用了。
但我发现特别卡,ping 了一下发现丢包率很高(6%)。
网上搜索了一圈资料,最终确定和 MTU 有关系(默认是 1500),我参考了 macOS 的 1280,设置后一切正常,不再丢包了!
```bash
sudo ifconfig ppp0 mtu 1280
```
MTU 设置太大会被分片,太小影响效率。因此需要设置成一个合理值,保证网络的可靠性的同时,实现传输效率的最大化。
> MTU 一般网络设备都是 1500。如果本机的 MTU 比网关大,大的数据包会被拆分传送,会产生大量数据包碎片,增加丢包率,降低网络传输速度。
检查的话,可以使用以下命令:
```bash
ping -s 1472 -M do 192.168.1.123
```
它表示发送 1472 28 字节的数据包,并禁止路由器拆包。
- 如果正常回复,说明网络最大 MTU 是 1500,与系统默认一致;
- 如果不正常,说明超过网络限定大小,需要减小探测包大小再次尝试。
注:1500 = 1472 8(ICMP 回显请求和应答报文的格式长度) 20(IP 头)。
还是挺多命令要敲的,为了方便,我加了两个 alias,大家可以根据实际情况配置:
```bash
alias onn_company="sudo pon company && sleep 5 && sudo ip route add default dev ppp0 && sudo ifconfig ppp0 mtu 1280"
alias off_company="sudo ip route del default dev ppp0 && sudo route del -host 1.2.3.4 dev enp2s0 && sudo poff company"
```
- sleep 5 使得连接后等一下下,再改路由;不 sleep 的话网络会卡一下,体验不是很好;
- ifconfig 修改后的 MTU 重启电脑会丢失,但这个不是很重要,我觉得也没必搞成永久生效了;
- route del -host 1.2.3.4 需要改成你公司的 VPN 的 IP,我发现有时候 del default 不好使,原因不明(可能我连接多次了)。
整体上还是挺方便的,简单几行命令就搞定了。
---
> 文章来源于本人博客,发布于 2022-04-27,原文链接:[https://imlht.com/archives/257/](https://imlht.com/archives/257/)