linux路由表的配置



一、原理说明


1、路由表(table)从0到255进行编号,每个编号可以对应一个别名,编号和别名的对应关系在linux下放在/etc/iproute2/rt_tables这个文件里,一般0编号的table对应的别名为upspec,255编号对应的别名为local,254和253对应的别名分别为main和default,我们通常用route命令配置和查看的路由表信息为别名为main的路由表信息。

2、路由规则负责定义路由策略,它定义来源哪里的IP需要查询哪个路由表(使用别名)。路由规则的查看使用ip rule sh路由规则也从0开始编号,可以自由添加,来源相同IP的路由规则选择根据规则编号的大小确定优先级,编号越小优先级越高。例如如下路由规则:
0:from all lookup local 
32766:from all lookup main 
32767:from all lookup default
优先级最高的规则是0,要查询的路由表名称是local,其次是32766,要查询的路由表名称是main,后面依此类推。

3、操作系统在选路时首先根据路由规则选取table,然后再从table里选取相应路由,如果同一table里不同接口使用相同的网关,选路时会默认选择第一条路由,所以当有两个网络接口卡时,如果目标网络在同一网段,那么由于选路时按第一条路由出口出去,所以会导致所有的流量都会从第一个网卡上出去。


二、配置

1、对于别名为main的路由表配置和查看我们一般只需要使用route命令就可以了,通常的格式如下:

route [-nNvee] [-FC] [<AF>] :         用来列出别名为main的路由表记录

route [-v] [-FC] {add|del|flush} ... :用来修改别名为main的路由表记录
示例:route -n:列出main路由表的路由记录
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.8.0     0.0.0.0         255.255.252.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
0.0.0.0         192.168.4.1     0.0.0.0         UG    0      0        0 eth1
注意:列出来的main路由表的记录里169.254.0.0是用来在dhcp获取不了IP地址时自动添加的IP地址段。
route del default:                删除main路由表里的默认路由
route add default gw 192.168.10.1:在main路由表里添加默认路由记录192.168.10.1

2、添加其他编号的路由table时,我们需要使用ip route命令,通常的格式为:

ip route { list | flush | show } SELECTOR:                         用来显示指定table的路由表记录

ip route { add | del | change | append | replace | monitor } ROUTE:用来修改指定table的路由表记录

注:ip命令为iproute2包的一个工具,用来定义ip包的一些规则



3、示例

解决双网卡在同一子网内,网关相同的情况下,使两块网卡各自的ip包从自己接口上出去。

A、两块的网的配置如下:

IP:192.168.9.8/22 网关:192.168.9.1

IP:192.168.9.9/22 网关:192.168.9.1

B、table 0的路由表查看(route -n)

Kernel IP routing table

Destination     Gateway            Genmask         Flags Metric Ref    Use Iface

192.168.8.0     0.0.0.0             255.255.252.0   U     0      0        0 eth0

192.168.8.0     0.0.0.0             255.255.252.0   U     0      0        0 eth1(这条实际上是无用的,选路时不会被选到)

169.254.0.0     0.0.0.0             255.255.0.0     U     0      0        0 eth1

0.0.0.0         192.168.9.1         0.0.0.0         UG    0      0        0 eth0

C、说明:第1、2条路由都由网卡的配置产生,需要路由时都使用最后一条默认路由192.168.9.1,并且从eth0上出去。问题:两块网卡的流量都从eth0上出去,相当于浪费了一块网卡。

D、解决方法,由于在table 0中添加路由只能解决目的地址或目的网络不同时路由问题,但两块网卡有相同的子网,网关也一样,目的子网也一样,所以已经不能通过在table 0添加路由记录来解决问题,我们只能添加其他编号的table,并在新的table中添加路由记录,使eth1的包选路时使用新的table的路由记录,并从eth1上出去。过程如下:

A、添加新table和新table的路由记录

ip route add 192.168.8.0 via 192.168.9.9 [dev eth1] table 10

ip route add default via 192.168.9.9 [dev eth1] table 10

B、路由表ID为10的记录查看:
ip route show|list table 10:
192.168.8.0 via 192.168.9.9 dev eth1 
default via 192.168.9.9 dev eth1
C、添加路由规则,使来自192.168.9.9的ip包使用table 10的路由记录

