放行端口
云厂商安全组 + 本机防火墙同时放行 1237、8000,以及每一个转发端口(900 / 901 / …,按需)。这是最容易漏的一步。
中间不需要写任何配置文件。需要 Python 3.11 及以上(Debian 12 / Ubuntu 22.04 自带即为 3.11)。
Linux 用 deploy.sh 一条命令走完全流程;Windows 上双击脚本即可,或用 package.bat 打出免安装发行版。
# 公网机:装成服务端 $ bash deploy.sh --role server # 内网机:带上服务端地址与 token $ bash deploy.sh --role client \ --server-addr 1.2.3.4 --token <服务端 token> # 常用选项 # --venv /opt/venvs/tsmtravel 指定虚拟环境 # --mirror https://pypi.tuna... 国内镜像 # --offline 从 wheelhouse 离线装 # --recreate 重建虚拟环境 # --tune 顺带系统调优(需 root) # --service 装成 systemd 服务 $ bash deploy.sh --help
# desktop\ 下只有两个入口 $ desktop\启动桌面控制台.bat 双击即启动图形控制台 $ desktop\package.bat 一键打出免安装发行版 $ desktop\package.bat onefile 主程序打成单个 exe # 打包产物固定在 dist\tsmtravel\ tsmtravel-desktop.exe 桌面控制台(推荐双击这个) tsmtravel.exe 主程序:内核 + Web 面板 启动管理面板.bat 只启面板,浏览器自动打开 使用说明.txt # 整个文件夹拷到任意 x64 机器即可运行, # 数据默认写在同级 data\,换机器整包带走即迁移。
服务端跑在有公网 IP 的机器上,负责把流量送到外面。
云厂商安全组 + 本机防火墙同时放行 1237、8000,以及每一个转发端口(900 / 901 / …,按需)。这是最容易漏的一步。
在「服务器配置」页把 token 复制出来;「接入信息」页可直接复制 token、控制端口与证书指纹,并下载 ca.crt。
隧道管理 → 新建隧道,填隧道名、公网端口 remote_port、内网端口 local_port、绑定客户端 client_id(留空则允许客户端动态申请)。
客户端只主动出站,不在路由器或交换机上做任何端口映射。
python -m tsmtravel,访问 http://客户端IP:1237,在初始化页面选「客户端」。
「服务器配置」页填服务端地址、控制端口(8000)与 token;校验二选一:把服务端 ca.crt 拷到本机并在 ca_file 填路径,或直接把证书指纹填进 cert_fingerprint。
「隧道管理」新建隧道时,隧道名与 remote_port 必须与服务端一致,local_port 填本机要暴露的服务端口。
多数「连不上」的原因都在这六条里,按顺序检查一遍基本就通了。
安全组与本机防火墙是两套东西,只配一边等于没配。先确认 1237、8000 与转发端口在两边都放行。
校验方式二选一即可:用 ca.crt 就不要同时填指纹;两者都填且不一致时握手会失败。
客户端隧道名与 remote_port 必须与服务端完全一致,否则服务端找不到对应隧道。
角色一旦写入,重复部署不会擅自切换,避免误操作把在跑的隧道断掉。换角色需显式加 --force-role。
同一份数据目录只允许一个转发内核。在面板点一次「停止内核」,即可清理本机所有残留内核与 pid 文件。
源码方式直接跑 python -m tsmtravel 时数据会落到 ~/.tsmtravel;用 deploy.sh 部署则固定在项目根的 data/。迁移时把整个 data/ 带走。
安装开发依赖后执行端到端用例:pip install -r requirements-dev.txt 之后跑 python -m pytest tests -q。用例覆盖反向转发、多客户端多隧道、错误 token 拒绝、断线重连、客户端离线后转发端口释放、动态申请端口白名单、TLS 1.3 协商与日志自动清理。
若本机没有装 pytest-asyncio,异步用例会报 async def functions are not natively supported;本项目用例都自带 asyncio.run,逐个文件跑不受影响,例如 python -m pytest tests/test_housekeeping.py -q。
压测脚本在 bench/bench.py,自带 echo 服务与双内核,可本机自测:python bench/bench.py --self-test --connections 5000 --hold 30 --report docs/bench_report.md。