1) 目标:把位于马来西亚的海外服务器(拥有公网IP)与国内节点(如国内机房或家庭宽带网关)建立稳定、安全的互联通道,实现内外网互通与流量分流。
2) 场景:网站加速、反向代理、内网穿透、数据备份或跨国服务联通。本文按实操命令与配置文件给出可直接复制的步骤。
1) 权限:两端都需 root 或 sudo 权限;可编辑网络配置与防火墙规则。
2) 软件:建议系统为 Debian/Ubuntu/CentOS,安装 curl/wg/strongswan/openvpn/iptables 等(后面会给命令)。
3) 端口:确保两端公网IP的必要端口可达(例如 UDP 51820 用于 WireGuard,UDP 500/4500 用于 IPsec)。
1) 建议规划:马来西亚服务器(公网IP A)与国内节点建立隧道,隧道网段例如 10.200.200.0/24,分别分配 A: 10.200.200.1(马来)和 B:10.200.200.2(国内)。
2) 路由策略:在国内节点上为要转发的目标网段添加静态路由指向隧道,或使用策略路由根据源地址选择出站接口。
1) 启用转发:sysctl -w net.ipv4.ip_forward=1,并在 /etc/sysctl.conf 持久化 net.ipv4.ip_forward=1。
2) 安装工具(Debian/Ubuntu):apt update && apt install -y iptables iproute2 curl vim;(CentOS):yum install -y iptables iproute vim。
3) 设置防火墙策略(示例):iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o eth0 -j MASQUERADE(确保 eth0 为公网网卡)。
1) 如果国内有公网IP,直接对等建立隧道;若在内网,考虑使用 SSH 反向隧道或中继服务器。
2) 同样启用 IP 转发:sysctl -w net.ipv4.ip_forward=1。为避免冲突,确认本地路由表无重叠网段。
3) 安装相同的 VPN 软件(WireGuard/strongSwan/OpenVPN)以便兼容配置。
1) 安装(Debian/Ubuntu):apt install -y wireguard;生成密钥:wg genkey | tee priv.key | wg pubkey > pub.key。
2) 马来服务器 /etc/wireguard/wg0.conf 示例:
[Interface]
Address = 10.200.200.1/24
PrivateKey = (马来私钥)
ListenPort = 51820
[Peer]
PublicKey = (国内公钥)
AllowedIPs = 10.200.200.2/32, 国内内网需要走隧道的网段
3) 国内节点 wg0.conf 类似,互换地址与密钥。启动:wg-quick up wg0;持久化:systemctl enable wg-quick@wg0。
1) 安装(Debian/Ubuntu):apt install -y strongswan strongswan-pki。
2) 基本 /etc/ipsec.conf 示例:conn mg-site
left=%defaultroute leftid=@ma-server leftsubnet=10.200.200.1/32 leftfirewall=yes
right=%any rightid=@cn-node rightsubnet=10.200.200.2/32 auto=start
3) 使用预共享密钥 /etc/ipsec.secrets 添加:@ma-server : PSK "your_psk_here"。重启服务:systemctl restart strongswan。
1) 将内网或指定流量通过隧道出站(示例):iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o wg0 -j MASQUERADE。
2) 允许转发:iptables -A FORWARD -i wg0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT;iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT。
3) 保存规则(Debian):apt install -y iptables-persistent && netfilter-persistent save。
1) 基本连通性:从国内节点 ping 10.200.200.1;从马来 ping 10.200.200.2。
2) 路由验证:ip route show; 在源机器 traceroute 到目标,确认流量走隧道。
3) 持续监控:使用 mtr、smokeping 或 Prometheus node_exporter + Grafana 监控延迟/丢包,配置日志轮转与告警(例如 ping 丢包阈值触发邮件)。
1) MTU 调整:若出现分片或 TCP 慢,尝试将接口 MTU 设为 1420(WireGuard)或 1380(IPsec NAT-T)。命令:ip link set mtu 1420 dev wg0。
2) 加密负载:WireGuard 更轻量但需内核支持;IPsec 兼容性好但配置复杂。根据 CPU 与并发选择。
3) 合规与备案:若要提供面向国内的公网服务,注意中国大陆关于 ICP 备案与出口流量的合规要求。
1) 无法建立隧道:检查端口是否被运营商或防火墙拦截(使用 nc -u -z -v)。
2) 有通道但无法转发:确认 sysctl net.ipv4.ip_forward 是否启用,并检查 iptables FORWARD 链规则顺序。
3) 延迟/丢包高:检测 MTU、开启 keepalive、并排查中间链路丢包(traceroute/mtr)。
1) 若为多站点部署,建议在隧道上运行 iBGP 或使用路由守护进程(FRR/Quagga)实现路由发布。
2) 对等节点过多时可使用中心化中继(VPN Hub)或负载均衡器分流,注意单点冗余与备份策略。
答:降低延迟的主要方法有:选择延迟更优的云机房/运营商;使用 WireGuard 替代高开销加密协议;调整 MTU 避免分片;在国内部署缓存/反向代理(如 nginx、CDN)把静态内容放近用户;并在链路上启用 TCP 优化(如 BBR 拥塞控制)。
答:如果服务面向中国大陆用户并提供公网访问,通常需要进行 ICP 备案;数据跨境传输还需要关注个人信息保护与出口合规。内部企业间通信或备份一般无需备案,但建议咨询法律合规部门并确认运营商政策。
答:若追求性能与易用性,优先选择 WireGuard(更低延迟、配置简单)。若需要兼容性(与硬件 VPN 设备/厂商对接)或成熟的 NAT-T 支持,可选 IPsec(strongSwan)。两者可根据实际流量、CPU 资源及管理习惯混合使用。
