linux下永久添加静态路由-不同

linux下永久添加静态路由-不同

添加路由的命令:

1,route add

route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0#添加一条静态路由
route add default gw 192.168.0.1#添加默认路由
route del -net 192.168.1.0/24gw 192.168.0.1#删除一条路由
route -n#查看路由表

2,ip ro add

ip ro add 192.56.76.0/24dev 192.168.0.1#添加一条静态路由
ip ro add default via 192.168.0.1 dev eth0#添加默认路由
ip ro del 192.168.1.0/24#删除一条路由
ip route show#查看路由表

常见参数:

add 增加路由

del 删除路由

via 网关出口IP地址

dev 网关出口物理设备名

让路由重启服务器后依然生效:

1,在/etc/rc.local里面添加:

添加路由命令为:直接将在命令行操作的命令复制到该文件中,保存退出即可。

2,在/etc/sysconfig/static-routes文件里面写入:

如果该文件不存在,则手动创建,添加内容格式为:

参照/etc/init.d/network文件里面的shell语句:

        # Add non interface-specific static-routes.        if[ -f /etc/sysconfig/static-routes]; then          grep"^any"/etc/sysconfig/static-routes| whilereadignore args ; do          /sbin/routeadd -$args        done        fi

则,如果要添加一条静态路由,命令为:

        route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0

那么,在/etc/sysconfig/static-routes文件中添加格式为:

        any -net 192.56.76.0 netmask 255.255.255.0 dev eth0

两种方式添加静态路由对比:

1,rc.local:

重启服务器生效;

重启网络服务,则静态路由失效;

rc.local是系统启动后最后运行的一个脚本,因此如果有如NFS需要网络才能挂载的服务需求,则该方式不适合;

2,static-routes:

重启服务器生效;

重启网络服务生效:

适合需要网络需求的服务;

脚本添加静态路由的方法和rc.local就差不多了:

这种方法其实也是自己写脚本,放在/etc/rc3.d/ 开头设置为S。

S意思是启动,数字是顺序,K意思是停止。

一般是启动是守护进程在某个模式的启动顺序。

数字越小启动的顺序越靠前;

/etc/rc3.d是文本多用户环境,一般生产环境都是这个环境。

其坏处也是:重启网络后失效。

总结:

 如果需要添加静态路由,尽量将静态路由添加到/etc/sysconfig/static-routes文件中。避免因重启网络服务导致路由失效,从而避免故障的发生。
 

实验

配置Linux实现静态路由

  1. 背景和原理

    路由器的功能是实现一个网段到另一个网段之间的通信,路由分为静态路由、动态路由、

默认路由和直连路由。静态路由是手工指定的,使用静态路由的好处是网络安全保密性高。动态路由因为需要路由器之间频繁地交换各自的路由表,而对路由表的分析可以揭示网络的拓扑结构和网络地址等信息。因此,网络出于安全方面的考虑也可以采用静态路由。不占用网络带宽,因为静态路由不会产生更新流量。

  1. 网络规划模拟

    模拟使用四台Linux机器,分别命名为Linux1、Linux2(router1)、Linux3(router)

和Linux4,其中Linux2和Linux3当做路由器来配置静态路由功能,每两台机器之间的通信使用不同的网段和网络模式

img

  1. 环境模拟

克隆四台Linux机器并命名,分别按照网络规划图配置每台机器的网卡,只使用静态ip和子网掩码,克隆的机器需要执行命令>/etc/udev/rules.d/70-persistent-net.rules清空网卡相关信息文件,配置完后查看ip并检验同网段设备之间的通信

Linux1

img

Linux2

img

Linux3

img

Linux4

img

  1. 配置静态路由

4.1 添加静态路由:

常用参数:

add 增加路由

del 删除路由

-net 设置到某个网段的路由

-host 设置到某台主机的路由

gw 出口网关 IP地址

dev 出口网关 物理设备名

第1步

Linux1:route add –net 192.168.1.0/24 gw 10.0.0.129 (从1到3)

Linux3:route add –net 10.0.0.0/24 gw 192.168.1.129 (从3到1)

此时,Linux1和Linux3可以相互ping通

第2步

Linux4:route add –net 192.168.1.0/24 gw 192.168.2.130 (从4到2)

Linux2:route add –net 192.168.2.0/24 gw 192.168.1.130 (从2到4)

此时,Linux2和Linux4可以相互ping通

第3步:

