
1 shmilyin Dec 28, 2021 挺好的,有没有详细点的教程? |
2 Saimen Dec 28, 2021 via Android cool ,之前用过 natpunch-go ,有空试一下这个 |
3 xiejieyin Dec 28, 2021 via Android 记录一下 以备不时之需 |
4 redhujiao Dec 28, 2021 这是什么原理 不是直接转发的吗, 我用花生壳很慢很慢 |
8 duqich Dec 29, 2021 wireguard 还是 openvpn 好一点呢呢?现在在用 openvpn 感觉好重,想试试 wireguard |
10 yinheli OP @shmilyin 可能极少数不行,但是借助中间服务器发现应该绝大部分都没问题,我自己测试的几个网络环境都行,包括 联通 5G 的的上网卡、手机热点共享,多层 NAT (光猫->路由器 1->路由器 2 ) |
11 xiejc Dec 29, 2021 请教一下,server 端没有公网行不行,如果是借助被人的 tcp 端口暴漏的行不行,比方说 frp/ngrok |
12 Tyanboot PRO 自己做这个还不如直接用 tailscale ,反正都是 wireguard 。 |
13 mayli Dec 30, 2021 via Android 不错的 解决了好多小白的 nat 穿透问题 不过小白一般只会点点点…不会命令行… |
14 yinheli OP @xiejc 不行,需要借助一个公网的服务器,毕竟发现协议是自定义的,带宽需求极低,只发几个包知道对端的出口 IP 和端口号才行,如果是持续运行的话,就是每隔 25 秒发一次包,每次几十个字节 |
15 shineit Dec 31, 2021 wireguard 移动端可以? |
17 leiclye Jan 1, 2022 老哥, Win 环境是要先安装 Go 么 ? 看里面写着(This program cannot be run in DOS mode) |
19 yinheli OP @leiclye 刚借了台电脑测试了下,是可以的,下载文件后要补充一下后缀,添加 '.exe' 然后管理员运行 powershell 有个坑点要留意:如果你是用手机热点共享测试连 PC 和你家的网络( NAS),可能不行。当然你家宽带和手机如果是不同的运营商可能可以,我家联通宽带,因为和手机套餐是一起的,我发现它们连出口 IP 都是一样。 最好是两端的网络是在两个不同的 NAT ,并且中间一定要经过公网环境。 祝你成功! |
20 2i2Re2PLMaDnghL Jan 3, 2022 @xiejc 借助别人的话你需要暴露 UDP 端口 |
21 bao3 Jan 3, 2022 如果需求不高,可以使用 tailscale 。 |
23 leiclye Jan 4, 2022 # ./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 Jan 4, 2022 服务器上的 WG 的端口是用的 51888. 打洞程序在服务器运行的时候也是需要用 51888, 还是需要另外换一个 port ? |
25 leiclye Jan 4, 2022 如果换另外一个端口, CLI 敲下后没有任何输出内容. |
26 yinheli OP @leiclye server 端和 wg 没有关系,它只是相当于一个注册表,用来交换 client 端的地址信息,类似 stun 的协议,就是多了个能获取其他客户端的公网出口信息的功能,打洞是为了让节点之前能直接通讯,流量不过中间的 server https://s4.ax1x.com/2022/01/04/TLVxKA.png |
27 stephCurry Jan 4, 2022 via iPhone 安卓 ios 这些移动端后续会支持吗 |
28 stephCurry Jan 4, 2022 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 Jan 7, 2022 老哥,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 Jan 7, 2022 噢,谢谢了,不过我想要的是 你的服务的工作流程,因为 wg 我是搭好了的。 机器的 IP 转发,以及 iptables 的 SNAT/DNAT 是只需要 server 设置吧,两个客户端不需要特别的设置吧?@yinheli |
33 461da73c Jan 9, 2022 via Android 都有公网 ip 了,为啥要这么折腾,两个内网连到公网的 wg 就可以了。 |
34 yinheli OP @461da73c 如果你有公网 IP 或者你的公网服务器带宽非常大,并且没有额外费用,确实是没有打洞需求,这种打洞需求一般是两边都是没有固定 IP 的如家宽,还期望没有额外的带宽成本 |
35 linyichang Sep 4, 2022 如何知道是否打洞成功了呢? |
36 yinheli OP @linyichang 参与的 wg 节点能通讯就可以了,这只是辅助工具,利用 wg 的 listen 端口向外发了空负载的包 |
37 ixinshang Dec 12, 2022 我对于 p2p 设置看懵了。 机器在欧洲,两台机器 ping 。 还是有快 600ms 了。 op 能指个道不? |