Linux下的静态路由配置

摘要:
在日常操作和维护操作中,经常会遇到路由表操作。以下是对Linux运维中的路由操作的总结:------------------------------------------------------------------------------首先,我们来谈谈关于路由的一些基本知识

在日常运维作业中,经常会碰到路由表的操作。下面就linux运维中的路由操作做一梳理:
------------------------------------------------------------------------------
先说一些关于路由的基础知识:
1)路由概念
路由:   跨越从源主机到目标主机的一个互联网络来转发数据包的过程
路由器:能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备
路由表:在路由器中维护的路由条目,路由器根据路由表做路径选择
直连路由:当在路由器上配置了接口的IP地址,并且接口状态为up的时候,路由表中就出现直连路由项
静态路由:是由管理员手工配置的,是单向的。
默认路由:当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口 。

2)静态路由和默认路由的特点
静态路由特点:
路由表是手工设置的;
除非网络管理员干预,否则静态路由不会发生变化;
路由表的形成不需要占用网络资源;
适用环境:一般用于网络规模很小、拓扑结构固定的网络中。

默认路由特点:
在所有路由类型中,默认路由的优先级最低
适用环境:一般应用在只有一个出口的末端网络中或作为其他路由的补充

浮动静态路由:
路由表中存在相同目标网络的路由条目时,根据路由条目优先级的高低,将请求转发到相应端口;
链路冗余的作用;

3)路由器转发数据包时的封装过程
源IP和目标IP不发生变化,在网络的每一段传输时,源和目标MAC发生变化,进行重新封装,分别是每一段的源和目标地址

4)要完成对数据包的路由,一个路由器必须至少了解以下内容:
a)目的地址
b)相连路由器,并可以从哪里获得远程网络的信息
c)到所有远程网络的可能路由
d)到达每个远程网络的最佳路由
e)如何维护并验证路由信息
f)路由和交换的对比
路由工作在网络层
a)根据“路由表”转发数据
b)路由选择
c)路由转发
交换工作在数据链路层
d)根据“MAC地址表”转发数据
e)硬件转发

------------------------------------------------------------------------------
接着说下linux运维中关于路由的一些操作
1)使用route -n命令查看Linux内核路由表

1

2

3

4

5

6

7

8

9

10

11

12

13

14

[root@dev ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.1.17    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

10.1.32.14      0.0.0.0         255.255.255.255 UH    0      0        0 tun0

10.1.32.12      0.0.0.0         255.255.255.255 UH    0      0        0 tun0

10.4.8.2        192.168.9.254   255.255.255.255 UGH   0      0        0 eth0

10.4.9.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0

192.168.9.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0

10.2.0.0        0.0.0.0         255.255.0.0     U     0      0        0 tun0

10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 tun0

10.1.0.0        0.0.0.0         255.255.0.0     U     0      0        0 tun0

192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 tun0

0.0.0.0         192.168.9.254   0.0.0.0         UG    0      0        0 eth0

Linux下的静态路由配置第1张

2)三种路由类型说明
    a)主机路由
主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如,在下面的示例中,本地主机通过IP地址192.168.1.1的路由器到达IP地址为10.0.0.10的主机。

1

2

3

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

    b)网络路由
网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。

1

2

3

Destination    Gateway       Genmask      Flags    Metric    Ref     Use    Iface

-----------    -------     -------         -----    -----   ---    ---    -----

192.19.12     192.168.1.1    255.255.255.0      UN      0       0     0    eth0

    c)默认路由
当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。例如,在下面的示例中,默认路由是IP地址为192.168.1.1的路由器。

1

2

3

Destination    Gateway       Genmask    Flags     Metric    Ref    Use    Iface

-----------    -------     ------- -----      ------    ---    ---    -----

default       192.168.1.1     0.0.0.0    UG       0        0     0    eth0

3)配置路由route的命令
设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:

1

route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

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

4)route命令使用举例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

添加到主机的路由

# route add -host 192.168.1.2 dev eth0:0

# route add -host 10.20.30.148 gw 10.20.30.40

  

添加到网络的路由

# route add -net 10.20.30.40 netmask 255.255.255.248 eth0

# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41

# route add -net 192.168.1.0/24 eth1

  

