Files
crosstyanandClaude Opus 4.8 74905def9a Add Chinese RFC 2217 serial-over-frp deployment guide
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>
2026-07-17 15:04:52 +08:00

178 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[返回首页](../README.md)
# 在 Linux 上部署 ser2net RFC 2217 串口服务器
本页说明如何在 Linux 上安装和配置 ser2net 4.x,以 RFC 2217 模式提供一个或四个串口。RFC 2217 客户端可以远程修改波特率、数据位、校验位、停止位和控制线。
## 安装 ser2net
Debian 或 Ubuntu
```bash
sudo apt update
sudo apt install ser2net
```
其他常见发行版:
```bash
# Fedora
sudo dnf install ser2net
# Arch Linux
sudo pacman -S ser2net
```
确认已安装 ser2net 4.x
```bash
ser2net -v
```
本文使用 ser2net 4.x 支持的现代 YAML 配置格式。
## 确认配置文件路径
当前 Debian 和 Ubuntu 软件包通常使用:
```text
/etc/ser2net.yaml
```
并通过 `/etc/default/ser2net` 中的 `CONFFILE` 选择该文件。上游构建版本和部分其他发行版则默认使用:
```text
/etc/ser2net/ser2net.yaml
```
编辑前先检查已安装的 systemd 服务:
```bash
systemctl cat ser2net
sudo grep -E '^[[:space:]]*CONFFILE=' /etc/default/ser2net 2>/dev/null || true
```
以下示例使用 Debian/Ubuntu 常见的 `/etc/ser2net.yaml`。如果服务指向其他路径,应编辑它实际加载的文件,不要另建一个不会被使用的配置文件。
## 配置 RFC 2217
编辑软件包服务选择的配置文件:
```bash
sudoedit /etc/ser2net.yaml
```
### 单端口配置
将串口设备路径替换为已确认的稳定路径:
```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
%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` 选项;若断开当前客户端可能产生安全问题,不要直接启用该选项。
## 配置串口设备权限
不同发行版的软件包可能使用不同的服务账户。先检查服务用户和用户组:
```bash
systemctl show ser2net -p User -p Group
```
如果服务以专用 `ser2net` 用户运行,应确保该账户可以打开串口设备。在通过 `dialout` 组授予串口访问权限的发行版上,执行:
```bash
sudo usermod -aG dialout ser2net
```
然后重启服务。如果服务已配置 `Group=dialout`,或发行版软件包让服务以 root 身份运行,则无需执行该命令。
检查稳定链接及其目标设备的实际所有权:
```bash
ls -l /dev/serial/by-id/REPLACE_WITH_YOUR_DEVICE
ls -lL /dev/serial/by-id/REPLACE_WITH_YOUR_DEVICE
```
## 前台测试配置
ser2net 当前没有无副作用的“仅验证配置”命令。前台测试前,先停止软件包提供的服务,避免它占用串口或监听端口:
```bash
sudo systemctl stop ser2net
sudo ser2net -d -c /etc/ser2net.yaml
```
有效配置会启动监听器,并让进程保持在前台。配置错误、权限错误和设备打开错误会直接输出到终端。测试完成后按 `Ctrl-C` 退出。
如果实际配置文件不在 `/etc/ser2net.yaml`,应在 `-c` 后使用服务实际加载的路径。
## 启用和管理 systemd 服务
启动服务并设置为开机自动启动:
```bash
sudo systemctl enable --now ser2net
sudo systemctl restart ser2net
sudo systemctl status ser2net --no-pager
```
确认服务仅监听回环地址:
```bash
sudo ss -ltnp | grep -E ':(2217|2218|2219|2220)[[:space:]]'
```
单端口配置的预期监听地址类似:
```text
127.0.0.1:2217
```
查看最近 100 条服务日志:
```bash
sudo journalctl -u ser2net -n 100 --no-pager
```