Menu Close

Linux系统添加静态路由

1. 操作系统

CentOS Linux
RedHat Linux

1.1. yum安装net-tools

yum whatprovides */route
yum install net-tools

2. 使用route命令添加

使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了.

2.1. 查看路由

route [-nee]
  • -n :不要使用通讯协定或主机名称,直接使用 IP 或 port number;
  • -ee :使用更详细的资讯来显示

2.2. 增加删除路由

route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
  • -net :表示后面接的路由为一个网域;
  • -host :表示后面接的为连接到单部主机的路由;
  • netmask :与网域有关,可以设定 netmask 决定网域的大小;
  • gw :gateway 的简写,后续接的是 IP 的数值,与 dev 不同;
  • dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等

2.3. 示例

# 添加到主机的路由
route add -host 58.206.163.160 gw 192.168.17.1
# 添加到网络的路由
route add -net 58.206.163.128/25 gw 192.168.17.1
route add -net 172.16.21.128/28 gw 192.168.17.1
# 添加默认路由
route add default gw 192.168.70.1
# 删除到主机的路由
route del -host 58.206.163.160 gw 192.168.17.1
# 删除到网络的路由
route del -net 58.206.163.128/25 gw 192.168.17.1
# 删除默认路由
route del default gw 192.168.70.1

2.4. 查看添加的所有路由信息

~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.70.1    0.0.0.0         UG    0      0        0 eth0
58.206.163.128  192.168.17.1    255.255.255.128 UG    0      0        0 eth1
58.206.163.160  192.168.17.1    255.255.255.255 UGH   0      0        0 eth1
172.16.21.128   192.168.17.1    255.255.255.240 UG    0      0        0 eth1
192.168.17.0    0.0.0.0         255.255.255.0   U     1      0        0 eth1
192.168.70.0    0.0.0.0         255.255.255.0   U     1      0        0 eth0

3. 使用ip route 添加路由

3.1. 查看路由

]# ip route   # 此方法查看到的路由信息方便存在配置文件中,或者用命令也可以直接复制粘贴.
default via 192.168.70.1 dev eth0  proto static
172.16.21.128/28 via 192.168.17.1 dev eth1  proto static
192.168.17.0/24 dev eth1  proto kernel  scope link  src 192.168.17.26  metric 1
192.168.70.0/24 dev eth0  proto kernel  scope link  src 192.168.70.26  metric 1

3.2. 添加路由

# ip route add 172.16.21.128/28 via 192.168.17.1  # 前面是路由,后面是网关地址
# ip route add 58.206.163.0/24 via 192.168.17.1

3.3. 删除路由

# ip route del 58.206.163.0/24 via 192.168.17.1

4. 将路由永久写到配置文件中,重启网卡永久生效

  • 1)在/etc/sysconfig/network-scripts目录下创建一个route-ethx的网卡名称,添加以下对应要添加的内容即可
~]# cat route-eth1
172.16.21.128/28 via 192.168.17.1

补充知识:IP/28 是CIDR的格式,全称是classless inter domain route 叫做无类域间路由,就是说32位IP的前28位为网络号,后面的全部都可以分给主机,主机位总共4(32-28)位,则子网的IP个数是14(2^4-2)个。如何计算出主机地址范围呢?

先将IP地址与掩码转二进制做与运算:
172.16.21.128 ---------- 1010 1100.0001 0000.0001 0101.1000 0000
255.255.255.240 -------- 1111 1111.1111 1111.1111 1111.1111 0000
这样能得到网络地址:1010 1100.0001 0000.0001 0101.1000 0000
由于主机位为4位,即主机范围为0000--1111,于是主机地址的范围就是1010 1100.0001 0000.0001 0101.1000 0000--1010 1100.0001 0000.0001 0101.1000 1111;转十进制后得到的主机地址范围:172.16.21.128--172.16.21.143
其中:172.16.21.128为网络地址,172.16.21.143为广播地址
所以可用的主机范围为:172.16.21.129--172.16.21.142

  • 2)查看此时配置的路由信息
~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.70.1    0.0.0.0         UG    0      0        0 eth0
172.16.21.128   192.168.17.1    255.255.255.240 UG    0      0        0 eth1
192.168.17.0    0.0.0.0         255.255.255.0   U     1      0        0 eth1
192.168.70.0    0.0.0.0         255.255.255.0   U     1      0        0 eth0