路漫漫其修远兮
吾将上下而求索

linux路由设置:route命令

        Linux系统的route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;需要修改配置文件永久生效

以下是centos6的配置,centos7不同

1.命令格式:

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

2.命令功能:

Route命令是用于操作基于内核ip路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用"add"或者"del"参数时,路由表被修改,如果没有参数,则显示路由表当前的内容。

3.命令参数:

-n 不解析名字
-v 显示详细的处理信息
-F 显示发送信息
-C 显示路由缓存

add:添加一条新路由。
del:删除一条路由。
-net:目标地址是一个网络。
-host:目标地址是一个主机。
netmask:当添加一个网络路由时,需要使用网络掩码。
gw:路由数据包通过网关。注意,你指定的网关必须能够达到,也就是必须是同一个网络内。

4、示例:

机器网卡状态,有三个物理网卡,每个网卡上面都有一个不同网段的ip

[root@ ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:15:17:de:18:1c brd ff:ff:ff:ff:ff:ff
    inet 183.136.168.87/27 brd 183.136.168.95 scope global eth0
    inet6 fe80::215:17ff:fede:181c/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:15:17:de:18:1d brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.87/24 brd 192.168.10.255 scope global eth1
    inet6 fe80::215:17ff:fede:181d/64 scope link 
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:25:90:d4:d2:9a brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.34/24 brd 10.10.10.255 scope global eth2
    inet6 fe80::225:90ff:fed4:d29a/64 scope link 
       valid_lft forever preferred_lft forever

示例1:显示当前主机路由表

[root@zj-dx-fg-87 ~]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
183.136.168.64  *               255.255.255.224 U     0      0        0 eth0
10.10.10.0      *               255.255.255.0   U     0      0        0 eth2
192.168.10.0    *               255.255.255.0   U     0      0        0 eth1
default         183.136.168.65  0.0.0.0         UG    0      0        0 eth0

[root@zj-dx-fg-87 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
183.136.168.64  0.0.0.0         255.255.255.224 U     0      0        0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth2
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         183.136.168.65  0.0.0.0         UG    0      0        0 eth0

说明:

第一列表示主机所在网络的地址,若数据传送目标是在本局域网内通信,则可直接通过该路由条目转发数据包;因为都是本地的网络没有网关可以正常工作。

第四行表示数据传送目的是访问Internet,则由接口eth0,将数据包发送到网关183.136.168.65,此网关必须是和当前主机在同一个网络内的一个主机。

其中Flags为路由标志,标记当前网络节点的状态。

Flags标志说明:
U Up表示此路由当前为启动状态
H Host,表示此网关为一主机
G Gateway,表示此网关为一路由器
R Reinstate Route,使用动态路由重新初始化的路由
D Dynamically,此路由是动态性地写入
M Modified,此路由是由路由守护程序或导向器动态修改
! 表示此路由当前为关闭状态

备注:

route -n (-n 表示不解析名字,列出速度会比route 快)

2、命令行添加

[root@localhost ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.175.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.175.2   0.0.0.0         UG    0      0        0 eth0

[root@localhost ~]#route add -net 2.2.2.0 netmask 255.255.255.0 gw 192.168.175.6    #添加网络方式这两种都可以
[root@localhost ~]#route add -net 1.1.1.0/31 gw 192.168.175.5

[root@localhost ~]#route add -host 4.4.4.4/32 gw 192.168.175.6    #当添加主机的时候,必须使用-host
[root@localhost ~]#route add -net 3.3.3.3 netmask 255.255.255.255 gw 192.168.175.6
[root@localhost ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
3.3.3.3         192.168.175.6   255.255.255.255 UGH   0      0        0 eth0
4.4.4.4         192.168.175.6   255.255.255.255 UGH   0      0        0 eth0
1.1.1.0         192.168.175.5   255.255.255.254 UG    0      0        0 eth0
2.2.2.0         192.168.175.6   255.255.255.0   UG    0      0        0 eth0
192.168.175.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.175.2   0.0.0.0         UG    0      0        0 eth0

//添加默认网关
# route add default gw 192.168.2.1

3、命令行删除

[root@localhost ~]#route del -net 3.3.3.3 netmask 255.255.255.255
[root@localhost ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
4.4.4.4         192.168.175.6   255.255.255.255 UGH   0      0        0 eth0
1.1.1.0         192.168.175.5   255.255.255.254 UG    0      0        0 eth0
2.2.2.0         192.168.175.6   255.255.255.0   UG    0      0        0 eth0
192.168.175.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.175.2   0.0.0.0         UG    0      0        0 eth0

4、在linux下设置永久路由

上面的方法只是临时生效,当重启网络服务后就会失效,如果想要永久生效,要写到static-routes里面,这个文件会在网卡启动的时候调用

/etc/rc.d/init.d/network 
...
# Add non interface-specific static-routes.
  if [ -f /etc/sysconfig/static-routes ]; then
     grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
         /sbin/route add -$args
      done
   fi

network在执行的时候到static-routes里面寻找any开头的行,然后执行/sbin/route add -$args 相当于手动执行了route add脚本,那后面事情就简单了,回到了手动执行的方式,根据前面的说明,正确的脚本就是:下面的这几种都可以,要区分主机和网络

[root@localhost /etc/sysconfig]#cat static-routes 
any host 12.1.0.0 gw 192.168.175.1
any net 12.2.0.0/24 gw 192.168.175.2
any net 12.3.0.0 netmask 255.255.255.0 gw 192.168.175.3

[root@localhost ~]#service network restart

[root@localhost ~]#route -n    #成功添加
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
12.1.0.0        192.168.175.1   255.255.255.255 UGH   0      0        0 eth0
12.3.0.0        192.168.175.3   255.255.255.0   UG    0      0        0 eth0
12.2.0.0        192.168.175.2   255.255.255.0   UG    0      0        0 eth0
192.168.175.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.175.2   0.0.0.0         UG    0      0        0 eth0

network执行的时候把any去掉,获取后面的参数:host 10.0.0.10 gw 192.168.1.1

然后执行route add -host 10.0.0.10 gw 192.168.1.1

注意这里host前面的-是network自带的,不需要配置到static-routes文件中。

未经允许不得转载:江哥架构师笔记 » linux路由设置:route命令

分享到:更多 ()

评论 抢沙发

评论前必须登录!