Mac下VPN路由分流

3,802 阅读2分钟

1.前言

因为肺炎疫情,今年一直在家通过VPN远程办公,公司配置的是IPSec上的L2TP的VPN,公司网管为了省事给的文档里让我们把"通过VPN连接发送所有流量"勾上,但是公司为了节省流量,VPN无法访问外网.所以想到使用路由表给VPN分流,只有公司内网流量走vpn,其他流量走默认网关.

2.配置

前往文件夹/etc/ppp下,创建ip-up文件,输入以下内容

#!/bin/sh
/sbin/route add -net 192.168.1.0/17 -interface ppp0
/sbin/route add -net 172.16.0.0/12 -interface ppp0
/sbin/route add -net 10.0.0.0/8 -interface ppp0

保持退出后执行,给与权限

sudo chmod 0775 /etc/ppp/ip-up

当vpn连接时,ppp会执行会执行ip-up脚本

其中ppp0是经以太网接口PPP拨号时创建的链路接口,通常vpn就是使用这个接口. 如果不确定可以查看一下,比如我们连的vpn是172.31.xxx.xxx

,在终端执行

netstat -nr

可以看到其对应ip的Gateway确为ppp0

192.168.1.0/17, 172.16.0.0/12, 10.0.0.0/8这几个是需要转发的网络地址.为什么填这几个呢? 要了解下背景.

3.子网掩码

子网掩码,必须结合IP地址一起对应使用,子网掩码和IP地址做“与”运算,分离出IP地址中的网络地址和主机地址.子网掩码的表示方法有两种:

点分十进制表示法:

子网掩码二进制11111111.11111111.00000000.00000000,表示为255.255.0.0

CIDR斜线记法:

192.168.0.0/20,其子网掩码表示为255.255.240.0,二进制表示为11111111.11111111.11110000.00000000,根据1的个数表示IP/n

IP地址类型

概念 特征 网络范围 默认掩码
A类 大规模的网络 1.0.0.0-126.0.0.0 255.0.0.0/8
B类 中规模的网络 128.0.0.0-191.255.0.0 255.255.0.0/16
C类 小规模的网络 192.0.0.0-223.255.255.0 255.255.255.0/24

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:

A类地址:10.0.0.0~10.255.255.255

B类地址:172.16.0.0~172.31.255.255

C类地址:192.168.0.0~192.168.255.255

4.内网地址

我们使用的内网地址配置所选用的就是192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8这几个,考虑到192.168.0.1~192.168.0.255一般是我的路由器分配的地址范围,所以修正为192.168.1.0/17.