首页 > 系统相关 >linux下永久添加静态路由-不同

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

时间:2024-03-19 18:22:19浏览次数:28  
标签:静态 route 192.168 etc add 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系统启动时自动执行添加静态路由的命令,从而实现静态路由的持久化。

标签:静态,route,192.168,etc,add,linux,路由
From: https://www.cnblogs.com/nwq1101/p/18083662

相关文章

  • linux-实现日志分析--python
    linux-实现日志分析--python涉及到的主要python包和系统命令:1.datetime#用于处理时间2.subprocess#用于调用命令行工具3.tail-flogFile#获取logFile新增内容废话不多说,下面说一下场景需求和具体解决方案。1.[场景需求]一个区块链项目,在项目测试过程中,通过日志发......
  • Linux系统编程
    文章目录1.文件里面存放了5行数据,使用追加模式打开文件,打印前3行,并写入一行,期间使用ftell打印当前位置。2.修改文件的权限,注意必须使用命令行参数。3.使用两种方法打印当前目录。4.传递一个路径名,还有一个文件名,搜索对应路径下是否有该文件,有就打印显示该文件的绝对......
  • Cisco简单配置路由器
    1.绘制小型局域网拓扑结构图 首先我们需要在Cisco中绘制小型局域网拓扑结构图,如图小型局域网拓扑结构图 路由器选择:1841  需要注意的地方:    1.PC0的FastEthernet0和Router0的FastEthernet0/0进行连接;      PC1的FastEthernet0和Rou......
  • 小白如何在服务器上配置环境(连接Linux服务器和anaconda3安装)
    由于服务器账号原因,悲惨的博主只能从头开始配置环境,但是博主脑子的缓存比较小,一周前配好的现在就忘掉了,为了防止再发生这种问题,博主从头开始记录一下。(连接Linux服务器和anaconda3安装)第一步连接到服务器1.安装插件(ReomoteSSH),安装好了之后点击左下角的><,点击“连接到主机.........
  • linux 执行 PHP脚本
    phpapiroot.phpc=crontaba=indexphpD:\www\ddhd\www\apiroot.phpc=crontaba=index上面是运行脚本的命令,适合MVC框架,在入口文件处需要对控制器c和方法a进行特殊处理才能接收到参数 $c=$_GET['c']?:'index';$a=$_GET['a']?:'index';//start......
  • linux 查看防火墙相关命令
    linux查看防火墙相关命令 1.查看防火墙状态systemctlstatusfirewalld2.启动防火墙systemctlstart/restartfirewalld3.停止防火墙 临时停用,重启后失效systemctlstopfirewalld4.永久停止防火墙systemctldisablefirewalld5.开机启动systemctlenab......
  • 路由器
    路由器路由器:根据路由表转发数据(有表项就转发,没有表项就丢弃)路由表的形成1.直连路由路由器会自动学习自己端口上的网段2.非直连路由A、手动配置静态路由手动去配置B、动态学习ripospfensp操作命令命令作用displayiprouting-table查看路由表displayc......
  • linux 入门(四)
    linux入门(四)1:文件夹下所有文件的大小和详细信息du-h--max-depth=1|sort-hrdu命令可以查看文件夹(文件)占用的磁盘大小ls命令可以查看文件的详细信息,包括文件大小。该命令可以按照文件夹(文件)大小的降序排列,并以易读的方式显示文件夹(文件)大小以androiddemo为例30M ......
  • 圣天诺LDK加密锁(加密狗)如何保护Linux系统下的软件
    首先下载圣天诺LDK加密锁(加密狗)开发工具包Sentinel-LDK.tar.gz。(下载地址:http://www.chinadlp.com/?list-DriveDownload.html)将其拷贝到有桌面的linux系统中,并解压后使用。1、安装驱动:在/Sentinel-LDK/Redistrubute/Runtime找到驱动: tar.gz包驱动安装方法:#tar-zxvfak......
  • Linux根据服务查找端口的方法
    1.用ps-ef|grep服务名查找进程号,以查询tomcat服务为例,查询出来的进程号为553002.用netstat-anop|grep进程号方式查询端口,得知该端口为:90903.也可用端口号使用命令 losf -i:端口号查询该端口是否存在服务进程......