本文为在香港机房运行的SSR服务提供一套可操作的迁移方案,涵盖从准备、备份、在新机房部署到切换与回滚的关键步骤与命令要点,帮助你在不影响用户使用的前提下完成旧服务器到新机房的平滑切换。
迁移前的准备工作决定了切换过程是否顺利。首先确认当前环境信息:记录香港VPS上运行的SSR版本、配置文件路径(常见为config.json或user-config.json)、监听端口、加密方式、协议(protocol)与混淆(obfs)设置、系统用户名与服务管理方式(systemd或supervisor)。其次备份关键数据:完整拷贝SSR程序目录、配置文件、crontab、iptables/nft规则、日志文件和任何自定义脚本。还需准备新机房的VPS账号、操作系统版本匹配、必要的软件依赖(Python/Libs、libsodium等)以及备用SSH密钥。最后拟定切换时间窗与回滚计划,通知相关用户(如果有SLA或业务高峰要避开)。
在迁移过程中,必须逐项保留与用户连接相关的设置:端口(port)、密码(password)、加密方式(method)、协议(protocol)、协议参数(protocol_param)、混淆方式(obfs)与混淆参数(obfs_param)。这些通常存放在SSR的配置文件中,直接迁移配置可以避免逐个通知用户更改。还要保留用户IP白名单、限速配置与连接数限制,以及systemd服务文件或启动脚本,确保服务能在新机房以相同方式自启动。
在新机房搭建的步骤应先在本地或私有网络进行测试。基本流程:1)安装依赖与运行环境(示例:apt/yum安装Python、pip以及必要库);2)上传并解压原服务器的SSR目录与配置文件;3)恢复systemd服务或启动脚本并设为开机自启;4)导入iptables/nft规则并确认端口开放;5)使用ssr-cli或客户端从新VPS的内网/公网地址进行短连接测试,检查握手、速度与延迟。验证时注意观察日志(access.log/error.log),确认无异常认证失败或协议不兼容问题。
切换测试可以分阶段在多个点进行:一是本地测试——在运维机器或测试机上用新IP直接连接验证工作;二是灰度测试——将少量真实用户的配置指向新机房开展A/B测试;三是DNS切换前的端口转发测试——利用iptables或负载均衡在旧机房转发流量到新机房以观察真实流量下的表现。DNS TTL应提前调低(如从3600降到60或更低)以便快速完成全网切换。采用灰度策略能够把风险控制在小范围内,若发现问题可立即回滚至旧服务器。
防火墙与路由直接影响连接可达性与性能。不同机房的网络策略、IP段或云厂商默认安全组可能阻断SSR端口或限制出入流量。因此在新机房必须确认安全组/iptables规则允许对应的TCP/UDP端口,并设置合理的连接跟踪与NAT规则以支持多并发连接。此外,若使用端口伪装或TLS反向代理,需配置相应的反代规则或证书。正确的路由与防火墙配置还能防止外部扫描或DDoS对新机房造成影响,建议在切换窗口内开启限速或白名单策略。
无缝切换要做到步骤化并准备回滚:步骤一,完成新机房部署并在内网/灰度环境验证;步骤二,降低DNS TTL并准备好更新记录;步骤三,在低峰期将部分用户或测试节点指向新IP,观察一段时间;步骤四,若一切正常,批量更新DNS至新IP并继续监控;步骤五,切换后24-48小时内保持旧服务器在线并设置为流量镜像或转发到新机房以防丢包或会话问题;步骤六,确认无异常再优雅下线旧服务器。回滚策略:保留旧服务器快照与配置,不要清理旧IP对应的防火墙/路由规则,若新机房出现严重问题,立即把DNS或负载均衡切回旧IP并通知用户,最后分析问题并在补丁后重试迁移。
推荐使用rsync进行文件同步(支持增量、保留权限),示例:rsync -avz --delete /path/to/ssr root@new_ip:/path/to/。使用scp或sftp也可。配置管理可借助Ansible批量化部署,快速在多台新机房VPS上一致化配置。iptables规则可用iptables-save/iptables-restore导出导入,systemd服务用systemctl enable/start/daemon-reload管理。网络测试可用ssr客户端、curl、tcping、mtr或iperf测带宽与延迟,日志排查可用tail -f和journalctl -u servicename查看服务输出。
