VPN(L2TP)
在macOS系统下常常用到L2TP类型的VPN来接入公司网络. 但是通常情况下, 这种类型的VPN一旦接入, 会导致本机所有的流量流经该VPN. 包括对外网资源的访问. 如果公司外网较慢, 或者公司内网没有网络, 会严重影响本机访问外网的速度。
之所以开启了VPN后会这样,是因为VPN软件优先使用其路由的标准技巧(添加路由,让路由共同覆盖了所有IP地址,但是每条路由都比默认路由更具体,因此系统决定优先级的时候,他们将会获胜,获得高优先级)
注意
网络有优先级服务顺序,开启L2TP VPN后发现无效,内网还是访问不了,但是设置L2TP为第一个服务顺序的话就可以访问。可是这样的话,如果内网不具备访问互联网的功能的话,就会导致我们电脑也不会有网,只能访问内网。每次需要访问互联网的时候就需要关闭VPN,来来回回切换就会体验很不好。
获取未连接vpn前的网关地址
1
# 查看Internet(IPV4)中第一条default路由
2
netstat -nr
3
4
# 结果如下
5
Routing tables
6
7
Internet:
8
Destination Gateway Flags Refs Use Netif Expire
9
default 192.168.1.1 UGSc 114 0 en0
10
127 127.0.0.1 UCS 0 0 lo0
11
127.0.0.1 127.0.0.1 UH 83 228978 lo0
12
13
# 记录网关地址192.168.1.1
设置指定流量通过路由表
查看本机DNS
1
nslookup store.chanjet.com
2
'''
3
Server: 240e:1f:1::1 # 这个就是DNS
4
Address: 240e:1f:1::1#53
5
6
Non-authoritative answer:
7
store.CHANJET.com canonical name = 6owaxcscwy0pzpp3yiyjlxekirsg2bmf.yundunwaf.com.
8
Name: 6owaxcscwy0pzpp3yiyjlxekirsg2bmf.yundunwaf.com
9
Address: 59.110.244.1
10
'''
11
12
# 或者
13
cat /etc/resolv.conf |grep nameserver
14
'''
15
nameserver 240e:1f:1::1
16
nameserver 240e:1f:1::33
17
nameserver 192.168.1.1
18
'''
配置流量表
1
# 以root身份进入/etc/ppp,查看是否有ip-up文件,没有就创建
2
cd /etc/ppp
3
sudo su
4
touch ip-up
5
vim ip-up
6
7
# ip-up内容如下
8
'''
9
#!/bin/sh
10
11
# 192.168.8.103是需要转发的网络地址,$1是ppp0的接口,打开vpn, 系统执行的时候会传入该参数
12
/sbin/route add -net 192.168.8.103 -interface $1
13
/sbin/route add -net 240e:1f:1::1 -interface $1 # 添加dns服务器的路由
14
15
# 删除默认路由
16
/sbin/route delete default
17
# 添加默认路由为指定的地址
18
/sbin/route add default 192.168.1.1
19
'''
20
21
# 完了后设置一下文件权限
22
chmod 0755 /etc/ppp/ip-up
在偏好设置/网络中将电脑VPN设置中的通过VPN连接发送所有流量的选项勾选去掉
在偏好设置/网络中将wifi/以太网口设置为第一服务顺序,VPN(L2TP)为最后
这么做的目的是为了调整优先级。(在MacOS上是如此调整的)
1
# 查看网络优先级顺序(也可直接去偏好设置查看)
2
$ networksetup -listnetworkserviceorder
3
An asterisk (*) denotes that a network service is disabled.
4
(1) USB Ethernet
5
(Hardware Port: USB Ethernet, Device: en7)
6
7
(2) Wi-Fi
8
(Hardware Port: Wi-Fi, Device: en0)
9
10
(3) VPN (L2TP)
11
(Hardware Port: L2TP, Device: )
12
13
(4) Bluetooth PAN
14
(Hardware Port: 蓝牙 PAN, Device: en6)
15
16
# 更改顺序
17
networksetup -ordernetworkservices
最后路由表
1
# 最后路由
2
Internet:
3
Destination Gateway Flags Refs Use Netif Expire
4
default 192.168.1.1 UGSc 89 0 en0
5
default link#18 UCSI 0 0 ppp0
6
1.0.0.1 192.168.11.138 UH 0 0 ppp0
7
124.192.100.194 192.168.1.1 UGHS 4 1449 en0
路由表介绍
查看路由表命令
如果启用了IPv6选项,则路由表将同时显示IPv4和IPv6信息
1
netstat -rn
2
route -s
路由表标志解释
标志 描述 U Up-路由有效 G Gateway-路由是到网关路由器,而不是直接连接的网络或主机 H Host name- 路由是到主机的,而不是到目标地址是完整地址的网络 R Reject-条目到期时由ARP设置(例如,无法将IP地址解析为MAC地址) D Dynamic-通过路由重定向或RIP添加的路由(如果启用了路由) M Modified-通过路由重定向修改的路由 C Cloning-使用时将从该条目中克隆一条新路由 L Link-存在链路级信息,例如以太网MAC地址 S Static-用route命令添加的路由 系统选择路由时遵循的规则
查找最具体的(即匹配前缀最长的那些)
选择优先级最高的一个
1
# Linux
2
在Linux/Windows上,优先级由metric决定
3
4
# MacOS
5
在macOS上并非如此。macOS不会为单个路由分配指标,而是为接口分配优先级。