Linux路由设置

 Linux路由设置

 

一:使用 route 命令添加
使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法:
//添加到主机的路由
# route add –host 192.168.1.11 dev eth0
# route add –host 192.168.1.12 gw 192.168.1.1
//添加到网络的路由
# route add –net 192.168.1.11  netmask 255.255.255.0 eth0
# route add –net 192.168.1.11  netmask 255.255.255.0 gw 192.168.1.1
# route add –net 192.168.1.0/24 eth1
//添加默认网关
# route add default gw 192.168.2.1
//删除路由
# route del –host 192.168.1.11 dev eth0


二:在linux下设置永久路由的方法:
1.在/etc/rc.local里添加
方法: 
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.2.254

2.在/etc/sysconfig/network里添加到末尾
方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev

3./etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件)
any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129

 

4.开启 IP 转发:
# echo "1" >/proc/sys/net/ipv4/ip_forward (临时)
# vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启)



如果在rc.local中添加路由会造成NFS无法自动挂载问题,所以使用static-routes的方法是最好的。无论重启系统和service network restart 都会生效

按照linux启动的顺序,rc.local里面的内容是在linux所有服务都启动完毕,最后才被执行的,也就是说,这里面的内容是在netfs之后才被执行的,那也就是说在netfs启动的时候,服务器上的静态路由是没有被添加的,所以netfs挂载不能成功。

static-routes文件又是什么呢,这个是network脚本执行时调用的一个文件,这个文件的放置在/etc/sysconfig目录下,在network脚本中的位置是:

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

从这段脚本可以看到,这个就是添加静态路由的方法,static-routes的写法是

any net 192.168.0.0/16 gw 网关ip

这样的话,在启动network脚本的时候路由就自动添加上了,又因为network是在netfs前面启动的,自然在挂载nfs的时候就正常了。
这样看来,如果需要添加静态路由,使用static-routes文件要比使用rc.local好,而且当改变了网络配置,需要重启network脚本的时候,相应的静态路由是可以自动添加上的,但这时如果使用rc.local的话,在重启network服务的时候,原本添加好的静态路由就消失了。

<think> 嗯,用户再次聚焦嵌入式Linux路由设置,看来这是个实际项目需求。之前已经提供了基础配置方法,但用户可能遇到实操问题或需要更深入的技术细节。 从用户两次提问的连贯性看,ta应该是在开发多网卡嵌入式设备(可能是工业控制器或物联网网关),需要同时管理调试以太网和业务WiFi网络。这类场景常见的问题是:默认路由冲突导致业务流量误走调试网卡,或者双网卡同网段时的路由混乱。 技术层面需要特别注意: 1. 嵌入式环境的路由表优化很重要,RAM有限的系统不适合复杂路由协议 2. 引用[3]提到的静态/动态路由选择是个关键决策点——工业设备通常用静态路由,但移动设备可能需要OSPF简化版 3. 用户引用[2]提到ioctl编程,暗示ta可能需要程序化配置路由,这比shell命令更可靠 用户可能卡在双网卡同网段的特殊场景。这里有个隐藏知识点:Linux会优先选择最早启用的网卡作为默认路由出口。解决方案除了已提到的路由命令,其实还可以调整网卡metric值: ```bash ip route replace default via 192.168.1.1 dev eth1 metric 100 ``` 这样即使eth0先启动,系统也会优先选择metric值更小的eth1。 关于验证方法,除了基础的路由表检查,建议用户用tcpdump抓包确认流量路径: ```bash tcpdump -i eth0 host 192.168.25.100 ``` 能直观看到目标流量是否按预期网卡传输。 性能影响方面要提醒用户:路由条目超过200条时建议用hash路由表(CONFIG_IP_ROUTE_MULTIPATH_CACHED),这在嵌入式内核里默认不开启。 </think> 以下是嵌入式Linux系统的路由设置方法详解,结合实践要点和注意事项: ### 一、基础路由配置命令 1. **查看路由表** ```bash route -n # 传统命令 ip route show # 推荐iproute2工具 ``` > 输出示例: > `192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10` > `default via 192.168.1.1 dev eth0 metric 100` [^4] 2. **默认路由配置** ```bash # 添加默认路由(指定网关和网卡) route add default gw 192.168.1.1 dev eth0 # 或使用ip命令(推荐) ip route add default via 192.168.1.1 dev eth0 # 删除默认路由 route del default # 等价于 ip route del default ``` 3. **特定网段路由** ```bash # 添加192.168.25.0/24网段路由 route add -net 192.168.25.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth1 # 等效ip命令 ip route add 192.168.25.0/24 via 192.168.1.1 dev eth1 ``` ### 二、多网卡特殊场景处理 1. **双网卡同网段冲突解决方案** ```bash # 当eth0为默认网关但物理断开时 ip route add 192.168.1.0/24 via 192.168.1.1 dev eth1 # 强制指定出口 # 设置路由优先级(metric值越小优先级越高) ip route add default via 192.168.1.1 dev eth0 metric 100 ip route add default via 10.0.0.1 dev wlan0 metric 200 ``` > 此时发往公网的流量优先走eth0,故障时自动切wlan0[^4] 2. **网卡故障的应对机制** ```bash # 检测网卡状态 ip link show eth0 | grep 'state UP' # 动态删除失效路由 ip route flush dev eth0 # 移除eth0所有路由 ip route replace default via 10.0.0.1 dev wlan0 # 更新默认路由 ``` ### 三、永久生效配置方法 1. **配置文件路径** ```bash /etc/network/interfaces # Debian系 /etc/sysconfig/network-scripts/route-ethX # RHEL系 ``` 2. **配置示例**(Ubuntu): ```bash 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/8 via 192.168.1.100 dev eth1 ``` --- ### **验证配置成功的方法** 1. **实时路由表检查** ```bash ip route get 8.8.8.8 # 跟踪特定IP的路由路径 ``` > 输出示例:`8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.10` 2. **网络连通性测试** ```bash ping -I eth1 google.com # 指定从eth1发送数据包 traceroute -i wlan0 8.8.8.8 ``` 3. **路由规则监控** ```bash ip monitor route # 动态观察路由变化 ``` --- ### **性能优化建议** 1. **路由缓存启用** 在内核配置中开启: ```bash echo 1 > /proc/sys/net/ipv4/route/gc_timeout ``` 2. **避免路由泛滥** 限制路由表大小: ```math \text{最大路由条目} = \frac{\text{系统内存}}{2KB} ``` 通过`sysctl -w net.ipv4.route.max_size=2048`调整[^3] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值