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.