在项目中遇到多网域的场景非常多见,我们以某县城市管理局数字城管项目进行案例分析。该项目需要搭建一套视频监控平台,平台服务端需要接入天网的前端设备,前端设备分布在两家运营商独立的局域网。平台服务器通过网络硬件防火墙映射到公网IP,使部分通过互联网的客户端来访问平台服务端,简易网络拓扑图如下所示。
IP地址规划
路由选择
我们在做路由规划的时候需要了解以下知识点,如果这些知识点不清楚,那么配置网络后可能将达不到预期效果。
- 多个网卡需要配置网关时,只能选择其中一个网卡的配置文件写GATEWAY网关参数。如果多个网卡配置里都存在GATEWAY参数,那么生效的将是最后一个网关,其他的网关不会生效,那么就达不到我们预期的效果。
- 既然需要网关作为出口但是又不能在网卡配置文件里写,那么只能通过另外再写静态路由来实现跨vlan通信。问题来了,那么选谁作为默认路由,谁作为静态路由呢?请记住一个原则,目的网段可以明确的即可作为静态路由(天网网段是明确知道范围的),未知目的网段必须作为默认路由(互联网不能确认具体IP)。
综上两点最终只能选择内网网卡对应的网关作为默认路由,电信和移动天网网卡对应的网关作为静态路由,在编写静态路由时我们需要指定目标参数。
现在可以进行网络IP和静态路由的配置了,三个网卡的配置文件分别如下:
内网网卡ens2f3
电信天网网卡ens2f0
移动天网网卡ens2f1
配置完成后IP信息
CentOS7静态路由可通过临时生效和永久生效来实现,临时生效时重启网络服务或者重启主机时路由将会丢失。
临时路由命令实现语法:
- route命令实现
route add -net 172.20.0.0/16 gw 172.20.72.1 dev ens2f0
add/del 增加/删除
net/host 网段/单个IP
gw 网关
dev 网卡
172.20.0.0/16 包含了172.20开头所有IP地址
172.20.72.1为ens2f0的IP172.20.72.156网关 - ip命令实现
ip route add 172.20.0.0/16 via 172.20.72.1 dev ens2f0
add/del 增加/删除
via 网关 - 查看当前路由
route -n
永久配置路由实现方法:
- 创建路由配置文件,默认不存在,格式为route-网关名称
vi /etc/sysconfig/network-scripts/route-ens2f0 - 写入静态路由参数
172.20.0.0/16 via 172.20.72.1 dev ens2f0 - 重启网络服务生效
systemctl restart network - 查看当前路由
route -n
Destination | 目标网段或者主机 |
Gateway | 网关地址,”*” 表示目标是本主机所属的网络,不需要路由 |
Genmask | 网络掩码 |
Flags | 标记。一些可能的标记如下: |
U — 路由是活动的 | |
H — 目标是一个主机 | |
G — 路由指向网关 | |
R — 恢复动态路由产生的表项 | |
D — 由路由的后台程序动态地安装 | |
M — 由路由的后台程序修改 | |
! — 拒绝路由 | |
Metric | 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) |
Ref | 路由项引用次数(linux 内核中没有使用) |
Use | 此路由项被路由软件查找的次数 |
Iface | 该路由表项对应的输出接口 |