以下均为个人实验验证结果,如有问题,恳请指正。

现在服务器一般都有四张网卡,给了我们更多网络模型的选择。为了业务的需求,有时我们需要如下网络架构

系统: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路由机制 】的更多相关文章

  1. 浅谈Linux中的信号处理机制(二)

    首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...

  2. 浅谈 Linux 内核无线子系统

    浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...

  3. 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)

    我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...

  4. (转)浅谈 Linux 内核无线子系统

    前言 Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高 ...

  5. []转帖] 浅谈Linux下的五种I/O模型

    浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html  一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是 ...

  6. Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理

    Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...

  7. 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释

    浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...

  8. 浅谈Linux下/etc/passwd文件

    浅谈Linux 下/etc/passwd文件 看过了很多渗透测试的文章,发现在很多文章中都会有/etc/passwd这个文件,那么,这个文件中到底有些什么内容呢?下面我们来详细的介绍一下. 在Linu ...

  9. 浅谈linux IO csy 360技术 2021-01-18

    浅谈linux IO csy 360技术 2021-01-18

随机推荐

  1. LeetCode 3——无重复字符的最长子串

    1. 题目 2. 解答 2.1. 方法一 我们从前往后遍历字符串,start 代表最长子串的起始位置,一开始设置为零. 如果没有遇到重复字符,则更新子串的长度,向后遍历. 如果遇到重复字符时,则更新字 ...

  2. kaldi解码及特征提取详解

    目录 1. 注意事项 2. 流程图: 3. 具体流程指令: 1. 注意事项 首先要训练好模型,用到3个文件,分别是: final.mdl(训练模型得到的模型文件) final.mat(用来特征转换) ...

  3. sping事务的理解

    阅读数:2020 一.事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤 ...

  4. lintcode-95-验证二叉查找树

    95-验证二叉查找树 给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为: 节点的左子树中的值要严格小于该节点的值. 节点的右子树中的值要严格大于该节点的值. 左右子树也必须是二 ...

  5. DataView RowFilter Syntax [C#]

    RowFilter语法 private void btnEnquiry_Click(object sender, EventArgs e) { string filterExpression = st ...

  6. 用js通过url传参把数据从一个页面传到另一个页面

    好长时间没写博客了,时值五一,外面到处人山人海,本宝宝还是好好呆在家学习吧.好了,言归正传.在没有后台支持的情况下,如何实现从一个页面像另一个页面来传递数据呢?应该很多人遇到过这个问题吧.那我就来说说 ...

  7. [STL] 遍历删除两个vector中交集

    #include <vector> #include <string> #include <algorithm> using namespace std; int ...

  8. 隐马尔可夫模型HMM

    隐马尔可夫模型HMM的探究 1 HMM基本概念1.1 定义1.2 观测序列生成过程1.3 HMM的三个问题2 概率计算算法2.1 直接计算算法2.2 前向算法forward algorithm2.3 ...

  9. Python数据分析(二)pandas缺失值处理

    import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e' ...

  10. 第一个贴上XMT标签的Hadoop程序

    距离老板留给我并行化做属性约简的任务开始到今天,已是一周有余,期间经历过各种呕心沥血,通宵达旦,终于运行出了一个结果.其中在配置过程中,浪费了爷大量的时间,有时回想自己上个周干的事情,会觉得分明的本末 ...