WireGuard+FRP回家教程 - 搞七捻三 - LINUX DO

家宽无公网IP也可以出门在外畅联家中网络
第一步:
在VPS上部署服务端FRPS,docker-compose.yaml内容参考如下
services:
frps:
restart: always
network_mode: host
volumes:
- './frps.toml:/etc/frp/frps.toml'
container_name: frps
image: snowdreamtech/frps
environment:
TZ: Asia/Shanghaifrps.toml文件填写如下
[common]
#frp 监听端口,与客户端绑定端口
bind_port= 5443
kcp_bind_port = 5443
#dashboard用户名
dashboard_user= vector
#dashboard密码
dashboard_pwd= password
#dashboard端口,启动成功后可通过浏览器访问如http://ip:9527
dashboard_port= 9527
#设置客户端token,对应客户端有页需要配置一定要记住,如果客户端不填写你连不上服务端
token = xxxxxxxxxx在vps上开放端口
iptables -I INPUT -p udp --dport 51820 -j ACCEPT
iptables -I INPUT -p tcp --dport 51821 -j ACCEPT第二步:
在家里NAS部署客户端FRPC,docker-compose.yaml内容参考如下
services:
frpc:
restart: always
network_mode: host
volumes:
- './frpc.toml:/etc/frp/frpc.toml'
container_name: frpc
image: snowdreamtech/frpc
environment:
TZ: Asia/Shanghaifrpc.toml文件参考如下:
[common]
server_addr = vps的ip
server_port = 5443
token = xxxxxxxxxx
# 代理1: 穿透 WireGuard 的 UDP 数据端口
[wg-data]
type = udp
local_ip = 127.0.0.1
local_port = 51820
remote_port = 51820
# 代理2: 穿透 wg-easy 的 TCP Web UI 端口
[wg-ui]
type = tcp
local_ip = 127.0.0.1
local_port = 51821
remote_port = 51821第三步:
在家中NAS部署WireGuard,以wg-easy为例
volumes:
etc_wireguard: # 持久化存储 WireGuard 配置
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest # 使用 latest 或指定稳定版本,如 :14
container_name: wg-easy
environment:
# --- 核心配置 ---
# !!!重要:这里填写你的 frp 公网服务器的 IP 地址 !!!
# 这是客户端配置文件中 Endpoint 的地址
- WG_HOST=vps的ip
# !!!重要:wg-easy Web UI 的管理员密码哈希 !!!
# 强烈建议修改默认密码 'foobar123'
# 可以使用 `docker run --rm ghcr.io/wg-easy/wg-easy:latest --pw your_strong_password` 生成哈希
# 或者使用在线 bcrypt 生成器 (注意 rounds=5, 示例为 'foobar123' 的哈希)
# - PASSWORD_HASH=$2y$05$6n2x0AdkZ5lJ8kHufbXrr.dU.UHMBh04HKYXoPb0w484wN75877Eu # (需要双 $$ 符号)
# --- 网络配置 ---
# WireGuard 服务监听的 UDP 端口 (容器内)
- WG_PORT=51820
# wg-easy Web UI 监听的 TCP 端口 (容器内)
- PORT=51821
# VPN 客户端分配的 IP 地址范围 (选择一个未使用的私有网段)
- WG_DEFAULT_ADDRESS=10.8.0.x # 客户端将获取 10.8.0.2, 10.8.0.3 ...
# 客户端使用的 DNS 服务器 (可使用公共 DNS 或内网 DNS)
- WG_DEFAULT_DNS=114.114.114.114, 8.8.8.8
# !!!重要:客户端允许访问的 IP 范围 !!!
# 决定了哪些流量会通过 VPN 隧道
# 10.8.0.0/24: 允许客户端之间互相访问 (如果需要)
# 192.168.125.0/24: 允许客户端访问 test 服务器所在的局域网
- WG_ALLOWED_IPS=10.8.0.0/24, 192.168.125.0/24
# --- 可选配置 ---
# 保持连接,防止 NAT 超时断开 (单位: 秒)
- WG_PERSISTENT_KEEPALIVE=25
# Web UI 语言 (支持 en, chs 등)
- LANG=chs
# 启用/禁用 Web UI 中的流量统计图表 (true/false)
# - UI_TRAFFIC_STATS=true
# 在 Web UI 中允许通过 HTTP 访问,如果前面没有反向代理做HTTPS,则需要设置为 true
# 生产环境强烈建议配合反向代理使用 HTTPS
# - INSECURE=true
volumes:
# 将 WireGuard 配置持久化到宿主机
- etc_wireguard:/etc/wireguard
ports:
# 将宿主机的端口映射到容器端口
# 格式: "宿主机端口:容器端口/协议"
- "51820:51820/udp" # WireGuard 数据端口 (与 WG_PORT 一致)
- "51821:51821/tcp" # wg-easy Web UI 端口 (与 PORT 一致)
restart: unless-stopped
cap_add:
# 赋予容器必要的网络管理权限
- NET_ADMIN
- SYS_MODULE
sysctls:
# 启用 IP 转发,允许 VPN 客户端通过此服务器访问其他网络
- net.ipv4.ip_forward=1
# 确保 WireGuard 的网络标记正常工作
- net.ipv4.conf.all.src_valid_mark=1
# - net.ipv6.conf.all.forwarding=1 # 如果需要 IPv6 支持,取消注释第四步:
那么在外面回家时可以使用WireGuard客户端进行连接,下面以loon为例:
首先在wireguard的web界面创建配置文件,比如ios-loon
loon→仪表→节点→右上角+→本地节点→扫一扫,扫面web界面的二维码即可添加,别名比如:HomeWG
在loon配置文件中[Proxy Group]位置增加下面内容
回家 = ssid,defaul=HomeWG,cellular=HomeWG,”家里的wifi名称”=DIRECTwg-easy得docker-compose.yaml文件中增加环境变量PASSWORD_HASH,在NAS终端运行
docker run [ghcr.io/wg-easy/wg-easy:14](http://ghcr.io/wg-easy/wg-easy:14) node -e 'const bcrypt = require("bcryptjs"); const hash = bcrypt.hashSync("YOUR_PASSWORD", 10); console.log(hash.replace(/\$/g, "$$$$"));'YOUR_PASSWORD 替换为自己想要设置的密码,拷贝输出结果并将其添加到 PASSWORD_HASH 环境变量中。
感谢大佬, 我刚放弃了 wireguard的方案,之前调通了, 后面换VPS 好像又被阻断了, 具体运营商会不会阻断, 不确定, 后面又尝试 加一层 udp2raw 转来转去 没搞成功.
最近换了 openvpn 方案.
室外 android → VPS frp 转发 udp → 室内 immortalWRT路由器 (openVPN server)
没有 nas
国内没应用起来的原因是 wireguard 特征明显 被宽带商Q
不过确实配置简单好用…
WireGuard 套 VLESS XTLS Reality 就行了
如果没有组网需求,可以直接用 VLESS XTLS Reality
我们已经有一段时间没有看到 lance 了 — 他/她上次发帖是 10 个月前。
感谢分享
唔其实 frp不管是客户端还是服务端的dashboard其实都有点食之无味弃之可惜 唯一能干的事情似乎只是看连接状态的简单统计 frpc还多一个(其实也没什么用的)编辑配置文件的工具 仅此而已了) 所以我平时都懒得配置面板)
可以尝试一下headscale或者netbird,感觉方案要简单许多,网络带宽不会受限VPS带宽
直接frpc ssh 不香吗 如果需要家里的网路 v2 起码不会被封端口
对,lz是因为家宽无公网IP,所以采用的frp. 有公网IP的话直接开端口就好,省内相同ISP的话问题不大。 但是移动端的tun模式性能不高
我现在有一个问题,咱这边群租房也是没有公网的是,但是有一些应用程序的传输协议是需要公网的比方说 bittorrent 需要公网进行p2p连接来提高下载速度 这样的话我需要怎么做呢
这会儿到底属于什么样的网络知识需要怎么学习?有没有什么相关的教材和课程可以推荐的。
路由和交换
wd 是点对点,如果是部署在 vps 上,那么只能手机跟 vps 连,为了手机回家,所以 wd 部署在家里
那我要去学习这个知识的话,是不是需要找一台openwrt虚拟机,然后把这个虚拟机变成网关,再给这个虚拟网关建立一个虚拟机里的网络反复进行调试
ccna的内容,对应的华为也有,入门的话从tcpip开始简单了解下就好,实验的话OpenWrt还不行,但是可以用网络模拟器
vps没有公网ip吗还是啥意思。我是阿里云部署的wg-easy,其他地方都装wg客户端,只是不能点对点只能中继
具体如何中继,分享下,目前 wg 配合 frp 能够同时挂着代理软件实现无感回家
家里翻墙,手机也翻墙,相当于 vps ip 走的代理 一般的甲骨文 vps 体验还算可以,就是怕运营商阻断
感谢佬的分享,请教下有没有对比过zerotier和wireguard哪个更好些呢?
wg是点对点,zerotier是安装app都可以互连,看使用场景
和直接用frp的效果有啥区别吗,德国nc机器太远了是不是没法搞
全平台,开源。可以用这个代替 WireGuard+FRP,也可以用easytier + WireGuard
访问速度和稳定性方面有区别吗?目前用zt感觉还可以,正犹豫要不要也试下wg
我们已经有一段时间没有看到 Soso 了 — 他/她上次发帖是 6 个月前。
wireguard 用一段时间就会被封端口,很烦。