1.
目标与前提说明
目标:在台湾VPS/云服务器上实现“出站与回程均走CN2”(双向CN2)并针对虚拟主机(Nginx+PHP/Node 等)做性能与稳定性优化。
前提:必须与IDC/云厂商确认是否支持CN2出口与回程、是否有BGP或指定线路选项;准备root权限或等效运维权限。
输出:可量化的网络路径(traceroute)、吞吐与丢包数据,以及可复现的配置步骤。
2.
选择供应商与线路验证
步骤1:在购买前询问“是否支持双向CN2回程(Return CN2)”,并要求写入工单或合同。
步骤2:拿到IP后在本地(大陆)使用traceroute/mtr/tcptraceroute测试:traceroute -n -w 2 -q 1
,观察经过AS是否包含「CHINANET」或CN2相关AS;使用mtr -rwzbc100 连续测量丢包。
步骤3:向厂商申请BGP社区或线路切换(如需要),并再次验证回程是否为CN2;如不可行,要求开启IP段回程策略或更换机房。
3.
操作系统与基础环境准备
推荐系统:Debian 11/12 或 Ubuntu 20.04/22.04(生产建议长期支持版本)。
安装基础工具:apt update && apt install -y curl vim git htop iftop mtr traceroute iperf3 tcpdump build-essential。
关闭不必要服务,设置时区与NTP:timedatectl set-timezone Asia/Taipei && apt install -y chrony && systemctl enable --now chrony。
4.
内核网络调优(sysctl)
编辑 /etc/sysctl.d/99-network.conf,示例关键项如下(写入并执行 sysctl -p):
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_rmem=4096 87380 134217728
net.ipv4.tcp_wmem=4096 65536 134217728
net.ipv4.tcp_mtu_probing=1(应对MSS/MTU问题)。执行 lsmod | grep bbr 和 sysctl net.ipv4.tcp_congestion_control 确认BBR启用。
5.
MTU 与 MSS 调整
问题:CN2链路有时经过隧道/承载导致MTU需要调整。
测试MTU:ping -M do -s 1472 <目标IP>(逐步减小payload找到不分片最大值)。
若发现分片,设置网口MTU:ip link set dev eth0 mtu 1440 并持久化到 /etc/network/interfaces 或云控制台网络设置。对TCP使用iptables进行MSS clamp:iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu。
6.
防火墙与连接跟踪优化
推荐使用 nftables 或简洁的 iptables 规则集。关闭不必要的 conntrack 记录长连接占用:
sysctl 增加 net.netfilter.nf_conntrack_max=262144 并调大相关超时:net.netfilter.nf_conntrack_tcp_timeout_established=86400。
对于高并发虚拟主机,尽量配置负载均衡(L7或L4)分担连接,同时启用 keepalive。
7.
Web 服务(Nginx)配置优化示例
安装Nginx(主线或稳定版),在 /etc/nginx/nginx.conf 调整:worker_processes auto;worker_connections 4096;use epoll;keepalive_timeout 15;client_body_timeout 10;sendfile on;tcp_nopush on;tcp_nodelay on。
为PHP-FPM或Node设置合适的进程池,监控慢请求并启用access_log分级。配合缓存(fastcgi_cache 或 proxy_cache)减少后端压力。
8.
TLS 与 HTTP/2、QUIC(可选)
使用Let’s Encrypt或自有证书,启用TLS 1.2/1.3,优先使用ECDHE+AEAD套件。
若需更好延迟体验,启用 HTTP/2(Nginx)或在支持的场景下部署 QUIC(Caddy 或 Nginx-Quic),并测试多路复用下的并发性能。
9.
监控与告警部署
部署 Prometheus + Node Exporter + Alertmanager 或使用云监控。
关键监控项:延迟(ping/mtr)、丢包率、TCP重传、网络带宽、CPU、内存、磁盘IO、Nginx 4xx/5xx 率、PHP/Node 响应时间。设置阈值告警并记录traceroute历史以便回溯回程切换时序。
10.
部署CI/CD与回滚策略
使用GitLab CI/GitHub Actions或Jenkins自动化部署。建议蓝绿或滚动部署,每台服务器预留健康检查接口,发布失败自动回滚。
数据库要有备份与异地恢复策略(每天增量、每周全量),并在不同可用区做冗余。
11.
日常排查流程(故障时)
步骤1:从大陆或参考节点执行 traceroute -n / mtr 检查出入链路是否为CN2。
步骤2:iperf3 测速以判断带宽瓶颈:iperf3 -c <服务器IP> -P 10 -t 30。
步骤3:查看系统日志(/var/log/syslog、nginx/error.log)与 tcpdump 抓包(tcpdump -n -s 0 -w /tmp/cap.pcap host and port 443)。如发现回程不是CN2,联系供应商并提供traceroute/mtr结果要求调整BGP回程策略。
12.
问:如何验证我的IP真的走的是双向CN2?
答:在大陆或多个代表性节点执行 traceroute/mtr(例如在华东、华南节点)观察路径中的AS号与跳点;若出站与回程路径均穿过CN2节点且丢包率低即为双向CN2。保留路由结果并要求运营商确认BGP策略以书面形式说明。
13.
问:启用BBR会不会影响稳定性?
答:BBR在高带宽高延迟链路上通常能提升吞吐并降低队列延迟,但在极端丢包环境下表现可能不如传统CUBIC。建议先在非生产或小流量环境开启并观察一周,配合 fq qdisc 与充分的 rmem/wmem 设置。
14.
问:部署前最容易忽视的点有哪些?
答:常见被忽视的有MTU/MSS导致的片段或TLS握手失败、回程不走CN2(仅出口是CN2)、conntrack限制导致并发连接瓶颈、以及未设置监控与告警导致问题发现滞后。逐项验证并保留测试记录与供应商沟通单据可大幅降低运维风险。
来源:面向开发者的台湾服务器双向cn2 虚拟主机环境优化与部署建议