1.基础知识

1.1 路由 (Routing)

1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库)

基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。

ip rule 命令:
  • Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; llist 列表)
  • SELECTOR := [ from PREFIX 数据包源地址] [ to PREFIX 数据包目的地址] [ tos TOS 服务类型][ dev STRING 物理接口] [ pref NUMBER ] [fwmark MARK iptables 标签]
  • ACTION := [ table TABLE_ID 指定所使用的路由表] [ nat ADDRESS 网络地址转换][ prohibit 丢弃该表| reject 拒绝该包| unreachable 丢弃该包]
  • [ flowid CLASSID ]
  • TABLE_ID := [ local | main | default | new | NUMBER ]

例子:

  • ip rule add from 192.203.80/24 table inr.ruhep prio 220 通过路由表 inr.ruhep 路由来自源地址为192.203.80/24的数据包
  • ip rule add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320 把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由

在 Linux 系统启动时,内核会为路由策略数据库配置三条缺省的规则:

  • 0 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特殊的路由表,包含对于本地和广播地址的高优先级控制路由。rule 0非常特殊,不能被删除或者覆盖。
  • 32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。
  • 32767 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理。这个规则也可以删除。

不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,而且某些路由表可以没有策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表就没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。

(资料来源)

1.1.2 路由表 (使用 ip route 命令操作静态路由表)

所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。打个比方,路由表就像我们平时使用的地图一样,标识着各种路线,路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表根据其建立的方法,可以分为动态路由表和静态路由表。

linux 系统中,可以自定义从 1-252个路由表,其中,linux系统维护了4个路由表:

  • 0#表: 系统保留表
  • 253#表: defulte table 没特别指定的默认路由都放在改表
  • 254#表: main table 没指明路由表的所有路由放在该表
  • 255#表: locale table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改

路由表的查看可有以下二种方法:

  • ip route list table table_number
  • ip route list table table_name

路由表序号和表名的对应关系在 /etc/iproute2/rt_tables 文件中,可手动编辑。路由表添加完毕即时生效,下面为实例:

  • ip route add default via 192.168.1.1 table 1 在一号表中添加默认路由为192.168.1.1
  • ip route add 192.168.0.0/24 via 192.168.1.2 table 1 在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2

以下面的路由表为例:

Destination    Netmask    Gateway          Interface    Metric
0.0.0.0    0.0.0.0    192.168.123.254    192.168.123.88    1 #缺省路由,目的地址不在本路由表中的数据包,经过本机的 192.168.123.88 接口发到下一个路由器 192.168.123.254
127.0.0.0    255.0.0.0    127.0.0.1    127.0.0.1    1        #发给本机的网络包
192.168.123.0    255.255.255.0    192.168.123.68    192.168.123.68    1 #直连路由。目的地址为 192.168.123.0/24 的包发到本机 192.168.123.88 接口
192.168.123.88    255.255.255.255    127.0.0.1    127.0.0.1    1        #目的地址为 192.168.123.88的包是发给本机的包
192.168.123.255    255.255.255.255    192.168.123.88    192.168.123.88    1 #广播包的网段是 192.168.123.0/24,经过 192.168.123.88 接口发出去
224.0.0.0    224.0.0.0    192.168.123.88    192.168.123.88    1             #多播包,经过 192.168.123.88 接口发出去
255.255.255.255    255.255.255.255    192.168.123.68    192.168.123.68    1 #全网广播包
Default Gateway: 192.168.123.254

各字段说明:

  • destination:目的网段
  • mask:与网络目标地址相关联的网掩码(又称之为子网掩码)。子网掩码对于 IP 网络地址可以是一适当的子网掩码,对于主机路由是 255.255.255.255 ,对于默认路由是 0.0.0.0。如果忽略,则使用子网掩码 255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系,目标地址不能比它对应的子网掩码更为详细。换句话说,如果子网掩码的一位是 0,则目标地址中的对应位就不能设置为 1。
  • interface:到达该目的地的本路由器的出口ip
  • gateway: 下一跳路由器入口的 ip,路由器通过 interface 和 gateway 定义一调到下一个路由器的链路。通常情况下,interface 和 gateway 是同一网段的metric 跳数,该条路由记录的质量,一般情况下,如果有多条到达相同目的地的路由记录,路由器会采用metric值小的那条路由

根据子网掩码,可以将路由分为三种类型:

  • 主机路由:机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。
Destination    Gateway       Genmask        Flags     Metric    Ref    Use    Iface
-----------    -------     -------            -----     ------    ---    ---    -----
10.0.0.10     192.168.1.1    255.255.255.255   UH       0    0      0    eth0
  • 网络路由:网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。
