麒麟系统双网卡:一张连外网,一张连串口服务嵌入式设备访问 1883 端口

麒麟系统双网卡:一张连外网,一张连串口服务嵌入式设备访问 1883 端口

一、场景

麒麟机器有两张网卡:

  • eno1 → 连外网,192.168.100.68/24,网关 192.168.100.1
  • enp1s0 → 网线直连(USR)串口服务器,要给对方提供 1883 端口(MQTT)

设备要能访问麒麟 1883,IP 怎么设、坑在哪。

二、双网卡的核心铁律

📌 只能有一个默认网关。外网卡配网关,内网卡(连设备)坚决不配网关,否则默认路由被抢,外网直接断。

三、IP 配置过程

1. 初始状态

bash 复制代码
ip a
复制代码
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...   # 未配 IP,链路已 UP
3: eno1: <...> inet 192.168.100.68/24              # 外网,已配网关
bash 复制代码
ip route show
复制代码
default via 192.168.100.1 dev eno1
192.168.100.0/24 dev eno1

路由干净,目前只有 eno1 一条 default ✅

2. 给 enp1s0 建连接(NM 里还没有)

直接 nmcli con mod enp1s0 会报 未知的连接 "enp1s0",因为 con mod 操作的是连接配置名 ,不是接口名。接口 UP 但 NM 没托管时得先 add

bash 复制代码
sudo nmcli con add type ethernet ifname enp1s0 con-name enp1s0 \
  ipv4.method manual \
  ipv4.addresses 192.168.1.200/24 \
  ipv4.gateway "" \
  ipv4.dns "" \
  ipv4.never-default yes \
  autoconnect yes

sudo nmcli con up enp1s0

关键两句:

  • ipv4.gateway "" ------ 内卡不配网关
  • ipv4.never-default yes ------ 防止抢默认路由

配完确认:

bash 复制代码
nmcli con show
复制代码
NAME         UUID                                  TYPE      DEVICE
有线连接 1   80a5d9cd-...                         ethernet  eno1
enp1s0       f4abda41-...                         ethernet  enp1s0

enp1s0 已绑定 DEVICE,OK ✅

四、找设备的真实 IP(踩坑重点)

假设设备在 192.168.1.x,麒麟 enp1s0 配了 192.168.1.200/24,扫一下:

bash 复制代码
sudo nmap -sn 192.168.1.0/24

结果:

复制代码
Nmap scan report for 192.168.1.200   # 只有麒麟自己
Nmap done: 256 IP addresses (1 host up)

只扫到自己,没人设备 ------ 两种可能:

  1. 设备 IP 不在 192.168.1.x (USR 出厂段常见还有 192.168.0.7/192.168.0.1/192.168.2.1)
  2. USR 固件关了 ICMP,ping/nmap -sn 扫不出来但 TCP 端口可能还活着

先确认物理层:

bash 复制代码
ip link show enp1s0
复制代码
enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...

LOWER_UP 有了 → 网线通电、对面设备上电 ✅,物理层没问题,段不对的可能性最大。

换段试(推荐)

bash 复制代码
sudo nmcli con mod enp1s0 ipv4.addresses 192.168.0.200/24
sudo nmcli con up enp1s0
sudo nmap -sn 192.168.0.0/24

撞到为止。USR 就那几个默认段,三轮内能对上。

更稳的办法

Windows 上跑 USR Config Tool(官网下),同网段插网线一搜就出,MAC + IP + 掩码全显示,还能直接把设备 IP 改成跟你 enp1s0 同段。不受 ICMP 关闭影响,比 nmap 靠谱。

五、1883 端口侧要确认的

段对齐、能 ping 通之后,设备还访问不了 1883,多半是这三处:

bash 复制代码
# 1. 服务监听地址,必须是 0.0.0.0:1883 或 192.168.x.200:1883
ss -lntp | grep 1883

# 2. 防火墙放行
sudo firewall-cmd --permanent --add-port=1883/tcp
sudo firewall-cmd --reload

# 3. 设备 Web 页里
#    目标 IP = enp1s0 地址(如 192.168.1.200)
#    目标端口 = 1883
#    模式 = TCP Client(MQTT 一般走 TCP)

验证连通(不依赖业务服务):

bash 复制代码
sudo nc -l 1883     # 麒麟侧

设备点重连,nc 有输出 = TCP 已进来,网络层 100% 通。

六、排错速查表

现象 问题位
麒麟 ping 不通设备 IP 段不对 / 设备不在 192.168.1.x
ping 通但 1883 连不上 防火墙 / 1883 没监听 / 绑了 127.0.0.1
设备 Web 显示 Connected 但没数据 串口波特率/校验跟对端对不上(跟网络无关)
nc 能收到连接,业务服务收不到 业务服务绑错 IP(绑了 eno1 或 lo)
nmap -sn 只扫到自己 段不对 or 设备关了 ICMP

七、最小可用配置回顾

bash 复制代码
# 外网卡 eno1 ------ 正常配,带网关
nmcli con mod 有线连接\ 1 ipv4.addresses 192.168.100.68/24 \
  ipv4.gateway 192.168.100.1 ipv4.dns "114.114.114.114"

# 内网卡 enp1s0 ------ 跟设备同段,不配网关
nmcli con add type ethernet ifname enp1s0 con-name enp1s0 \
  ipv4.method manual ipv4.addresses 192.168.1.200/24 \
  ipv4.gateway "" ipv4.never-default yes

# 防火墙
firewall-cmd --permanent --add-port=1883/tcp && firewall-cmd --reload

⚠️ 设备 IP 段如果不是 192.168.1.x,enp1s0 的 address 跟着改就行,别死磕 1.x。USR 背标上的 "Default IP" 是最准的。

相关推荐
可爱系程序猿3 小时前
Windows 打印链路诊断:从设备枚举、TCP/IP 端口到 Spooler 服务恢复
网络·网络协议·tcp/ip
深念Y5 小时前
P2P组网选型与折腾记录
网络·网络协议·p2p·局域网·远程·组网
jjjava2.05 小时前
系统日志:从入门到精通的完整指南
网络·数据库
MartinYeung56 小时前
[论文学习]InjecAgent:工具集成大语言模型智能体的间接提示注入基准测试
网络·学习·语言模型
paopaokaka_luck6 小时前
基于Springboot3+Vue3的高校选课系统(AI选课助手、协同过滤算法、分享到微博、扣扣、Echarts图形化分析)
网络·spring boot·网络协议·echarts
三川6987 小时前
深入浅出SSD 10:UFS介绍
网络
BullSmall8 小时前
AFL++ HTTP Mode(网络 / HTTP 服务模糊测试)完整安装教程
网络·网络协议·http
Yuiiii__8 小时前
一次“在家连不上公司内网服务”的排障实战记录
网络·智能路由器
普马萨特9 小时前
5G小基站对室内定位的影响
网络·5g
专业工业电源打工人9 小时前
F0505S-2WR3 适配优选 钡特电源 DF2-05S05LS|2W 隔离 DC-DC 模块电源5V转5V硬件选型参数规格解析
大数据·网络·人工智能