Centos 添加静态路由及 SIOCADDRT错误处理

本文介绍如何在特定网络环境中配置静态路由,使内网能够访问特定外部IP地址211.211.1.69。文章详细记录了正确的静态路由添加命令,并指出常见错误及其原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 需求:将访问211.211.1.69的数据包通过em2发送到172.24.32.6,实现内网访问211.211.1.69。
# 网络基本信息
[root@apprz network-scripts]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.24.32.4     *               255.255.255.252 U     1      0        0 em2
192.168.9.0     *               255.255.255.0   U     1      0        0 em1
default         192.168.9.254   0.0.0.0         UG    0      0        0 em1

[root@nagios ~]# cat /etc/sysconfig/network-scripts/ifcfg-em2 
DEVICE=em2
IPADDR=172.24.30.6
NETMASK=255.255.255.252

[root@nagios ~]# cat /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
IPADDR=192.168.9.13
NETMASK=255.255.255.0
GATEWAY=192.168.9.254

静态路由添加命令:route add –host 211.211.1.69 gw 172.24.32.6 dev em2


  • 错误 -net 只能指定网段
[root@nagios ~]# route add -net 211.211.10.69 netmask 255.255.255.0 dev eth3
route: netmask doesn't match route address
  • 正确
[root@nagios ~]# route add -net 211.211.10.0 netmask 255.255.255.0 dev eth3

  • 错误 -host 不用指定掩码
[root@nagios ~]# route add -host 211.211.1.69 netmask 255.255.255.0 gw 172.30.0.69   
route: netmask 000000ff doesn't make sense with host route
  • 正确
[root@nagios ~]# route add –host 211.211.10.69 netmask 255.255.255.0 gw 172.24.30.5 dev em2
  • SIOCADDRT:No Such Process
    gw 后指定ip 必须和 em1 或者 em2 同一个网段

  • SIOCADDRT:No Such Device
    dev 后指定设备 必须是已经存在的网卡设备

04-28
### Route 路由机制及相关概念 在网络通信领域,`route` 是指操作系统或网络设备用于管理数据包转发的配置工具。它主要用于定义本地主机与其他网络之间的路径规则。以下是关于 `route` 的基本概念、使用方法以及常见错误解决方案。 --- ### 1. 基本概念 路由是一种指导 IP 数据包发送到目标地址的技术[^2]。在 Linux 系统中,`route` 命令用来查看和修改系统的路由表。每条路由记录通常包括以下几个字段: - **Destination**: 目标网络地址。 - **Gateway**: 下一跳网关地址。 - **Genmask**: 子网掩码。 - **Flags**: 标志位(如 U 表示可用,G 表示通过网关)。 - **Metric**: 度量值,影响优先级。 - **Iface**: 出口接口名称。 例如,添加一条静态路由命令如下: ```bash route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1 ``` 这条命令表示所有发往 `192.168.62.0/24` 网络的数据包都将通过网关 `192.168.1.1` 进行传输[^1]。 --- ### 2. 添加默认路由 如果当前系统无法找到任何匹配的目标网络,则会尝试使用默认路由作为最后的选择。默认路由通常是通往外部互联网的主要出口。 创建默认路由的命令形式为: ```bash route add default gw <gateway_ip> dev <interface_name> ``` 例如: ```bash route add default gw 192.168.146.2 dev ens33 ``` 这表明,默认情况下,所有未知目的地的数据包都会经由网关 `192.168.146.2` 并通过接口 `ens33` 发送出去[^3]。 --- ### 3. 查看现有路由 可以使用以下命令查看当前系统的路由表: ```bash route -n ``` 输出类似于: ``` Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.146.2 0.0.0.0 UG 0 0 0 ens33 192.168.62.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0 ``` 其中每一行代表了一条路由规则,解释了如何到达特定的目的地网络。 --- ### 4. 删除已有路由 若需删除某条路由,可使用 `route del` 命令。例如: ```bash route del -net 192.168.122.0 netmask 255.255.255.0 ``` 此命令将移除指向 `192.168.122.0/24` 网络的所有路由规则。 --- ### 5. 持久化路由配置 由于通过 `route` 命令手动添加路由会在机器重启或网卡重新启动后丢失,因此需要将其保存至配置文件以实现持久化。Linux 系统中常用的方式是编辑 `/etc/network/interfaces` 文件或将路由规则写入 `/etc/sysconfig/network-scripts/route-<interface>` 文件中[^1]。 例如,在 CentOS 上可以这样设置永久路由: ```bash echo "default via 192.168.146.2 dev ens33" >> /etc/sysconfig/network-scripts/route-ens33 ``` --- ### 6. 常见错误及解决办法 #### 错误 1:SIOCADDRT: Network is unreachable” 原因可能是指定的网关不可达或未正确配置。检查网关是否在线,并确认其属于同一子网内的有效 IP 地址。 #### 错误 2: 默认路由冲突 如果有多个默认路由可能导致混乱。运行以下命令清理多余的默认路由: ```bash ip route show | grep default | awk '{print $1}' | xargs ip route del ``` 随后再重新添加所需的默认路由。 #### 错误 3: 静态路由失效 确保目标网络确实可通过所设网关访问。测试连通性可以用 `ping` 工具验证网关可达性。 --- ### 7. 路由机制深入解析 对于更复杂的场景,涉及动态路由协议(如 OSPF、BGP),或者 Web 开发框架中的路由设计(如 ASP.NET Routing)。后者主要关注基于 URL 的请求分发逻辑[^4]。虽然两者应用场景不同,但核心思想均围绕着“根据条件选择最佳路径”的原则展开。 --- ### 结论 掌握 `route` 命令及其背后的工作原理有助于优化网络性能并排除连接故障。无论是静态还是动态路由配置,都需要仔细规划以满足实际需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值