添加默认路由

# route add default gw 192.168.1.1

  

删除路由

# route del -host 192.168.1.2 dev eth0:0

# route del -host 10.20.30.148 gw 10.20.30.40

# route del -net 10.20.30.40 netmask 255.255.255.248 eth0

# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41

# route del -net 192.168.1.0/24 eth1

# route del default gw 192.168.1.1                  //route del default   删除所有的默认路由

添加一条默认路由

# route add default gw 10.0.0.1      //默认只在内存中生效

开机自启动可以追加到/etc/rc.local文件里

# echo "route add default gw 10.0.0.1" >>/etc/rc.local

添加一条静态路由

# route add -net 192.168.2.0/24 gw 192.168.2.254

要永久生效的话要这样做:

# echo "any net 192.168.2.0/24 gw 192.168.2.254" >>/etc/sysconfig/static-routes

添加到一台主机的静态路由

# route add -host 192.168.2.2 gw 192.168.2.254

要永久生效的话要这样做:

# echo "any  host 192.168.2.2 gw 192.168.2.254 " >>/etc/sysconfig/static-routes

注:Linux 默认没有这个文件 ,得手动创建一个

5)设置包转发
在Linux中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能;
开启Linux的路由功能可以通过调整内核的网络参数来实现,方法如下:

1

2

3

4

5

6

7

8

  临时开启路由功能:

# echo 1 > /proc/sys/net/ipv4/ip_forward

或者

# sysctl -w net.ipv4.ip_forward=1

  永久开启路由功能

# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

# sysctl -p

6)静态路由配置
添加静态路由到路由表的语法如下:

1

ip route [destination_network] [mask] [next-hop_address] administrative_distance]

参数解析:
ip route         用于创建静态路由的命令。
Destination_network        需要发布到路由表中的网段。
Mask        在这一网络上使用的子网掩码。
Next-hop_address        下一跳路由器的地址。
administrative_distance      默认时,静态路由有一个取值为1 的管理性距离。在这个命令的尾部添加管理权来修改这个默认值。

例如

1

ip route 172.16.1.0 255.255.255.0 172.16.2.1

查看路由表除了使用route -n命令外,还可以使用ip route

1

2

3

4

5

6

7

8

9

10

11

12

[root@dev ~]# ip route

192.168.1.17 dev ppp0  proto kernel  scope link  src 192.168.1.190

10.1.32.14 dev tun0  scope link

10.1.32.12 dev tun0  scope link

10.4.8.2 via 192.168.9.254 dev eth0  src 192.168.9.200  mtu 1500 advmss 1460

10.4.9.0/24 dev tun0  scope link

192.168.9.0/24 dev eth0  proto kernel  scope link  src 192.168.9.200  metric 1

10.2.0.0/16 dev tun0  scope link

10.0.0.0/16 dev tun0  scope link

10.1.0.0/16 dev tun0  scope link

192.168.0.0/16 dev tun0  scope link

default via 192.168.9.254 dev eth0

----------------------------------------实例1--------------------------------------------

Linux下的静态路由配置第2张

如上图所示,PC0机器和PC1机器之间经过两个路由器,要想使这两台机器通信,路由设置如下:
1)Route0路由器设置:

1

2

3

ip add 192.168.1.1 255.255.255.0

ip add 192.168.2.1 255.255.255.0

ip route 192.168.3.0 255.255.255.0 192.168.2.2

2)Route1路由器设置:

1

2

3

ip add 192.168.2.2 255.255.255.0

ip add 192.168.3.1 255.255.255.0

ip route 192.168.1.0 255.255.255.0 192.168.2.1

----------------------------------------实例2--------------------------------------------

Linux下的静态路由配置第3张

如上图所示,使用A主机192.168.1.2能够ping通E主机192.168.4.2,这两台机能够通信。
操作思路:
1)在主机B上设置默认路由下一跳为192.168.2.2,并开启路由转发功能;
2)在主机C上设置2条静态路由,分别去192.168.1.0/24网段的下一跳为192.168.2.1,去192.168.4.0/24网段的下一跳为192.168.3.2,并开启路由转发功能;
3)在主机D上设置默认路由下一跳为192.168.3.1,并开启路由转发功能。

