1) 准备一台新加坡VPS(确认公网IP、操作系统),本地测试机(Linux/Mac/Win)。2) 安装基础工具:nmap、netcat(nc)、telnet、tcpdump、iperf3、curl。命令示例:apt update && apt install -y nmap netcat tcpdump iperf3 curl。
1) Ping 测试:ping
1) 基础扫描:nmap -Pn -p 1-65535
1) 检测UDP是否被丢弃:iperf3 UDP测试或用nc -u尝试发送数据。2) 检测MTU/分片问题:ping -M do -s 1472
1) OpenVPN (UDP 1194 / TCP 443):在VPS上部署openvpn-server,先尝试TCP 443(更易穿透)。在客户端用--verb 4查看握手细节。2) WireGuard (UDP 51820):若UDP被封,需用UDP over TCP隧道或wireguard over TLS(例如通过SSLH或gost封装)。3) Shadowsocks / V2Ray:优先用TLS/WS over 443或mKCP,检测是否能通过。
1) 开启IP转发:echo 1 > /proc/sys/net/ipv4/ip_forward && 永久写入 /etc/sysctl.conf net.ipv4.ip_forward=1。2) iptables 基本SNAT/NAT(以Debian为例):iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT;iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT。3) 限制端口策略示例:iptables -A INPUT -p tcp --dport 22 -s <信任IP> -j ACCEPT;其它来自公网的22拒绝:iptables -A INPUT -p tcp --dport 22 -j DROP。
1) 高兼容优先:443(TCP) 做为首选(HTTPS/TLS封装),443(UDP)用于QUIC/QUIC-based协议。2) 次选:80(HTTP)用于REST或WebSocket回落。3) 避免:25(SMTP出站常封),137-139/445(SMB)和部分高风险端口。4) 安全策略:服务监听只在必要端口,使用fail2ban、限制源IP、TLS强制、服务证书与SNI分流。
1) TCP握手慢/重传:抓包定位MTU或MSS,调整MSS clamping:iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu。2) UDP不通:尝试TCP封装(使用stunnel、tls或gost),或更换端口到443。3) NAT穿透/端口映射:若VPS在云平台需在控制面板放通安全组/防火墙相应端口。
1) 开启服务日志(openvpn log / wireguard 日志 via systemd),并使用tcpdump -w capture.pcap过滤疑难端口。2) 定时脚本:使用cron定期运行nmap或curl健康检查,并将结果汇报到监控(Prometheus/Alertmanager或简单邮件)。3) 每次策略改动后按1-2-3步骤回归测试(ping/nc/nmap)。
Q1: 新加坡CMI线路是否普遍封UDP?
A1: 视运营商策略而定,部分CMI链路在国际出口会对UDP做限制或丢弃,建议先用iperf3或nc -u验证;若UDP被封,考虑使用TCP封装(443)或TLS隧道作为备选。
Q2: VPS上如何优雅地将WireGuard在不可用UDP环境下运行?
A2: 可用两种方案:1) 在VPS端用gost/stunnel把WireGuard的UDP封装到TLS/TCP,再在客户端相应封装;2) 使用用户态隧道将WireGuard流量转为WebSocket或HTTP/2在443上转发,均需在VPS与客户端协同配置。
Q3: 我该如何制定端口开放与安全白名单策略?
A3: 原则是最小开放:只对必要服务开放端口并限制来源(iptables -s