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实现静态路由
背景和原理
路由器的功能是实现一个网段到另一个网段之间的通信,路由分为静态路由、动态路由、
默认路由和直连路由。静态路由是手工指定的,使用静态路由的好处是网络安全保密性高。动态路由因为需要路由器之间频繁地交换各自的路由表,而对路由表的分析可以揭示网络的拓扑结构和网络地址等信息。因此,网络出于安全方面的考虑也可以采用静态路由。不占用网络带宽,因为静态路由不会产生更新流量。
网络规划模拟
模拟使用四台Linux机器,分别命名为Linux1、Linux2(router1)、Linux3(router)
和Linux4,其中Linux2和Linux3当做路由器来配置静态路由功能,每两台机器之间的通信使用不同的网段和网络模式
- 环境模拟
克隆四台Linux机器并命名,分别按照网络规划图配置每台机器的网卡,只使用静态ip和子网掩码,克隆的机器需要执行命令>/etc/udev/rules.d/70-persistent-net.rules清空网卡相关信息文件,配置完后查看ip并检验同网段设备之间的通信
Linux1
Linux2
Linux3
Linux4
- 配置静态路由
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之间可以互相通信
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 配置文件
- 检验静态路由
5.1 查看各自机器的路由表
5.2 在Linux1机器上执行ping命令,进行两两通信
5.3 在其他机器上使用tcpdump抓取每两两通信之间的icmp报文包进行检验
ping 10.0.0.129 –c3
ping 192.168.1.130 –c3
ping 192.168.2.131 –c3
- 上述配置若在重启网络服务或者重启系统时都会失效。若想实现永久生效,有以下几种
方法
以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系统启动时自动执行添加静态路由的命令,从而实现静态路由的持久化。
linux下永久添加静态路由-不同的更多相关文章
- linux下永久添加静态路由
在linux下永久添加静态路由有两种方法: 添加路由的命令: 1,route add route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 ...
- Debian如何永久添加静态路由
在RedHat(RHEL)/CentOS/Fedora Linux环境永久添加静态路由通常是写在诸如/etc/sysconfig/network-scripts/route-eth0这些文件里.在De ...
- centos7 永久添加静态路由
查看路由表 ip route show|column -t route -n 永久添加路由 vim /etc/sysconfig/network-scripts/route-ens224 via 17 ...
- linux添加静态路由
1.使用route命令,查看本机路由直接输入route回车即可.route 命令参数: add 增加路由 del 删除路由 -net 设置到某个网段的路由 -host 设置到 ...
- Windows 系统cmd设置添加静态路由方式
电脑上添加静态路由,cmd设置路由 方法/步骤 1.首先在“运行”窗口输入cmd(按WIN+R打开运行窗口),然后回车进入命令行,输入 route add 10.253.251.0 mask ...
- Windows 系统PowerShell或cmd设置添加静态路由方式
电脑上添加静态路由,PowerShell或cmd设置路由 方法/步骤1.首先以管理员身份在“运行”窗口输入cmd或PowerShell(按WIN+R打开运行窗口),然后回车进入命令行,输入 route ...
- 嵌入式 Linux下永久生效环境变量bashrc
嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...
- centos7 防火墙一些相关设置 开机添加静态路由 特殊的方法
参考文献: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/security_guide/s ...
- Centos7添加静态路由
本文摘取自 Centos7系统配置上的变化(二)网络管理基础 一.ip route显示和设定路由 1.显示路由表 [root@centos7 ~]# ip route show default via ...
- Redhat、CentOS添加静态路由的标准方法
我们经常遇到需要在系统默认路由的基础上,额外添加静态路由的需求.为了使得下次系统启动这些静态路由依旧生效,我们可能采取在rc.loal里加入route命令追加静态路由的方法. 现在给大家推荐Redha ...
随机推荐
- TfrxReport.Clear。尽量慎用。
for MyXuHaoKey in MyXuHaoJianRongSanJieKouDataDicApi.KeySortList do begin //标记下打印编号,吸入淘打的客户 MyTradeA ...
- NC51178 没有上司的舞会
题目链接 题目 题目描述 Ural大学有N名职员,编号为1~N. 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司. 每个职员有一个快乐指数,用整数 \(Hi\) 给出,其中 \(1\le ...
- Springboot集成Swagger实战
1.介绍 本文将通过实战介绍Springboot如何集成swagger2,以用户管理模块为例,实现项目接口文档的在线管理. 项目源码 本文只列出核心部分,详细请看源码: https://gitee.c ...
- Oracle高级队列介绍
原始链接:http://www.oracle-developer.net/display.php?id=411 oracle高级队列介绍 高级队列Advanced Queuing(AQ)在oracle ...
- Java并发编程实例--10.使用线程组
并发API提供的一个有趣功能是可以将多个线程组成一个组. 这样我们就能将这一组线程看做一个单元并且提供改组内线程对象的读取操作.例如 你有一些线程在执行同样的任务并且你想控制他们,不考虑有多少个线程仍 ...
- 如何基于three.js(webgl)引擎架构,实现3D密集架库房,3D档案室(3d机器人取档、机器人盘点、人工查档、设备巡检)
前言: 这是最好的时代,也是最坏的时代:是充满挑战的时代,也是充满机遇的时代.是科技飞速的时代,也是无限可能的时代. 近年来,人工智能(AI)技术的飞速发展已经席卷了全球,不断突破着技术边界,为各行 ...
- 利用VkKeyScanA判断大写字母
string bind = "Hello"; for (int i = 0; i < bind.length(); i++) { short ch = VkKeyScanA( ...
- 【Android 逆向】【ARM汇编】 事前更新和事后更新
1. 事前更新,事后更新,不更新 不更新 ldr R4, [R1, R2, lsl #1] 相当于 R4 = *(R1 + R2 << 2^1) 之后 R1.R2的值时没有变化的 事前更新 ...
- LayUI框架应用常见问题
https://layui.itze.cn/index.html LayUI框架文档主页 获取URL参数 诸如表格中的"编辑","详情"工具按钮,需要在弹出层页 ...
- 在Bind DNS Server中添加一个开发环境的域名
1.Create Master Zone 我们的开发域名约定为dudusoft.cn 输入2个字段,然后提交 2.在域名里面,添加主机记录 点击上图的"Address(0)",出现 ...