关于linux:CentOS-添加永久静态路由的方法总结

6次阅读

共计 2807 个字符,预计需要花费 8 分钟才能阅读完成。

请拜访原文链接:https://sysin.org/blog/centos…,查看最新版。原创作品,转载请保留出处。

作者:gc(at)sysin.org,主页:www.sysin.org

在日常应用中,服务器有两个 IP 地址,两块网卡的配置,拜访不同网段,这种状况很常见。但咱们须要创立额定的路由条目,以确定通过正确的网关转发数据包,使 interface 可能失常通信。

以下在 CentOS 7、8 测试通过

一、应用 route 命令退出长期路由,重启后将生效

route 命令参数:

add     减少路由
del     删除路由
-net    设置到某个网段的路由
-host   设置到某台主机的路由
gw      进口网关 IP 地址
dev     进口网关 物理设施名 
# 退出到主机的路由
route add -host 192.168.1.123 dev eth0
route add -host 192.168.1.123 gw 192.168.1.1

# 退出到网络的路由
route add -net 192.168.1.123 netmask 255.255.255.0 eth0
route add -net 192.168.1.123 netmask 255.255.255.0 gw 192.168.1.1
route add -net 192.168.1.123 netmask 255.255.255.0 gw 192.168.1.1 eth1
route add -net 192.168.1.0/24 eth1

# 退出默认网关
route add default gw 192.168.1.1

# 删除路由
route del -host 192.168.1.11 dev eth0
route del -net 192.168.1.123 netmask 255.255.255.0
# 查看路由信息
ip route
route -n

二、在 Linux 中增加永恒路由的办法

1. 默认网关

(1)写入 ifcfg 文件(举荐)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

在配置 ip 地址的时候间接将 GATEWAY 的配置写入 ifcfg 文件。模式:GATEWAY=gw-ip

适宜退出默认路由

(2)在 /etc/sysconfig/network 里退出到文件开端,格局例如以下:

GATEWAY=gw-ip 或者 GATEWAY=gw-dev

2. 写入 /etc/rc.loacl(不举荐)

(留神:CentOS 7 必须执行 chmod +x /etc/rc.d/rc.local 来确保确保这个脚本在疏导时执行。)

可能将下面提到的命令写入 /etc/rc.local 文件里,这样在系统启动的时候会本人被动减少相干的路由设置。

只是这样的办法有一个毛病:假如某个零碎服务,比方说是 NFS 服务,这个服务是在启动 network 服务之后,在运行 rc.local 之前,假如你设置的有本人被动挂载的 nfs。那么,这里链路的不通顺。会造成挂载的失败。另外一个就是假如你重新启动了网络 server,那么路由就生效了,这个时候你不得不又一次载入这个文件,可是假如你是近程操作的呢?所以,这种办法不举荐。

办法:

编辑 /etc/rc.local,应用 route 命令语法增加

route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.3.254
route add -net 172.16.0.0 netmask 255.255.0.0 gw 192.168.1.100 dev eth0

批改过的文件 /etc/rc.d/rc.local 文件示例

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.3.254
route add -net 172.16.0.0 netmask 255.255.0.0 gw 192.168.1.100 dev eth0

3. 写入 /etc/sysconfig/static-routes 文件

默认在 /etc/sysconifg 文件夹中是没有这个文件的,须要咱们手工创立。对这个文件的调用在以下:

cat /etc/init.d/network

    # Add non interface-specific static-routes.
    if [-f /etc/sysconfig/static-routes]; then
        if [-x /sbin/route]; then
            grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
                /sbin/route add -$args
            done
        else
            net_log $"Legacy static-route support not available: /sbin/route not found"
        fi
    fi

增加操作如下:

vi /etc/sysconfig/static-routes
any net 192.168.1.0/24 gw 192.168.1.1
any net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1
any host 10.19.190.11/32 gw 10.19.177.10
any host 10.19.190.12 gw 10.19.177.10

这样的形式的话,和 rc.local 相比,比拟有用。还比如 nfs,这个路由的失效工夫是在网络服务 network 启动的时候失效的,而其它的一些网络相干服务都是在网络服务启动胜利之后再启动的,所以能够保障网络链路的通顺。并且,假如我重新启动了网络服务,这个脚本是在网络服务启动外面的脚本调用。因而,也减少了本人被动上设置的相干路线。

该形式在 CentOS 8 默认装置时有效。

在 CentOS 8 中默认应用 nmcli 管理网络,能够通过 yum install network-scripts 来装置传统的 network.service,复原用这种形式配置动态路由。

4. 创立 /etc/sysconfig/network-scripts/route-eth0(举荐)

# 在 `/etc/sysconfig/network-scripts/` 目录下创立名为 route-eth0 的文件
vi /etc/sysconfig/network-scripts/route-eth0
# 在此文件增加如下格局的内容
192.168.1.0/24 via 192.168.0.1
# 重启网络验证无效
systemctl restart network
正文完
 0