Destination    Gateway       Genmask      Flags    Metric    Ref     Use    Iface
-----------    -------     -------         -----    -----   ---    ---    -----
192.19.12     192.168.1.1    255.255.255.0      UN      0       0     0    eth0
  • 默认路由:当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。
Destination    Gateway       Genmask    Flags     Metric    Ref    Use    Iface
-----------    -------     ------- -----      ------    ---    ---    -----
default       192.168.1.1     0.0.0.0    UG       0        0     0    eth0

设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

其中:

  • add : 添加一条路由规则,del : 删除一条路由规则,-net : 目的地址是一个网络,-host : 目的地址是一个主机,target : 目的网络或主机
  • netmask : 目的地址的网络掩码,gw : 路由数据包通过的网关,dev : 为路由指定的网络接口

比如:

  • route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
  • route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7

(数据来源:(1),(2),(3))

关于 src 属性:

当一个主机有多个网卡配置了多个 IP 的时候,对于它产生的网络包,可以在路由选择时设置源 IP 地址。比如:

ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12 (发到 78.22.45.0/24 网段的网络包,下一跳的路由器 IP 是 10.45.22.1,包的源IP地址设为10.45.22.12)。

要注意的是,src 选项只会影响该 host 上产生的网络包。如果是一个被路由的外来包,明显地它已经带有了一个源 IP 地址,这时候,src 参数的配置对它没有任何影响,除非你使用 NAT 来改变它。对 Neutron 来说,qrouter 和 qif namespace 中的路由表中的 src 都没有实际意义,因为它们只会处理外来的网络包。

1.1.3 路由分类之静态路由

静态路由是指由用户或网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递给其他的路由器。当然,网管员也可以通过对路由器进行设置使之成为共享的。静态路由一般适用于比较简单的网络环境,在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息。

以上面的拓扑结构为例,在没有配置路由的情况下,计算机1 和 2 无法互相通信,因为 1 发给 2 的包在到达路由器 A 后,它不知道怎么转发它。B 也同样。管理员可以配置如下的静态路由来实现 1 和 2 之间的通信:

计算机配置默认网关:

  • 计算机1 上:route add default gw 192.168.1.1
  • 计算机2 上:route add default gw 192.168.3.1

路由器配置:

  • R1 上:ip route 192.168.3.0 255.255.255.0 f0/1 (意思为:目标网络地址为 192.168.3.0/24 的数据包,经过 f0/1 端口发出)
  • R2 上:ip route 192.168.1.0 255.255.255.0 f0/1 (意思为:目标网络地址为 192.168.1.0/24 的数据包,经过 f0/1 端口发出)

或者

  • R1 上:ip route 192.168.3.0 255.255.255.0 192.168.2.2 (意思为:要去 192.168.3.0/24 的数据包,下一路由器 IP 地址为 192.168.2.2)
  • R2 上:ip route 192.168.1.0 255.255.255.0 192.168.2.1

(来源:http://baike.baidu.com/view/911.htm)

1.1.4 路由分类之动态路由

动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。它是与静态路由相对的一个概念,指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。

常见的动态路由协议有以下几个:路由信息协议(RIP)、OSPF(Open Shortest Path First开放式最短路径优先)、IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)、边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。

