【 浅谈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/ 删除路由
# ip route add 192.168.111.0/ dev eno33554984 添加网卡路由
【 浅谈Linux路由机制 】的更多相关文章
- 浅谈Linux中的信号处理机制(二)
首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...
- 浅谈 Linux 内核无线子系统
浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...
- 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)
我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...
- (转)浅谈 Linux 内核无线子系统
前言 Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高 ...
- []转帖] 浅谈Linux下的五种I/O模型
浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html 一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是 ...
- Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...
- 浅谈Linux下/etc/passwd文件
浅谈Linux 下/etc/passwd文件 看过了很多渗透测试的文章,发现在很多文章中都会有/etc/passwd这个文件,那么,这个文件中到底有些什么内容呢?下面我们来详细的介绍一下. 在Linu ...
- 浅谈linux IO csy 360技术 2021-01-18
浅谈linux IO csy 360技术 2021-01-18
随机推荐
- remix无法安装的解决方案
无法安装的原因: 因为remix依赖python 执行python又依赖c++的环境 所以连环导致出错 https://github.com/nodejs/node-gyp 措施一:降级处理 先清理缓 ...
- UGUI 代码 动态添加 Event Trigger 的事件
Additionally, if you need more than just the events provided by default, I'd suggest instead attachi ...
- java获得采集网页内容的方法小结
为了写一个java的采集程序,从网上学习到3种方法可以获取单个网页内容的方法,主要是运用到是java IO流方面的知识,对其不熟悉,因此写个小结. import java.io.Buffe ...
- 甲级1002 A+B for Polynomials (25)
题目描述: This time, you are supposed to find A+B where A and B are two polynomials. Input Each input fi ...
- lintcode-49-字符大小写排序
49-字符大小写排序 给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序. 注意事项 小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置. 样例 给出"abAc ...
- 【SSH】——spring的控制反转和依赖注入
spring是一个轻量级的容器框架,主要是为了使企业的开发变得简单.高效.无论是从大小还是开销来讲,他都可以算是轻量级的,也是非侵入性的. 下图是spring的框架示意图,说到spring,就不得不提 ...
- Bjarne Stroustrup语录2
一.致读者 1. 在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示.让程序的结构尽可能地直接反映这些思想: ★.如果你能把“它”看成一个独立的概念,就把它做成一个类. ...
- JavaScript中常用转义字符
\b 退格 \f 换页 \r 回车 \n 换行 \" 双引号 \' 单引号 \t Tab字符 \\ 反斜杠 \xnn 十六进制代码nn表示的字符 \unnnn 十 ...
- sessionStorage的用法总结
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...
- [洛谷P1879][USACO06NOV]玉米田Corn Fields
题目大意:有一个$n\times m$的矩阵,$(1 \leq m \leq 12; 1 \leq n \leq 12)$,想在其中的一些格子中种草,一些格子不能种草,且两块草地不相邻.问有多少种种植 ...