Split the manual into a README index plus docs/ sections covering hardware selection, Linux and Windows serial servers, shared frpc configuration via env templating, client testing, security, and troubleshooting. Store real frpc credentials in an ignored .env and track images with Git LFS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.8 KiB
在 Linux 上部署 ser2net RFC 2217 串口服务器
本页说明如何在 Linux 上安装和配置 ser2net 4.x,以 RFC 2217 模式提供一个或四个串口。RFC 2217 客户端可以远程修改波特率、数据位、校验位、停止位和控制线。
安装 ser2net
Debian 或 Ubuntu:
sudo apt update
sudo apt install ser2net
其他常见发行版:
# Fedora
sudo dnf install ser2net
# Arch Linux
sudo pacman -S ser2net
确认已安装 ser2net 4.x:
ser2net -v
本文使用 ser2net 4.x 支持的现代 YAML 配置格式。
确认配置文件路径
当前 Debian 和 Ubuntu 软件包通常使用:
/etc/ser2net.yaml
并通过 /etc/default/ser2net 中的 CONFFILE 选择该文件。上游构建版本和部分其他发行版则默认使用:
/etc/ser2net/ser2net.yaml
编辑前先检查已安装的 systemd 服务:
systemctl cat ser2net
sudo grep -E '^[[:space:]]*CONFFILE=' /etc/default/ser2net 2>/dev/null || true
以下示例使用 Debian/Ubuntu 常见的 /etc/ser2net.yaml。如果服务指向其他路径,应编辑它实际加载的文件,不要另建一个不会被使用的配置文件。
配置 RFC 2217
编辑软件包服务选择的配置文件:
sudoedit /etc/ser2net.yaml
单端口配置
将串口设备路径替换为已确认的稳定路径:
%YAML 1.1
---
connections:
rs485-1:
accepter: telnet(rfc2217),tcp,127.0.0.1,2217
connector: serialdev,/dev/serial/by-id/REPLACE_WITH_YOUR_DEVICE,115200n81,local
配置要点:
telnet(rfc2217)显式启用 RFC 2217 协商及远程串口参数控制;tcp,127.0.0.1,2217仅监听回环地址,同机进程可以连接,但不会在 Linux 主机的 LAN 接口上单独暴露服务;115200n81是初始/默认参数:115200 baud、无校验、8 个数据位、1 个停止位;- RFC 2217 客户端连接后可以修改波特率及其他受支持的串口参数;
local忽略调制解调器载波检测,通常适用于 USB 转 RS-485 转换器。
无需添加额外选项来允许修改波特率;关键是使用 telnet(rfc2217) accepter。
四端口 FT4232H 或 CH344Q 配置
每个串口通道必须使用独立的本地 TCP 端口:
%YAML 1.1
---
connections:
rs485-1:
accepter: telnet(rfc2217),tcp,127.0.0.1,2217
connector: serialdev,/dev/serial/by-id/REPLACE_PORT_1,115200n81,local
rs485-2:
accepter: telnet(rfc2217),tcp,127.0.0.1,2218
connector: serialdev,/dev/serial/by-id/REPLACE_PORT_2,115200n81,local
rs485-3:
accepter: telnet(rfc2217),tcp,127.0.0.1,2219
connector: serialdev,/dev/serial/by-id/REPLACE_PORT_3,115200n81,local
rs485-4:
accepter: telnet(rfc2217),tcp,127.0.0.1,2220
connector: serialdev,/dev/serial/by-id/REPLACE_PORT_4,115200n81,local
一个物理串口通常只应有一个活动客户端。如果应用允许新连接替换已经失效但未释放的连接,可查阅 ser2net 的 kickolduser 选项;若断开当前客户端可能产生安全问题,不要直接启用该选项。
配置串口设备权限
不同发行版的软件包可能使用不同的服务账户。先检查服务用户和用户组:
systemctl show ser2net -p User -p Group
如果服务以专用 ser2net 用户运行,应确保该账户可以打开串口设备。在通过 dialout 组授予串口访问权限的发行版上,执行:
sudo usermod -aG dialout ser2net
然后重启服务。如果服务已配置 Group=dialout,或发行版软件包让服务以 root 身份运行,则无需执行该命令。
检查稳定链接及其目标设备的实际所有权:
ls -l /dev/serial/by-id/REPLACE_WITH_YOUR_DEVICE
ls -lL /dev/serial/by-id/REPLACE_WITH_YOUR_DEVICE
前台测试配置
ser2net 当前没有无副作用的“仅验证配置”命令。前台测试前,先停止软件包提供的服务,避免它占用串口或监听端口:
sudo systemctl stop ser2net
sudo ser2net -d -c /etc/ser2net.yaml
有效配置会启动监听器,并让进程保持在前台。配置错误、权限错误和设备打开错误会直接输出到终端。测试完成后按 Ctrl-C 退出。
如果实际配置文件不在 /etc/ser2net.yaml,应在 -c 后使用服务实际加载的路径。
启用和管理 systemd 服务
启动服务并设置为开机自动启动:
sudo systemctl enable --now ser2net
sudo systemctl restart ser2net
sudo systemctl status ser2net --no-pager
确认服务仅监听回环地址:
sudo ss -ltnp | grep -E ':(2217|2218|2219|2220)[[:space:]]'
单端口配置的预期监听地址类似:
127.0.0.1:2217
查看最近 100 条服务日志:
sudo journalctl -u ser2net -n 100 --no-pager