以下为您整理出的一套从零搭建、避开所有实测大坑(内网 IP 误识别、51820 默认端口被运营商拦截、ARM 机禁用 IPv6 报错、AllowedIPs 全局劫持、以及 GCP DNS 丢失)的完整直通操作手册。下次在新机器或重装系统时,直接按顺序复制执行即可跑通。
前置条件确认 在开始前,确保谷歌云(GCP)网页控制台的 VPC 防火墙已放行入站流量(至少允许 UDP 4433 端口和 TCP 10001 端口,或像你的 hk1027 规则一样允许全部入站协议)。
第一步:在 GCP 服务端安装并配置 WireGuard
开启 BBR 网络加速 在 GCP 终端执行以下命令开启 BBR 并加载内核参数:Bash
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf sudo sysctl -p验证: 执行
sysctl net.ipv4.tcp_congestion_control,输出bbr即为成功。
下载并运行 WireGuard 安装脚本ash
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
sudo ./wireguard-install.sh
填写安装向导参数(关键避坑点) 脚本运行后会依次提示输入参数,请严格按以下标准填写,未特别说明的项直接按回车保持默认:
IPv4 or IPv6 public address:必须手动改成 GCP 的外部公网 IP(如35.220.240.98),切勿使用脚本默认识别出的10.x.x.x内网 IP。Public interface:保持默认(通常为ens4),回车。WireGuard interface name:保持默认(wg0),回车。Server WireGuard IPv4:保持默认(10.66.66.1),回车。Server WireGuard IPv6:保持默认,回车。Server WireGuard port:手动输入4433后回车(避开默认的51820端口,防止被国内运营商直接丢包阻断)。First / Second DNS resolver:保持默认(1.1.1.1),回车。Allowed IPs list:保持默认,回车,再按任意键开始自动安装。Client name:输入arm并回车。Client WireGuard IPv4 / IPv6:一路回车保持默认(分配给 ARM 机的虚拟内网 IP 为10.66.66.2)。
提取客户端配置内容 安装完成后,在 GCP 终端打印生成的客户端配置文件,复制屏幕输出的全部内容备用:Bash
cat /root/wg0-client-arm.conf验证: 执行
sudo wg,确认 GCP 端显示listening port: 4433。
第二步:在家里的 ARM 机器(客户端)配置并拨号
开启 BBR 并安装客户端组件 连接到家里的 ARM 机器终端,开启 BBR 并安装 WireGuard 环境:
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo apt update && sudo apt install wireguard resolvconf -y
创建并精简客户端配置文件(核心避坑点) 新建配置文件:Bash
sudo nano /etc/wireguard/wg0.conf将刚才从 GCP 复制的配置粘贴进去,并必须完成以下 3 处修改(适配禁用 IPv6 的精简内核,并防止全局流量被劫持导致 ARM 机本地断网):
修改 Address:删掉逗号及后面的 IPv6 地址,仅保留 IPv4。
删除 DNS 行:直接删掉
DNS = 1.1.1.1,1.0.0.1整行(既然只做内网穿透,不需要改动本地 DNS)。修改 AllowedIPs:将
0.0.0.0/0,::/0改为10.66.66.0/24(仅让虚拟局域网流量走隧道)。
最终精简后的标准模板如下(替换为你实际的密钥):Ini, TOML
[Interface] PrivateKey = <保留你生成的客户端私钥> Address = 10.66.66.2/32 [Peer] PublicKey = <保留你生成的服务端公钥> PresharedKey = <保留你生成的预共享密钥> Endpoint = 35.220.240.98:4433 AllowedIPs = 10.66.66.0/24 PersistentKeepalive = 25(注:建议在末尾加上一行
PersistentKeepalive = 25,让处于家宽 NAT 后的 ARM 机每 25 秒主动向 GCP 发送一次心跳包,防止隧道闲置断开。) 按Ctrl+O回车保存,按Ctrl+X退出。启动隧道并设置开机自启Bash
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0验证: 在 ARM 机执行
ping 10.66.66.1 -c 4,看到0% packet loss且有毫秒延迟返回,说明跨国虚拟内网正式打通。
第三步:在 GCP 配置 10001 端口转发并永久保存
注入 iptables 端口映射与伪装规则 回到 GCP 终端,执行以下两条转发命令:Bash
# 将外部访问 GCP 10001 端口的 TCP 流量转发给 ARM 机 (10.66.66.2:10001) sudo iptables -t nat -A PREROUTING -p tcp --dport 10001 -j DNAT --to-destination 10.66.66.2:10001 # 将来源 IP 伪装成 GCP 的虚拟内网 IP,确保 ARM 机能顺着隧道原路返回网页数据 sudo iptables -t nat -A POSTROUTING -p tcp -d 10.66.66.2 --dport 10001 -j MASQUERADE验证: 用手机断开 WiFi,使用 5G 流量访问
[http://35.220.240.98:10001](http://35.220.240.98:10001),网页正常加载。修复 DNS 并安装规则固化工具 先修复 GCP 可能出现的 DNS 解析丢失问题,再安装持久化软件:Bash
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf sudo apt update && sudo apt install iptables-persistent -y(安装过程中弹出全屏提示框询问是否保存当前 IPv4/IPv6 规则时,直接按回车选择
<Yes>。)强制保存并验证Bash
sudo netfilter-persistent save sudo cat /etc/iptables/rules.v4 | grep 10001验证: 终端打印出刚才配置的
DNAT和MASQUERADE两条10001规则,即代表永久固化完成,重启服务器也不会失效。
评论