linux-cmd-route路由配置

发布时间 2023-05-17 16:06:24作者: 天生帅才

linux-cmd-route路由配置

1.查看路由表(路由选择表)

route -n
netstat -rn
----------------------------------------------------------------------
Destination  Gateway      Genmask          Flags Metric Ref Use Iface
192.168.0.0   *                 255.255.255.0  U        0         0     0    eth0
169.254.0.0   *                 255.255.0.0      U        0         0     0    eth0
default        192.168.0.1   0.0.0.0              UG     0         0     0    eth0
----------------------------------------------------------------------

2.route 命令的输出项说明

输出项             说明 
Destination      目标网段或者主机 
Gateway          网关地址,”*” 表示目标是本主机所属的网络,不需要路由    
Genmask         网络掩码 
Flags               标记

一些可能的标记如下:
 U — 路由是活动的
 H — 目标是一个主机
 N — 目标时某个网段
 G — 路由指向网关 
 R — 恢复动态路由产生的表项 
 D — 由路由的后台程序动态地安装 
 M — 由路由的后台程序修改
 ! — 拒绝路由 
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)。 
Ref 路由项引用次数(linux 内核中没有使用)。
Use 此路由项被路由软件查找的次数 。
Iface 该路由表项对应的输出接口 。

3.三种路由类型

主机路由,网络路由,默认路由(网关路由)

1.主机路由:静态路由

主机路由是路由选择表中指向单个IP地址或主机名的路由记录,主机路由的Flags字段为H
就是去往某个主机地址如何配置路由
例如:keepalived或heartbeat高可用服务器对之间的使用单独网卡接心跳线通信就会用到以上主机路由

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

## 增加一条静态路由
/sbin/route add -host 192.168.2.13 dev eth2
/sbin/route add -host 202.81.11.91 dev lo

## 删除一条主机路由:
route del -host 192.168.1.10 dev eth0

2.网络路由

网络路由是代表主机可以到达的网络。即去往某一网络或网段的路由
一般多网段之间互相通信,希望建立一条优先路由,而不是通过默认网关时就可以配置网络路由。

----------------------------------------------------------------
# 当连不通目标网段时,无法添加路由,提示网络不可达
route add -net 192.168.1.0/24 eth1
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.11
route add -net 192.168.1.0/24 gw 192.168.100.252
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0

# 屏蔽一条路由:
增加一条屏蔽的路由,目的地址为 224.x.x.x 将被拒绝
route add -net 224.0.0.0 netmask 240.0.0.0 reject

# 删除一条静态路由:
route del -net 192.168.1.0/24 dev eth0 
route del -net 192.168.1.0 netmask 255.225.255.0

# 添加一个IP别名用于临时测试,如果永久生效最好加双网卡或写入到配置文件。
ifconfig eth0:0 192.168.1.1/24 up 

3.默认网关路由

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

# 默认网关就是数据包不匹配任何设定的路由规则,最后流经的地址关口
route add default gw 10.0.0.254
route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.254

# 删除默认的网关
route del default gw 10.0.0.254

系统的默认网关信息,表示去任何地方(0.0.0.0),都发给10.0.0.254,
因为是默认网关,放在了路由表最后一条。路由也是有顺序的,如果不符合任何一条规则就交给默认网关处理。

# 如果是配置默认路由网关可以再网卡配置里:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
-------------------------------
GATEWAY=10.0.0.254
-------------------------------

4.永久生效的路由配置

# 写到配置里,重启网络服务和重启系统都会生效
service network restart

方法一:推荐生产环境使用,重启网络服务和重启系统都会生效!
vim /etc/sysconfig/network-scripts/route-eth0
------------------------------------------
192.168.1.0/24 via 192.168.1.1
192.168.100.0/24 via 192.168.1.252
------------------------------------------
echo "192.168.100.0/24 via 192.168.1.252">>/etc/sysconfig/network-scripts/route-eth0
service network restart

方法二:重启网络服务和重启系统都会生效!
vim /etc/sysconfig/static-routes
------------------------------------------
any net 192.168.1.0/24 gw 192.168.1.1
any net 192.168.100.0/24 gw 192.168.1.252
------------------------------------------

方法三:
vi /etc/rc.local
------------------------------------------
route add -net 192.168.1.0/24 gw 192.168.1.1
------------------------------------------
注意:方法三写到/etc/rc.local里只在开机时加载,当手工重启网络后会失效,但是重启系统后会生效!

5.设置包转发

在 CentOS 中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能。
开启 Linux的路由功能可以通过调整内核的网络参数来实现。要配置和调整内核参数可以使用 sysctl 命令。

查看当前系统是否支持包转发
sysctl net.ipv4.ip_forward

开启 Linux内核的数据包转发功
sysctl -w net.ipv4.ip_forward=1

路由转发永久生效
vim /etc/sysctl.conf
---------------------------------------
net.ipv4.ip_forward = 1
---------------------------------------
sysctl -p