操作记录:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

1)A主机上操作:ip为192.168.1.2,设置网关为192.168.1.1

# route add default gw 192.168.1.1

2)B主机上操作:第一块网卡为192.168.1.1,第二块网卡为192.168.2.1

# ifconfig eth0 192.168.1.1

# ifconfig eth1 192.168.2.1   //可以在一块网卡上设置两个ip,比如是eth0,eth0:0

B主机设置默认路由,下一跳为192.168.2.2

# route add default gw 192.168.2.2

B主机开启路由转发功能

# echo 1 > /proc/sys/net/ipv4/ip_forward   //临时转发,可以在/etc/sysctl.conf里设置永久转发

3)C主机上操作:第一块网卡为192.168.2.2,第二块网卡为192.168.3.1

# ifconfig eth0 192.168.2.2

# ifconfig eth1 192.168.3.1   //如果就一块网卡,可以设置ifconfig eth0:0 192.168.3.1

C主机设置2条默认路由

# route add -net 192.168.1.0/24 gw 192.168.2.1

# route add -net 192.168.4.0/24 gw 192.168.3.2

C主机开启路由转发功能

# echo 1 > /proc/sys/net/ipv4/ip_forward

4)D主机上操作:第一块网卡为192.168.3.2,第二块网卡为192.168.4.1

# ifconfig eth0 192.168.3.2

# ifconfig eth1 192.168.4.1

D主机设置默认路由,下一跳为192.168.3.1

# route add default gw 192.168.3.1

D主机开启路由转发功能

# echo 1 > /proc/sys/net/ipv4/ip_forward

5)E主机上操作:ip为192.168.4.2,设置网关为192.168.4.1

# route add default gw 192.168.4.1

本文引用自https://blog.csdn.net/ccy19910925/article/details/82982771

免责声明:文章转载自《Linux下的静态路由配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇最简单的7z API接口qemu基本使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[笔记]--Xbrowser远程连接Linux桌面环境

配置GDM。 CentOS 5的默认图形环境为Gnome,只安装了GDM,而CentOS 5的KDE也是使用GDM而不是KDM。所以CentOS 5只需配置GDM。 编辑/etc/gdm/custom.conf,添加如下内容: [security] AllowRemoteRoot=true 注:允许root用户远程登录 [xdmcp] Enable...

Linux下使用VirtualBox安装Windows系统

(文档比较长,只是写的详细,实际操作起来相对简单。)由于一些特殊原因,我们并不能完全抛下Windows而使用Linux。VirtualBox 是一款虚拟机软件,支持多系统。在Linux下安装 VirtualBox 后,我们就可以安装Windows系统,并使用Windows下的软件了。1、下载首先需要下载 VirtualBox,下载地址:http://www...

Linux下使用popen()执行shell命令【转】

本文转载自:https://my.oschina.net/u/727148/blog/262987 函数原型:   #include “stdio.h”   FILE popen( const char command, const char* mode )   参数说明:   command: 是一个指向以 NULL 结束的 shell 命令字符串的指针...

Windows环境Jenkins配置免密登录Linux

Windows免密登录可以提供很多便利,如Jenkins连接Linux等,批量启动集群等 1.首先,Windows机器安装ssh组件: 官网https://www.mls-software.com/opensshd.html下载,一路安装就行 安装可参考https://blog.csdn.net/wm609972715/article/details/83...

Debian下安装NFS服务器

1.安装很简单 在Debian系统下安装NFS是相当简单的,在NFS服务器上执行下面的命令即可 # aptitude install nfs-kernel-server (会默认安装portmap和 nfs-common)  在客户端则需要安装:         # aptitude install nfs-common portmap 2.服...

Linux(Centos)全自动异地备份数据(WEB+Mysql)

文章开始之前,先问下各位站长一个问题:什么东西对于站长是十分重要的?其实对于站长而言,很多东西都是很重要的。但我们现在排除外在因素,把范围缩小到网站系统本身,哪些是非常重要的呢?网站数据就是其中之一了。 网站数据包括程序文件本身、网站运行过程中不断产生的附件数据(图片、文档、视频等)以及数据库文件,三大块总括为网站数据。 以 自己为例,在这两年多的站长经历...