ip rule add from 192.168.9.9 table 10
D、路由规则的管理使用ip rule,如ip rule show|list用来查看路由规则,ip rule add|del用来添加和删除路由规则。

E、再次分别查看两个接口上的流量或者抓包,可以看到两块网卡上的包分别从不同网卡出去了。

linux路由表的配置的更多相关文章

  1. Linux网络属性配置

    目录 IP地址分类 如何将Linux主机接入到网络中 网络接口的命名方式 ifcfg系列命令 如何配置主机名 如何配置DNS服务器指向 iproute2系列命令 Linux管理网络服务 永久生效配置路 ...

  2. linux路由表命令

    转自此大神http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 留在好查阅 linux 路由表维护 查看 Linux 内核路由表 使用 ...

  3. linux 网桥的配置与实现

    ==================================================================================from: http://www.i ...

  4. LINUX查看硬件配置命令

    LINUX查看硬件配置命令   系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinf ...

  5. Linux网络基础配置

    这是看itercast视频的笔记 Linux网络基础配置 以太网连接 在Linux中,以太网接口被命令为:eth0, eth1等, 0,1代表网卡编号 通过lspci命令可以查看网上硬件信息(如果是u ...

  6. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  7. [亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  8. linux 路由表 的一些相关资料

    linux 路由表维护 查看 Linux 内核路由表 使用下面的 route 命令可以查看 Linux 内核路由表. # route Destination Gateway Genmask Flags ...

  9. Linux入门-6 Linux网络基本配置

    1. 网络基础知识 网络编址 IP编址 子网掩码 同一网络主机之间通信--MAC地址 不同网络之间的通信 路由 域名 DNS 基本网络参数 2. Linux网络基础配置 以太网连接 配置网络信息 网络 ...

随机推荐

  1. linux静态链接库

    库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载 ...

  2. Java 反射 (Class、ClassLoader、Constructor、Method、Field)

    反射是Java中一个非常重要.非常强大的机制.曾看到一句话“反射是框架的灵魂”,初学时不懂,等到学完框架之后才慢慢理解其意. 什么是反射?我们先通过几个类和示例来初步体会一下反射. 一.ClassLo ...

  3. 使用ChipScope Pro调试硬件

    chipscope_icon提供与其他ChipScope内核的通信 chipscope_opb_iba促进传统片上外设总线(OPB)事务的监控 chipscope_plb_iba便于监控处理器本地总线 ...

  4. 长沙优步Uber奖励政策(7.27~8.2)

    奖励前提 *必须满足当周评分4.7星及以上,且当周接单率70%及以上,才有资格获得奖励 *当周上线时间不低于7小时 *刷单和红线行为立即封号并取消当周全部奖励! *机场高速费用不参与翻倍奖励 *早高峰 ...

  5. ubuntu16安装过程中的硬盘分区

    硬盘分区主要是三个区,如下图,分别是/,swap交换空间,/home,其中第一个分区/是主分区,建议至少8GB,要不ubuntu安装的时候放不下.

  6. 阿里otter使用问题汇总

    最近在使用otter做为和表从库.(100个分表太难查询了) user_00,user_01...user_99 => user_all 1.问题DDL语句不能执行(exception:setl ...

  7. Putty远程连接Ubuntu14.04

    步骤一.在ubuntu系统中安装ssh,可使用如下的命令进行安装: sudo apt-get install openssh-server 步骤二.为了保险起见,安装完成后重启一下ssh服务,命令如下 ...

  8. Siki_Unity_2-10_数据结构与算法

    Unity 2-10 数据结构与算法 任务1-1:数据结构简介 数据结构:数据存储的结构,数据之间的关系 数据结构分类: 集合:同属于一个集合 线性结构:数据元素存在一对一的关系 树形结构:数据元素存 ...

  9. 【聚合报告】- 秒懂jmeter

  10. [Clr via C#读书笔记]Cp14字符字符串和文本处理

    Cp14字符字符串和文本处理 字符 System.Char结构,2个字节的Unicode,提供了大量的静态方法:可以直接强制转换成数值: 字符串 使用最频繁的类型:不可变:引用类型,在堆上分配,但是使 ...