tailscale 如何提高打洞成功率?

2024-01-17 15:25:51 +08:00
 zwyyy456

之前听说 tailscale 打洞只要有一端有公网 ipv6 地址,打洞就基本能成功,但是我实际试下来却发现不是这么回事。

家里的 nas 是有公网 ipv6 地址的,系统为 debian ,上面运行了 tailscale ;我在单位的 mac 上也运行了 tailscale ,尝试 ping tailscale 给出的 nas 的 ip 地址,发现延迟基本稳定在 500ms 左右,显然是打洞没有成功。

我应该如何设置,才能提高 tailscale 的打洞成功率呢?

9812 次点击
所在节点    宽带症候群
44 条回复
onyourhead
6 天前
@tsvico 我也是偶然试出来这样可以的,家里 nas 有 ipv6 地址,主动发起连接到手机,然后手机就可以直联了。楼主怎么搞的 webhook ,我也整一个
tsvico
6 天前
@onyourhead #41 通过 frp 也好,或者 cf tunnel ,把 webhook 服务暴露出去,webhook 服务部署在 NAS 上,docker compose 如下

```
services:
webhook:
image: thecatlady/webhook
container_name: webhook
command: -verbose -hooks=/config/hooks.yaml -hotreload
# 参考 https://segmentfault.com/a/1190000042002239 ,docker 访问宿主机命令
pid: host
privileged: true
environment:
- TZ=Asia/Shanghai
- UID=1000
- GID=1000
mem_limit: 200m
memswap_limit: -1
volumes:
- ./data/config:/config:ro
# ports:
# - 8606:9000
restart: always
```
上边提到的 hooks.yaml
```
- id: ping
execute-command: "/config/run/ping.sh"
command-working-directory: "/config/run"
include-command-output-in-response: true
include-command-output-in-response-on-error: true
pass-arguments-to-command:
- source: string
name: '100.64.0.1' # 这里是要 ping 的 ip
comment: ip
```
/config/run/ping.sh
```sh

#!/usr/bin/env sh

# variables
IP=${1}

if [ "$IP" = "" ];then
IP="100.64.0.1"
fi

PURE_IP=`echo ${IP}|grep -Eo '([0-9]+[.]){3}[0-9]+'|grep -v "255"`


echo "当前请求 IP 是: ${PURE_IP}"

#nsenter -m -u -i -n -p -t 1 sh -c "tailscale netcheck"

nsenter -m -u -i -n -p -t 1 sh -c "tailscale ping ${PURE_IP}"

exit 0
```
onyourhead
6 天前
@tsvico 我昨晚研究了下,用的也是开源的 webhook ,你是怎么发起 webhook 请求呢,curl 命令吗,我是手机连 nas ,是不是要下载一个可以发 http 请求的 APP
tsvico
6 天前
@onyourhead #43 可以网页直接访问

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1009378

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX