3、静态IP地址配置:通过命令行配置IP地址、子网掩码、网关、DNS

好,咱们接着聊网络配置。上一节讲了怎么查看当前网络状态,这一节我们直接上手——手动配置静态IP

说实话,在QNX系统里配IP,跟Linux有那么点像,但又不完全一样。我最早在QNX上配网络时,就按Linux那套ifconfigroute来搞,结果发现有些参数不生效。后来翻了半天文档才明白,QNX的网络栈有自己的脾气。

嗯,咱们今天就把这事彻底说清楚。

3.1 为什么需要静态IP?

你想想看,嵌入式设备很多时候是固定部署的。比如一个工控机、一个车载网关,它每天面对的网络环境是固定的。这时候用DHCP自动获取IP,反而容易出问题——万一DHCP服务器挂了,设备就连不上了。

我在项目中遇到过好几次,现场的设备因为DHCP租约到期没续上,直接断网。从那以后,凡是关键节点,我全改成静态IP。

静态IP的好处很明显:

  • 稳定可靠:IP地址不会变,依赖它的服务不会断
  • 便于管理:你知道每个设备是什么IP,排查问题快
  • 减少依赖:不需要DHCP服务器,设备自己就能跑

3.2 核心命令:ifconfig 和 route

QNX下配置IP,最核心的就是两个命令:ifconfigroute

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里比较特殊。它不是用 ifconfigroute,而是写在 /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-e1000io-pcilo0(回环接口)等。

警告:千万不要在生产设备上直接修改网络配置而不做备份。我曾经有一次远程配置设备,手滑把网关配错了,结果设备直接失联,最后只能派人去现场重启。所以,改配置前先备份:ifconfig io-e1000 > /tmp/net_backup.txt

3.5 小结

这一节我们讲了静态IP配置的核心操作。说白了就三步:配IP、配网关、配DNS。命令不多,但每个细节都可能让你翻车。

我个人建议,你在实验室里多练几遍,把常见的错误都踩一遍。这样到了现场,你才能从容应对。

下一节我们讲如何让这些配置在重启后依然生效——也就是网络配置的持久化。到时候我会分享一个我常用的脚本模板,保证好用。


公众号:蓝海资料掘金营,微信deep3321