(来源:http://baike.baidu.com/view/897.htm)

1.1.5 ip rule,ip route,iptables 三者之间的关系

以一例子来说明:公司内网要求192.168.0.100 以内的使用 10.0.0.1 网关上网 (电信),其他IP使用 20.0.0.1 (网通)上网。

  1. 首先要在网关服务器上添加一个默认路由,当然这个指向是绝大多数的IP的出口网关:ip route add default gw 20.0.0.1
  2. 之后通过 ip route 添加一个路由表:ip route add table 3 via 10.0.0.1 dev ethX (ethx 是 10.0.0.1 所在的网卡, 3 是路由表的编号)
  3. 之后添加 ip rule 规则:ip rule add fwmark 3 table 3 (fwmark 3 是标记,table 3 是路由表3 上边。 意思就是凡事标记了 3 的数据使用 table3 路由表)
  4. 之后使用 iptables 给相应的数据打上标记:iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.1 - 192.168.0.100 -j MARK --set-mark 3

因为 mangle 的处理是优先于 nat 和 fiter 表的,所以在数据包到达之后先打上标记,之后再通过 ip rule 规则,对应的数据包使用相应的路由表进行路由,最后读取路由表信息,将数据包送出网关。

(来源:使用 ip route , ip rule , iptables 配置策略路由。这里 有一个更详细的例子)

这里可以看出 Netfilter 处理网络包的先后顺序:接收网络包,先 DNAT,然后查路由策略,查路由策略指定的路由表做路由,然后 SNAT,再发出网络包。

IP、Route相关命令基础知识相关推荐

  1. IP地址相关的基础知识以及IP相关术语的解释

    一.基础知识了解 IP地址:计算机之间的唯一标识 mac:计算机网卡之间的标识 (每台计算机之间都不同全球唯一[硬件]) 同样不仅仅只有计算机有mac地址 ,现在手机,路由器,交换机等都有mac地址( ...

  2. 与EEG信号的相关的基础知识以及运动想象信号的生理活动

    与EEG信号的相关的基础知识 EEG信号基础 1.1 EEG信号记录技术 a.侵入式(Invasive) b.半侵入式(Semi-invasive) c.非侵入式(Non-invasive) a.空间 ...

  3. Redis第一讲:相关的基础知识/数据类型/缓存的过期策略/双写一致性/内存存储和持久化

    Redis第一讲:相关的基础知识 摘要:本文是Redis(6.2.1)详解的第一讲,介绍Redis相关的基础知识,内存存储和持久化,Redis作缓存使用时的注意要点,常见的数据类型,缓存的过期策略,R ...

  4. PAT相关的基础知识

    PAT相关的基础知识 一.sort函数 二.set的用法 建立 遍历 反向遍历 查找 三.输出百分比 四.数的科学计数法 代码: 补充:字符串的处理 五.lower_bound和upper_bound ...

  5. Linux设备驱动开发详解【二】_设备驱动相关硬件基础知识

    本文简介 本文讲解底层驱动工程师必备的硬件基础,给出了嵌入式系统硬件原理及分析方法的全景视图.         2.1 节讲解微控制器.微处理器.数字信号处理器以及应用于特定领域的处理器各自的特点. ...

  6. ip route show命令

    文章目录 列出路由表条目 查找确定IP地址的路由包来源 其他 linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任 ...

  7. 桥接网络,nat网络,静态IP配置,相关命令

    1. 描述什么是桥接网络和nat网络模式,并写出两种网络模式的静态ip配置步骤: 2.练习的相关命令,alias.cat.cp.mv.touch.mkdir.less.more: 解答: 1.描述什么 ...

  8. 「css基础」关于字体相关的基础知识(一)

    常言道网页设计的好坏,95%取决于字体的排版.尽管现在抖音.小视频和游戏的盛行,其占据了我们大部分的业余时间,但是还是有大部分人在网络上进行阅读,比如查阅资料,阅读小说.看新闻.知识学习之类. 舒适的 ...

  9. ip route 路由命令详解

    (523条消息) ip route 命令详解_thj_blog的博客-CSDN博客_ip route命令详解 Linux如何查看网关地址 - study_goup - 博客园 (cnblogs.com ...

最新文章

  1. freeRtos学习笔记 (5)事件组
  2. python判断对错题_python 初学者错题本
  3. 3Com发布新MSR路由器 为企业提供视频播客支持
  4. 卸载已经装的mysql_怎么卸载已经安装的mysql服务
  5. java实参将数据传递给形参的两种形式
  6. MIDP应用程序的属性
  7. c语言上机题库徐州工程学院,徐州工程学院 C语言上机实验报告.docx
  8. 校园网系统集成方案设计
  9. ssh框架超详细总结
  10. 土方回填施工方案范本_外购土方回填施工方案
  11. 9.25+9.27 联考
  12. 数据预处理部分的思维导图
  13. uni-app小程序,实现根据中文首字母排序功能
  14. vue3.0 结合element ui 开发后台ui框架
  15. win10打开计算机加载很慢,win10电脑文件夹打开特别慢怎么回事 文件夹假死问题快速解决步骤...
  16. vue3中scrollTop不生效的问题
  17. Testlink配置设置(参考文章)
  18. AG9311Algoltek安格科技TypeC转HDMI PD3.0方案设计资料
  19. MySQL启动服务提示:某些服务在未由其他服务或程序使用时将自动停止
  20. arduino 定时器、定时中断与PWM使用以及注意事项

热门文章

  1. 神州租车——为用户提供精细化租车服务
  2. 【共阳极高辉度无频闪调光IC方案FP7125】耐压100V10A LED降压恒流PWM调光芯片 汽车大灯车灯照明/调光电源应用
  3. 怎么选择靠谱的Java培训机构?
  4. 最佳助攻!25款轻巧实用的SKETCH插件大合集
  5. 模电学习笔记(十一)——微分电路
  6. 模拟cmos集成电路(9)
  7. 全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)
  8. 前沿笔记|Eva:基于AI强化学习的COVID-19检测判断模型|Nature
  9. 哈希算法原理与应用:确保数据完整性和安全性的关键技术
  10. 调大图片内存大小和降低图片内存大小快过来