1.
概述与准备工作
- 目标:把位于日本且走CN2链路的VPS和国内物理/云节点安全互联,保证稳定、低延迟与合规。
- 前提:两端均有root权限(或sudo),开放必要端口,已知两端公网IP或动态域名。
- 准备工具:ssh客户端、iperf3、mtr/traceroute、tcpdump、文本编辑器。建议在两端都先更新系统:Ubuntu/Debian:apt update && apt upgrade -y;CentOS:yum update -y。
2.
选择互联方式:SSH隧道、WireGuard 或 OpenVPN
- 推荐:WireGuard(更轻、更快、配置简单)。若需更兼容性可用OpenVPN;临时测试可用SSH隧道。
- 决策要点:追求性能选WireGuard;需要TLS/证书+兼容性选OpenVPN;不想改路由可用SSH反向隧道。
3.
在日本VPS上部署WireGuard(Server)
- 安装(Debian/Ubuntu):apt install -y wireguard iproute2 iptables resolvconf;(CentOS):yum install -y epel-release && yum install -y wireguard-tools
- 生成密钥:wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
- 创建配置 /etc/wireguard/wg0.conf(示例):
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = (server_private.key的内容)
PostUp = sysctl -w net.ipv4.ip_forward=1; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
- 启动并开机自启:systemctl enable --now wg-quick@wg0
4.
在国内节点上部署WireGuard(Client/Peer)
- 安装同上;生成客户端密钥:wg genkey | tee client_private.key | wg pubkey > client_public.key
- 在客户端配置 /etc/wireguard/wg0.conf(示例):
[Interface]
Address = 10.8.0.2/24
PrivateKey = (client_private)
DNS = 119.29.29.29
[Peer]
PublicKey = (server_public)
Endpoint = server_ip:51820
AllowedIPs = 0.0.0.0/0(或指定要经由日本VPS的网段)
- 启动:systemctl enable --now wg-quick@wg0
5.
双向路由与策略路由(必要时)
- 场景:仅部分流量走日本VPS(比如访问特定国外资源),否则全部走国内出口。
- 方法1:在客户端调整AllowedIPs为特定网段(例如 123.123.0.0/16)。
- 方法2(高级,基于策略路由):添加 ip rule 和 ip route,示例:ip rule add from 192.168.1.0/24 table 200;ip route add default via 10.8.0.1 dev wg0 table 200。记得持久化到 /etc/sysconfig/network-scripts 或 /etc/network/interfaces。
6.
NAT 与转发的精确配置
- 在VPS上启用IP转发并持久化:echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
- 精准NAT(仅对WireGuard网段):iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
- 若使用nftables:nft add table ip nat; nft add chain ip nat post { type nat hook postrouting priority 100; };nft add rule ip nat post oifname "eth0" ip saddr 10.8.0.0/24 masquerade
7.
MTU/MSS 调整以避免分片问题
- 建议MTU:WireGuard默认51820下端到端MTU可能需设置为 1420 或 1380。修改WireGuard配置:MTU = 1420。
- 对TCP做MSS clamping(防止分片):iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
8.
测试连通性与性能排查步骤
- 基础检查:ssh 到两端,wg show 查看握手;ip a 查看接口;ping 10.8.0.1/2。
- 路径测试:mtr -rw <目标IP>;traceroute -T/-I 查看TCP/ICMP路径。
- 带宽测试:在一端运行 iperf3 -s,另一端 iperf3 -c server_ip -P 4 -t 30。
- 抓包分析:tcpdump -i wg0 -w /tmp/wg.pcap,使用Wireshark打开查看重传、MTU问题。
9.
安全加固建议(系统与网络层)
- SSH:禁用密码登录,仅允许密钥登录(/etc/ssh/sshd_config:PasswordAuthentication no,PermitRootLogin no),更改默认端口并使用Fail2ban限制尝试。
- 防火墙:仅开放WireGuard端口(51820/UDP)和必要服务端口。示例:iptables -A INPUT -p udp --dport 51820 -j ACCEPT;其他默认DROP或使用ufw/nftables策略。
- 日志与监控:部署fail2ban、logrotate;使用Prometheus + Grafana或简单的Netdata监控流量与负载。
- 密钥管理:定期更换WireGuard密钥,保护私钥文件权限(chmod 600)。
10.
应用层安全与隐私保护
- HTTPS/证书:通过Let's Encrypt给应用启用HTTPS,避免中间人。
- WAF与访问控制:对外服务加装ModSecurity或云WAF,限制来自可疑国家/地区的访问。
- 最小暴露原则:把日本VPS作为出口节点,尽量减少对公网直接暴露的服务。
11.
退路与故障恢复策略
- 备份配置文件:定期备份 /etc/wireguard、iptables/nft 配置与系统配置至安全存储。
- 冗余链路:如果业务重要,考虑在国内侧另建备用出口或使用多个VPS做负载均衡与故障切换(keepalived 或 VRRP)。
12.
合规与运营注意事项
- 合规性:跨境流量涉及法规,请确认业务和数据传输符合中国及日本的网络安全法规。
- 日志保留:根据业务合规要求保存访问日志与审计记录。
13.
问:为什么选择CN2链路的日本VPS对国内访问更好?
- 答:CN2是中国电信的优质骨干线路,对进出中国的国际链路有专门优化,通常丢包更低、时延更稳定,适合需要稳定跨境访问的场景。但并非所有地区都有明显改进,仍需实测。
14.
问:WireGuard与OpenVPN在该场景的主要区别是什么?
- 答:WireGuard更轻量、握手速度快、吞吐与延迟表现更好;配置文件简单且占用内核态执行,适合高性能需求。OpenVPN兼容性强(TCP/SSL隧道更难封堵),但性能略逊且配置复杂。选择时考虑可被封堵概率、设备兼容性与性能需求。
15.
问:部署后遇到高丢包或不稳定我应如何排查?
- 答:步骤:1) 在两端用 mtr 检查路径丢包点;2) 用 iperf3 复测带宽与抖动;3) 检查MTU/调整MSS;4) 查看WireGuard握手频率(wg show);5) 若问题在传输链路(运营商)则联系VPS提供商或更换节点;同时检查服务器CPU/IO是否成为瓶颈。
来源:vps日本 cn2 与国内节点互联的网络配置与安全建议