![]() |
1
shmilyin 139 天前 ![]() 挺好的,有没有详细点的教程?
|
2
Saimen 139 天前 via Android
cool ,之前用过 natpunch-go ,有空试一下这个
|
![]() |
3
xiejieyin 139 天前 via Android
记录一下 以备不时之需
|
![]() |
4
redhujiao 139 天前
这是什么原理 不是直接转发的吗,
我用花生壳很慢很慢 |
8
duqich 138 天前
wireguard 还是 openvpn 好一点呢呢?现在在用 openvpn 感觉好重,想试试 wireguard
|
10
yinheli OP @shmilyin 可能极少数不行,但是借助中间服务器发现应该绝大部分都没问题,我自己测试的几个网络环境都行,包括 联通 5G 的的上网卡、手机热点共享,多层 NAT (光猫->路由器 1->路由器 2 )
|
11
xiejc 138 天前
请教一下,server 端没有公网行不行,如果是借助被人的 tcp 端口暴漏的行不行,比方说 frp/ngrok
|
![]() |
12
Tyanboot 138 天前
自己做这个还不如直接用 tailscale ,反正都是 wireguard 。
|
13
mayli 138 天前 via Android
不错的 解决了好多小白的 nat 穿透问题 不过小白一般只会点点点…不会命令行…
|
14
yinheli OP @xiejc 不行,需要借助一个公网的服务器,毕竟发现协议是自定义的,带宽需求极低,只发几个包知道对端的出口 IP 和端口号才行,如果是持续运行的话,就是每隔 25 秒发一次包,每次几十个字节
|
15
shineit 137 天前
wireguard 移动端可以?
|
![]() |
17
leiclye 135 天前
老哥, Win 环境是要先安装 Go 么 ? 看里面写着(This program cannot be run in DOS mode)
|
19
yinheli OP @leiclye 刚借了台电脑测试了下,是可以的,下载文件后要补充一下后缀,添加 '.exe' 然后管理员运行 powershell
有个坑点要留意:如果你是用手机热点共享测试连 PC 和你家的网络( NAS),可能不行。当然你家宽带和手机如果是不同的运营商可能可以,我家联通宽带,因为和手机套餐是一起的,我发现它们连出口 IP 都是一样。 最好是两端的网络是在两个不同的 NAT ,并且中间一定要经过公网环境。 祝你成功! |
20
2i2Re2PLMaDnghL 133 天前
@xiejc 借助别人的话你需要暴露 UDP 端口
|
![]() |
21
bao3 133 天前
如果需求不高,可以使用 tailscale 。
|
![]() |
23
leiclye 132 天前
# ./punch-server-linux-amd64 -port 51888
2022/01/04 14:09:20 listen udp 0.0.0.0:51888: bind: address already in use |
![]() |
24
leiclye 132 天前
服务器上的 WG 的端口是用的 51888. 打洞程序在服务器运行的时候也是需要用 51888, 还是需要另外换一个 port ?
|
![]() |
25
leiclye 132 天前
如果换另外一个端口, CLI 敲下后没有任何输出内容.
|
26
yinheli OP @leiclye server 端和 wg 没有关系,它只是相当于一个注册表,用来交换 client 端的地址信息,类似 stun 的协议,就是多了个能获取其他客户端的公网出口信息的功能,打洞是为了让节点之前能直接通讯,流量不过中间的 server
https://s4.ax1x.com/2022/01/04/TLVxKA.png |
27
stephCurry 132 天前 via iPhone
安卓 ios 这些移动端后续会支持吗
|
28
stephCurry 132 天前 via iPhone
另外,peer 端的 endpoint 是否也要改为 vps 的 ip 和打洞的端口?
|
29
yinheli OP @stephCurry 那我比较建议你用 nebula ,它本身有 app 端
> peer 端的 endpoint 是否也要改为 vps 的 ip 和打洞的端口? 不用,参与到打洞的 peer 的 endpoint 是从 server 端拿到的,这个打洞工具的 client 端拿到后会设置 https://github.com/yinheli/udppunch/blob/v0.1.0/client/client.go#L98 |
![]() |
30
wspsxing 129 天前
老哥,client 静默退出是因为打洞成功了吗?
transfer: 0 B received, 9.83 KiB sent 然后这样连不上是说明 洞实际并没有打通吗 能简单的说下流程吗 |
31
yinheli OP @wspsxing 要在两边都运行 client ,连同一个 server
假设你有 2 个设备( A ,B ),分别在两个 nat 后面,它们没有独立公网 IP ,但是都能访问互联网,(比如你办公室的 PC & 家里的 NAS) 1. 随便找个有固定公网 IP 的机器,把 server 端跑起来,记得防火墙放行对应的 UDP 端口 2. 配置 wg ( A, B 都要配置) # A 设备 : wg0.conf [Interface] Address = 10.18.0.2/16 PrivateKey = A_private_key # B peer [Peer] PublicKey = B_public_key AllowedIPs = 10.18.0.0/16 # ----------- # B 设备: wg0.conf [Interface] Address = 10.18.0.3/16 PrivateKey = B_private_key # A peer [Peer] PublicKey = A_public_key AllowedIPs = 10.18.0.0/16 3. A 、B 都启动 wg & 启动客户端,稍等片刻,A 和 B 应该都被设置好了 endpoint ( wg show 看一下),然后他们应该能互通了 例如在 A 上 ping B: ping 10.18.0.3 注意事项: 记得开启机器的 IP 转发,以及 iptables 的 SNAT/DNAT # vi /etc/sysctl.conf # # apply config # sysctl -p net.ipv4.ip_forward = 1 # SNAT/DNAT iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE |
![]() |
32
wspsxing 129 天前
噢,谢谢了,不过我想要的是 你的服务的工作流程,因为 wg 我是搭好了的。 机器的 IP 转发,以及 iptables 的 SNAT/DNAT 是只需要 server 设置吧,两个客户端不需要特别的设置吧?@yinheli
|
33
461da73c 127 天前 via Android
都有公网 ip 了,为啥要这么折腾,两个内网连到公网的 wg 就可以了。
|