3、静态IP地址配置:通过命令行配置IP地址、子网掩码、网关、DNS
好,咱们接着聊网络配置。上一节讲了怎么查看当前网络状态,这一节我们直接上手——手动配置静态IP。
说实话,在QNX系统里配IP,跟Linux有那么点像,但又不完全一样。我最早在QNX上配网络时,就按Linux那套ifconfig加route来搞,结果发现有些参数不生效。后来翻了半天文档才明白,QNX的网络栈有自己的脾气。
嗯,咱们今天就把这事彻底说清楚。
3.1 为什么需要静态IP?
你想想看,嵌入式设备很多时候是固定部署的。比如一个工控机、一个车载网关,它每天面对的网络环境是固定的。这时候用DHCP自动获取IP,反而容易出问题——万一DHCP服务器挂了,设备就连不上了。
我在项目中遇到过好几次,现场的设备因为DHCP租约到期没续上,直接断网。从那以后,凡是关键节点,我全改成静态IP。
静态IP的好处很明显:
- 稳定可靠:IP地址不会变,依赖它的服务不会断
- 便于管理:你知道每个设备是什么IP,排查问题快
- 减少依赖:不需要DHCP服务器,设备自己就能跑
3.2 核心命令:ifconfig 和 route
QNX下配置IP,最核心的就是两个命令:ifconfig 和 route。
ifconfig 负责配IP地址和子网掩码,route 负责配网关。DNS的配置稍微特殊一点,我们单独说。
3.2.1 配置IP地址和子网掩码
假设我们的网卡是 io-e1000(这是QNX里常见的Intel千兆网卡驱动),要配的IP是 192.168.1.100,子网掩码 255.255.255.0。
命令如下:
ifconfig io-e1000 192.168.1.100 netmask 255.255.255.0 up
这里有个细节:up 参数表示激活网卡。如果你只配IP不加 up,网卡可能还是down的状态,数据包发不出去。我刚开始就犯过这个错,配完IP发现ping不通,查了半天才发现网卡没激活。
如果你想同时配多个IP(比如一个设备有两个网段),可以这样:
ifconfig io-e1000 192.168.1.100 netmask 255.255.255.0 up
ifconfig io-e1000 alias 10.0.0.100 netmask 255.255.255.0
注意第二个命令多了个 alias 关键字。这是QNX的语法,表示给同一个网卡加第二个IP。
3.2.2 配置默认网关
IP配好了,但数据要出局域网,就得靠网关。配置网关用 route 命令:
route add default 192.168.1.1
这条命令的意思是:所有目标不在本网段的数据包,都发给 192.168.1.1 这个地址。
你也可以加一条具体的路由,比如去某个特定网段走另一个网关:
route add -net 10.0.0.0/24 192.168.1.254
我个人习惯是先配IP,再配网关。顺序反了有时候会报错,说路由添加失败——因为网关地址本身不可达。
3.2.3 配置DNS
DNS的配置在QNX里比较特殊。它不是用 ifconfig 或 route,而是写在 /etc/resolv.conf 文件里。
你可以直接编辑这个文件:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
这里要注意:resolv.conf 文件在系统重启后会丢失。如果你想让配置持久化,需要把它写到启动脚本里,或者放到 /etc/system/config/ 下。
我曾经踩过一个坑:配完DNS后,用 ping 域名发现解析不了。排查了半天,发现是 resolv.conf 的权限不对,QNX的DNS解析器读不到这个文件。所以配完后记得检查一下:
ls -l /etc/resolv.conf
# 确保是 -rw-r--r-- 权限
3.3 完整配置示例
咱们把上面这些串起来,一个完整的静态IP配置流程是这样的:
# 1. 配置IP和子网掩码
ifconfig io-e1000 192.168.1.100 netmask 255.255.255.0 up
# 2. 配置默认网关
route add default 192.168.1.1
# 3. 配置DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
# 4. 验证配置
ifconfig io-e1000
ping -c 3 192.168.1.1
ping -c 3 www.baidu.com
重要提醒:以上配置在系统重启后会丢失。如果需要持久化,请参考后续章节的「网络配置持久化」内容。
3.4 常见问题与避坑指南
这里我总结几个实际项目中经常遇到的问题:
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 配完IP后ping不通网关 | 网卡未激活或IP冲突 | 检查 ifconfig 输出,确认网卡状态为 UP |
| 能ping通IP但ping不通域名 | DNS配置错误或 resolv.conf 权限问题 |
检查文件内容和权限,用 nslookup 测试 |
| 路由添加失败 | 网关地址不可达或路由已存在 | 先ping网关,再用 route delete 删除旧路由 |
| 配置重启后丢失 | 未写入持久化配置 | 将命令写入启动脚本或 /etc/system/config/ |
小技巧:如果你不确定当前网卡的名字,可以用 ifconfig -a 列出所有网卡。QNX里常见的网卡名有 io-e1000、io-pci、lo0(回环接口)等。
警告:千万不要在生产设备上直接修改网络配置而不做备份。我曾经有一次远程配置设备,手滑把网关配错了,结果设备直接失联,最后只能派人去现场重启。所以,改配置前先备份:ifconfig io-e1000 > /tmp/net_backup.txt
3.5 小结
这一节我们讲了静态IP配置的核心操作。说白了就三步:配IP、配网关、配DNS。命令不多,但每个细节都可能让你翻车。
我个人建议,你在实验室里多练几遍,把常见的错误都踩一遍。这样到了现场,你才能从容应对。
下一节我们讲如何让这些配置在重启后依然生效——也就是网络配置的持久化。到时候我会分享一个我常用的脚本模板,保证好用。
公众号:蓝海资料掘金营,微信deep3321