同一个小区内(一个在 A 楼,一个在 B 楼),同一个运营商(联通)。
两个地方都是用 OpenWrt ,开了 fullcon nat (测试发现其实是 Port-Restricted Cone NAT )。
使用 tailscale 连接组网,测试发现经常会直连失败,而去走 derp ,尤其是晚高峰时候。
不清楚是 tailscale 自己程序的问题还是运营商的限制。
tailscale 是暴力遍历端口(它们官网有教程),实践下来还是能够打洞成功的。
但真正使用的时候就打洞失败,可用性差。
所以想问下,tailscale 是否支持手动配置端口转发(已有公网 ip )?
不想一直在 op 后台开一个端口,这样风险太大了(吃过这样的亏)。
我的想法是,打洞失败,既然能连接 derp 服务器,那就能控制另一端,搞个脚本,让另一台设备主动请求 OpenWrt ( upnp/nat-pmp)开放一个临时端口。然后 tailscale 是否支持这样搞?
![]() |
1
worker201 3 天前
你的头像很吊
|
![]() |
2
Tink PRO 可以考虑把 ts 所在设备的 41641/udp 映射出去试一下
|
![]() |
3
ixixi 3 天前
用一下蒲公英试试 可以提单子问问他们技术支持
|
4
litpel 3 天前
你的头像很吊 和我衣服的 logo 很像
|
![]() |
6
seenthewind 3 天前
没用过 tailscale ,对打洞只有一点浅薄的理解。
理论上稳定的网络打洞不可行,因为临时的打洞实际上是由于各层网络设备的“后门策略”使得可以出现打洞的现象。 至于网络设备有多少后门策略,哪些可用,就要看各种实际情况了(有兴趣可以看看 root 后的小米路由器配的 iptables ),比如,万一后门的正主正在用咋办? 开放临时端口的办法可能可以,但是还是太麻烦了。 我目前的方法就非常简单,首先是普通的主流网络设备做前端拨号,获得公网 ip 后,后端配置 wireguard ,在拨号的网络设备里,映射一个非常高的 udp 端口(用高段位来尽量减少 sb 扫描,用 udp 来进一步规避 sb 中的 sb )。 由于 wireguard 是 udp ,无论是处理性能还是对抗扫描等都还可以,另外做一个靠谱长度的 key ,可以保证在量子计算前不被攻破。 其他就没了,别整那些花里胡哨的,用得越多你留的面包屑就越多,框架的漏洞就越多。 |
7
huangsen365 3 天前 via Android ![]() 如果都支持公网 ipv6 将会很容易打洞成功,或者在国内挑个当地云服务器自建 derp
|
![]() |
8
totoro625 3 天前
Port-Restricted Cone NAT 是 NAT3
以下方式任选或组合使用: 1. 路由器拨号 2. 打电话要公网 IP 3. 尝试走 IPV6 4. 闲鱼买一个路由器管理员账户,把 tailscale 所在机器的 IP 设置为 DMZ |
9
lhsakudsgdsik 3 天前
是的,今年打洞成功率挺低的,就算 ipv6 打洞通了,ping 测试也会每五六个包延迟就高到一百多,还不如完全走搭建的中转服务器
|
12
lnbiuc 3 天前
不支持
怀疑是联通对 udp 包的限制 |
14
HandSonic 3 天前
我这同一个城市,同一个运营商中国电信,Tailscale IPv6 直通,丢包率都能到 20%,运营商限制 UDP 还是限制的太狠了,我用 OpenVPN 走 TCP 隧道就不丢包
|
15
kekylin 3 天前
我联通公网 IPv6 ,基本上和三大运营商连接都是直连,平时不怎么关注连接质量,刚刚测试了一下,还可以。
100.10.0.1 的 Ping 统计信息: 数据包: 已发送 = 100 ,已接收 = 100 ,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 12ms ,最长 = 87ms ,平均 = 18ms |
17
gogogo2000 3 天前
tailscale 会自动创建 upnp 端口映射的,所以
> 我的想法是,打洞失败,既然能连接 derp 服务器,那就能控制另一端,搞个脚本,让另一台设备主动请求 OpenWrt ( upnp/nat-pmp)开放一个临时端口。然后 tailscale 是否支持这样搞? 人家本来是这样的。 > tailscale 是暴力遍历端口(它们官网有教程),实践下来还是能够打洞成功的。 tailscale 是生日算法,并不是暴力遍历 https://tailscale.com/blog/how-nat-traversal-works "But we can get rid of STUN, the birthday paradox trick, port mapping protocols, and all the hairpinning bumf. That’s much nicer!" |
18
gogogo2000 3 天前
Here’s a parting “TL;DR” recap: For robust NAT traversal, you need the following ingredients:
A UDP-based protocol to augment Direct access to a socket in your program A communication side channel with your peers A couple of STUN servers A network of fallback relays (optional, but highly recommended) Then, you need to: Enumerate all the ip:ports for your socket on your directly connected interfaces Query STUN servers to discover WAN ip:ports and the “difficulty” of your NAT, if any Try using the port mapping protocols to find more WAN ip:ports Check for NAT64 and discover a WAN ip:port through that as well, if applicable Exchange all those ip:ports with your peer through your side channel, along with some cryptographic keys to secure everything. Begin communicating with your peer through fallback relays (optional, for quick connection establishment) Probe all of your peer’s ip:ports for connectivity and if necessary/desired, also execute birthday attacks to get through harder NATs As you discover connectivity paths that are better than the one you’re currently using, transparently upgrade away from the previous paths. If the active path stops working, downgrade as needed to maintain connectivity. Make sure everything is encrypted and authenticated end-to-end. |
![]() |
19
guanzhangzhang 3 天前
主路由开 upnp 试试,自建 derp 试试
|
20
lovelylain 3 天前 via Android
你到底是有公网 ip 不想常开端口,还是没有公网 ip
|
![]() |
21
webcape233 3 天前 via iPhone
ip6 很容易成功
|
![]() |
22
Z1on 3 天前 via Android
同一小区要不试试 tr069 组网呢
|
![]() |
23
Markxu0 3 天前 via Android
zerotier 效果确实好一些,试试 zerotier
|
![]() |
24
nxuu 3 天前
试试 gl.inet 的路由器 默认固件自带 tailscale 一直用着都没问题.
|
25
RobinHuuu 3 天前 via iPhone
tailsacle 支持自定义端口,不过是需要在服务运行命令行中加--port 参数。从你的描述看是一个网内多点,不改 port 是无法直连的,这也是难打洞的原因之一。
或者一个网一个 tailcale ,然后做好路由,你都是 openwrt ,这些都好办。 |
![]() |
26
NightFlame 3 天前
@Markxu0 不都是打洞吗,为什么 z 会好点?
|
27
yiranw09 3 天前
感觉如果只是用作远程桌面的话,没有必要用 tailscale ,不稳定,延迟也不一定低
不如 frp 稳定开个隧道,远程桌面即便是 10M 的小水管也很流畅了 |
![]() |
28
Niphor 3 天前
都 NAT3 了,老老实实中转吧
|
29
aMR 3 天前
两边都是用 OpenWrt 拨号的?还有你 IPv6 呢
|
30
lxnelly 3 天前
我跟你一样同小区,开了 ipv6 很轻松。ipv4 一样不行
|
31
ccloving 3 天前
同一个小区内(一个在 A 楼,一个在 B 楼),同一个运营商(联通)。-----这种情况用无线网桥串起来不是更稳定嘛。
|
32
565656 3 天前
我已经放弃 tailscale 了 如果需要自建 derp 不如直接 frp 了
|
![]() |
33
yankebupt 3 天前
公网 i 现在收钱了,每月100,太贵了,没买
ipv6 给的地址好像能用 |
![]() |
35
Chihaya0824 PRO 嗯? 看了半天竟然没人提端口复用问题吗
41641 这个口被别人占用了那可能会打洞失败,所以 ACL 里加入 randomizeClientPort 随机化端口试试 https://tailscale.com/kb/1018/acls/ /t/851441 #17 |
![]() |
36
FaiChou OP @Chihaya0824
![]() 这个 1025 端口是随机化端口么?刚才一开始打洞不成功,过了一会打洞成功才有这个 1025 端口。但另一个设备 op3,还是一直没有打洞成功。另外 z4pro 这个设备用默认的 41641 端口。 |
![]() |
37
FaiChou OP @Chihaya0824
感觉开启 randomizeClientPort 不是个好选择: > The randomizeClientPort field (if set to true) makes devices prefer a random port for WireGuard traffic over the default static port 41641. You should only use the randomizeClientPort field as a workaround for some buggy firewall devices after consulting with Tailscale (support). 因为有 nat 的情况下都会给内网设备做端口映射,每个内网设备都是用 41641 端口,但 nat 对应的外网端口就不一样了,比如我上面的: m2mini:41641 → 公网:1025 z4pro:41641 → 公网:41641 |
![]() |
38
Chihaya0824 PRO @FaiChou 试试改下 acl 呗,看这里 https://tailscale.com/kb/1337/policy-syntax#randomizeclientport
因为我没用这个选项所以不知道表现是什么样的 但是不太懂为什么会用 1025 口,这好像不是一个 tailscale 会用的口,如果一直是 41641 我觉得应该就没开随机 |
![]() |
39
Chihaya0824 PRO @FaiChou emmm ,不好意思才发现原来有公网 ip ,那不应该啊?难道是 nat4444?
如果 41641 放行了那应该没问题啊 你的 netcheck 是显示的是你的 wan 的 ip 吗? |
![]() |
40
Ansen 3 天前
一样的问题, 同城电信网络, 两边都有公网 IP , 还是经常走 relay , 慢得要死
我还 自建 derp , 一样不行 我在想要不要上 phantun |
![]() |
41
FaiChou OP @Chihaya0824 #39
Report: * Time: 2025-07-28T07:59:44.6168Z * UDP: true * IPv4: yes, 我的公网 ip:52275 * IPv6: no, but OS has support * MappingVariesByDestIP: false * PortMapping: * CaptivePortal: false |
![]() |
43
hobairiku 3 天前
我这里经常被限制 1M 的 UDP 网速,我有两个自建的 derp ,客户端显示在线,而且一方可以 ping 通,都显示在线,但是另一方就 ping 不通,换个时间或者其他网络环境的机器又可以,限速是近几个月开始的,而这种无法连接的情况是很近一段时间开始出现,怀疑是运营商问题了。
|
![]() |
44
echo1937 3 天前
我自建的 derp,速度还挺好啊
|
![]() |
45
FaiChou OP @gogogo2000 #17 是的,生日悖论,但还是要遍历很多端口。
|
46
unbridle 3 天前
有 ipv6 这些都不是问题
|
47
aMR 3 天前
@FaiChou 自己拨号还只能测出 NAT3 就奇怪了,要么 full cone nat 没弄好,要么运营商限制了,想折腾的话可以把 tailscale 直接装 openwrt 上或者用电脑拨号测一下能不能通,不想折腾就直接 IPv6 吧
|
![]() |
48
FaiChou OP |
![]() |
50
crackid 3 天前
我刚好相反,很容易直连,一直连网络就巨拉胯近乎不能用,所以每次直连我都去重启一下拨号然后让他走自建的 derp... 要不是能多设备组网,我都想要换回 frp 了
|
![]() |
51
masenjooham 3 天前
同一小区,首选给宽带运维赛两条烟。皮线直连如何? 不光不用打洞,宽带都省一条。。。。
备选:试试 tr069 组网呢 |
52
huangsen365 3 天前
@crackid 你这个很好解决,就是所有设备都尽量层 nat 网络 然后就必然走 derp 了
|
53
huangsen365 3 天前
@FaiChou 其实自建 derp 是最佳的做法
|
55
v2er119 3 天前
应该是设置问题 ,现在 TS 功能太多了,反而更容易误操作了。不同城市不同运营商一个 derp ,稳定运行好多年,现在装系统第一件事装 ssh server 和 ts 。
同一个小区内的,应该有共同上级路由,比如 tracer 出来是 x.x.x.x ,理论上在对方网络互相添加一个本段网络的 router: addr: 192.168.1.0, mask: 255.255.255.0, gate: x.x.x.x ,都可以直接 ping 通的吧。 |
56
yuantinghg 3 天前 via Android
插个嘴。
360t7 op 装 ts ,内存和 cpu 占用很高,有没有解决方案? 我现在把从 op 上 ts 卸载了,然后 fnos 安装 ts 。 |
57
Csheng 3 天前
试试 https://netbird.io/ ,tailscale 自建搞起来比这玩意还麻烦
目前我用它自建,所有 peer 都连自建,还是挺稳定的 P2P 连通,再不济都能转发。 |
![]() |
58
Heroininu 3 天前
今年运营商改革的背景下,打洞成功反而是坏事,稳定性堪忧,UDP 阻断严重。10 个包丢 1 个。我特意改成用中转,稳定多了。
|
60
bytesfold 3 天前 via iPhone
用的 derp ,腾讯云 200M ,还算好用
|
![]() |
61
Cheons 3 天前 via Android
|
![]() |
62
thereone 3 天前
有 ipv6 用 softether 直连不就行了也不用打洞,udp tcp 都可以选择使用的。二层三层互通也没有任何问题。
|
63
aarontian 2 天前
不懂原理。。但我家里电脑连华硕梅林,打洞成功率基本为 0 ,绕过路由器直接连联通的光猫,就稳成功了。
|
![]() |
64
kylo1989 2 天前
大概率是运营商 NAT 太狠了,或者防火墙抽风。实在不行就中转呗,虽然慢点。
|
65
badgv 2 天前 via Android
@Csheng nerbird 自建管理平台比 tailscale 的 headscale 麻烦多了,都用 docker ,nerbird 要跑一堆容器,headscale 一个就足够
|
![]() |
66
Ananaskop 2 天前
如果有公网 ip 可以通过 ss 进行
|
![]() |
67
lonccc 2 天前
我的办法是,家里宽带和手机流量都是电信,都有打开 ipv6 ,外出电脑连手机热点,tailscale 能稳定直连,速度够看 1080p 视频。而且不限地域,在外省也是一样的。办宽带送的流量 60g 每月完全够用了。
|
69
Csheng 2 天前
@badgv 容器确实多了,看起来比较臃肿,但效果确实好啊。。。也可能是我没用好 tailscale ,浅尝辄止
当时的场景是 wrt 旁路上装 sing-box tun + tailscale/netbird 测试,可能是没配置好 sing-box 导致的经常 relay 也说不定, 折腾到现在能稳定 netbird p2p ,估计再换回 tailscale 也许很顺利,不一定了,有时间再折腾过。。 |
70
Huelse 2 天前
两边都是桥接的宽带成功率高
|
![]() |
71
memcache 2 天前
https://arthurchiao.art/blog/how-nat-traversal-works-zh/#11-%E8%83%8C%E6%99%AFipv4-%E5%9C%B0%E5%9D%80%E7%9F%AD%E7%BC%BA%E5%BC%95%E5%85%A5-nat
|
![]() |
73
gunner168 2 天前 via iPhone
之前用的自建 derp 搭配 stun 打洞,ip4 环境下走 derp 也基本等于直连,最近不知怎么了一直无法连接到 derp 服务器,已经放弃了,改用 wireguard 搭 stun ,唯一的麻烦是每次端口变动需要手动填一次,但是速度快延迟低
|
![]() |
74
wm5d8b 2 天前 via Android
运营商的问题,我试过同一个城市使用 ipv6 ,电信、联通、移动 5G 访问电信家宽和移动家宽都能直连,联通家宽就不行
|