【 浅谈Linux路由机制 】
以下均为个人实验验证结果,如有问题,恳请指正。
现在服务器一般都有四张网卡,给了我们更多网络模型的选择。为了业务的需求,有时我们需要如下网络架构
系统:centos 7.2 x64
两张网卡不在同一个网络里,
eno16777736: 10.0.0.11/24
eno33554984: 192.168.111.128/24
ping 10.0.0.1
抓包查看如下:
证明网卡:报文是从eno16777736网卡出去的。
ping 192.168.111.129
抓包查看如下:
证明网卡报文是从eno33554984网卡出去的。
ping baidu.com
抓包如下:
证明连接外网是从eno16777736网卡出去的。
说明:在linux上,默认的配置就实现了如上的需求,接下来我们查看该服务器的路由情况。
为了进一步理解路由的作用,我们一条一条的分析。
首先删除第一条路由规则:
第一条路由规则为默认路由:
尝试ping 10.0.0.1
此时,我们在尝试ping baidu.com
网络直接返回不可达。
路由的概念:路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。
而当我们把默认路由删除,对于访问同网段10.0.0.0/24地址来说,不需要路由的转发,同网段的访问是直接mac地址通信,而当你要访问非本网段内的主机时,就需要一台设备明确的知道你要访问的主机在何处,而你的主机就必须指向这台设备才行,这台设备就启用转发的功能帮你完成数据包的发送,这个设备就叫做路由设备。
接下来,我们的路由表里还有两条路由规则:
10.0.0.0/24 dev eno16777736 proto kernel scope link src 10.0.0.11 metric 100
说明:当需要发送/接收网段为:10.0.0.0/24报文时,从 eno16777736 网卡进行发送/接收。
192.168.111.0/24 dev eno33554984 proto kernel scope link src 192.168.111.128 metric 100
说明:当需要发送/接收网段为:192.168.111.0/24报文时,从 eno33554984 网卡发送/接收。
删除第二条规则进行验证:
ping 192.168.111.129
对于本机网卡来说,此路由规则就好像是一扇门,当删掉这条路由规则时,门就关闭了,外面的人进不来,里面的人出不去。
因此,我们总结下:
在使用一张物理网卡的主机上,至少需要两条路由规则,一条为默认网关路由,一条为网卡路由。
在使用两张物理网卡的主机上,至少需要三条路由规则,一条为默认网关路由,两条为网卡路由。
以此类推。
如果想让服务器隔离外网,直接删除默认路由即可。
附:
ip route 命令使用如下; # ip route show 查看路由表 # ip route add default via 10.0.0.1 添加默认路由 # ip route del 192.168.111.0/24 删除路由 # ip route add 192.168.111.0/24 dev eno33554984 添加网卡路由