Linux1:route add –net 192.168.2.0/24 gw 10.0.0.129 (从1到4)

Linux4:route add –net 10.0.0.0/24 gw 192.168.2.130 (从4到1)

至此,Linux1、Linux2、Linux3、Linux4之间可以互相通信

img

4.2 在配置时如有涉及Linux2和Linux3这两台机器则需要开启内核转发功能

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

或 vi /etc/sysctl.conf --> net.ipv4.ip_forward=1

sysctl –p 载入 sysctl 配置文件

  1. 检验静态路由

5.1 查看各自机器的路由表

img

img

img

img

5.2 在Linux1机器上执行ping命令,进行两两通信

img

5.3 在其他机器上使用tcpdump抓取每两两通信之间的icmp报文包进行检验

ping 10.0.0.129 –c3

img

ping 192.168.1.130 –c3

img

img

ping 192.168.2.131 –c3

img

img

img

  1. 上述配置若在重启网络服务或者重启系统时都会失效。若想实现永久生效,有以下几种

方法

以Linux1为例

方法一:利用route-eth0文件

vi /etc/sysconfig/network-scripts/route-eth0  #默认不存在此文件,需要手动创建

加入如下内容

192.168.1.0/24 via 10.0.0.129

192.168.2.0/24 via 10.0.0.129

\#有两块网卡时,配置该条路由的原则是网卡所在网段为该路由出口

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

方法二:利用static-route文件

vi /etc/sysconfig/static-routes  #默认不存在此文件,需要手动创建

加入如下内容

any net 192.168.1.0/24 gw 10.0.0.129

any net 192.168.2.0/24 gw 10.0.0.129

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

方法三:利用rc.local文件

vi /etc/rc.local

加入如下内容

route add –net 192.168.1.0/24 gw 10.0.0.129

route add –net 192.168.2.0/24 gw 10.0.0.129

\#写到配置里,重启重启系统会生效

补充

在Linux操作系统中,静态路由的配置并不直接涉及存储在固定文件路径中的配置文件,而是通过运行命令行工具在内存中设置路由规则。但为了使静态路由配置持久化,您可以选择在系统启动时执行相关命令或将其写入适当的脚本文件。

以下是一些常见方法实现Linux系统静态路由的持久化:

### 方法1:编辑网络接口配置文件
对于某些Linux发行版(如Debian/Ubuntu),您可以在相应的网络接口配置文件中添加`post-up`或`pre-up`指令来在接口启动时添加静态路由。例如,在`/etc/network/interfaces`(对于旧版Debian系)或`/etc/netplan/*.yaml`(对于新版Ubuntu系统采用Netplan管理网络)中:

```ini
# 对于Debian风格的interfaces文件
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
post-up ip route add 10.0.0.0/24 via 192.168.1.254

# 对于Netplan YAML配置文件
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 192.168.1.10/24
      gateway4: 192.168.1.1
      routes:
        - to: 10.0.0.0/24
          via: 192.168.1.254
```

### 方法2:使用init或systemd服务
创建一个systemd服务单元文件(例如`/etc/systemd/system/static-route.service`),并在其中添加启动时运行路由命令的ExecStart指令:

```ini
[Unit]
Description=Static Route Configuration

[Service]
Type=oneshot
ExecStart=/sbin/ip route add 10.0.0.0/24 via 192.168.1.254

[Install]
WantedBy=multi-user.target
```

然后激活并启动服务:
```bash
sudo systemctl enable static-route
sudo systemctl start static-route
```

### 方法3:修改rc.local或systemd的system启动脚本
对于一些系统,也可以在系统启动脚本中添加静态路由设置,例如在`/etc/rc.local`(适用于System V init风格)或在systemd环境中创建自定义启动脚本(需保证其在正确的target下启动):

```bash
#!/bin/sh
/sbin/ip route add 10.0.0.0/24 via 192.168.1.254
exit 0
```

请确保相应脚本具有执行权限 (`chmod +x`) 并能正确运行。

### 方法4:网络管理工具(如NetworkManager)
如果使用NetworkManager管理网络,可以在其配置中加入额外的路由配置,但这通常需要更复杂的NM connection插件或自定义脚本配合。

总之,尽管静态路由配置本身没有固定的路径,但您可以通过上述多种方式在Linux系统启动时自动执行添加静态路由的命令,从而实现静态路由的持久化。
posted @ 2024-03-19 18:19  三思博客  阅读(999)  评论(0编辑  收藏  举报