麒麟系统双网卡:一张连外网,一张连串口服务嵌入式设备访问 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" 是最准的。

相关推荐
fiveym4 小时前
01 - iPXE + Clonezilla 网络装机原理解析
linux·运维·服务器·网络
虎头金猫5 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
dog2505 小时前
网络优化,还是降低各阶矩
服务器·网络·php
liuqs3325 小时前
nat123安卓和nat123全端口选型指南,映射工具怎么挑
网络·笔记
x_x-F6 小时前
网络数据从网卡到用户态:一场基于内存所有权转移的接力赛
开发语言·网络·php
mitugaoyang199311 小时前
marvell88Q5152交换机开发(0)-芯片介绍
网络
CDN36011 小时前
流媒体加速实践:出海东南亚短视频点播频繁缓冲,HLS 分片与 Nginx 配置调优
java·网络·nginx·流媒体加速
xiaoxiangsiyan11 小时前
RHCE2026完整版全知识点清单
运维·网络·学习·自动化·rhce
AlanBruce12 小时前
摩尔信使MThings新功能:水电不分家、一键设备扫描
网络·自动化·plc·mthings·摩尔信使·电气·西门子s7
Titan202412 小时前
Linux网络基础知识
linux·服务器·网络·c++·学习