• 通过连接令牌完成带外建链,快速建立基于 WireGuard 的端到端加密连接,适合临时共享、远程调试和服务暴露
• 同时提供 CLI、Go 库和浏览器 WebAssembly 形态,支持文件传输、文本收发、TCP 端口转发、SOCKS 代理和 SSH
• 自动使用 DERP 中继完成初始连接,并在网络条件合适时升级为直连 P2P,也支持自建 DERP 与自定义 DERP Map
https://github.com/tailscale/tailcat
- ❤️6
/usr/local/bin/cloudflared versionsystemctl status cloudflared/etc/systemd/system/cloudflared.service--no-autoupdate 参数systemctl daemon-reload; systemctl restart cloudflaredcloudflared update 手动更新systemctl edit --full cloudflared.service--protocol http2systemctl daemon-reload; systemctl restart cloudflaredhttps://ip4p.xxxxxxxxxxxxx.com/a?v=1 时, 自动根据 IP4P 信息重定向 https://ip4p.xxxxxxxxxxxxx.com:1234/a?v=1, 且 IP 为 真实打洞 IP
IP4P 节点和 ip4p.web.com 这个服务可以正常使用ipv6: true
dns:
ipv6: true
experimental:
dialer-ip4p-convert: true
proxies:
- name: IP4P
server: ip4p.proxy.com
port: 1
...
rules:
- DOMAIN,ip4p.web.com,DIRECThttp://ip4p.com/a?v=1 时, 自动根据 IP4P 信息重定向为 http://1.1.1.1:1234/a?v=1~/.ssh/ip4p.sh:#!/usr/bin/env bash
host=$1
raw=$(dig +short -t aaaa $host)
port=$((0x$(echo ${raw} | awk -F: '{ print $3 }')))
ipab=$((0x$(echo ${raw} | awk -F: '{ print $4 }')))
ipcd=$((0x$(echo ${raw} | awk -F: '{ print $5 }')))
ipa=$((${ipab} >> 8))
ipb=$((${ipab} & 0xff))
ipc=$((${ipcd} >> 8))
ipd=$((${ipcd} & 0xff))
exec nc ${ipa}.${ipb}.${ipc}.${ipd} ${port}~/.ssh/config:Host ip4p
HostName ip4p.com
User root
Port 2222
IdentityFile ~/.ssh/id_rsa
ProxyCommand /bin/bash ~/.ssh/ip4p.sh %h
ZONE=''
RECORD=''
EMAIL=''
AUTH=''
DOMAIN=''
ipa=$(echo ${ip} | cut -d'.' -f1)
ipb=$(echo ${ip} | cut -d'.' -f2)
ipc=$(echo ${ip} | cut -d'.' -f3)
ipd=$(echo ${ip} | cut -d'.' -f4)
ipab=$(printf '%02x%02x' ${ipa} ${ipb})
ipcd=$(printf '%02x%02x' ${ipc} ${ipd})
porthex=$(printf '%04x' ${port})
IP4P="2001::${porthex}:${ipab}:${ipcd}"
echo $IP4P
while true; do
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE}/dns_records/${RECORD}" \
-H "X-Auth-Email: ${EMAIL}" \
-H "Authorization: Bearer ${AUTH}" \
-H "Content-Type:application/json" \
--data "{\"type\":\"AAAA\",\"name\":\"${DOMAIN}\",\"content\":\"${IP4P}\",\"ttl\":60,\"proxied\":false}"
if [ $? -eq 0 ]; then
break
fi
doneZONE=''
RECORD=''
EMAIL=''
AUTH=''
DOMAIN=''
ipa=$(echo ${ip} | cut -d'.' -f1)
ipb=$(echo ${ip} | cut -d'.' -f2)
ipc=$(echo ${ip} | cut -d'.' -f3)
ipd=$(echo ${ip} | cut -d'.' -f4)
ipab=$(printf '%02x%02x' ${ipa} ${ipb})
ipcd=$(printf '%02x%02x' ${ipc} ${ipd})
porthex=$(printf '%04x' ${port})
IP4P="2001::${porthex}:${ipab}:${ipcd}"
echo $IP4P
while true; do
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE}/dns_records/${RECORD}" \
-H "X-Auth-Email: ${EMAIL}" \
-H "Authorization: Bearer ${AUTH}" \
-H "Content-Type:application/json" \
--data "{\"type\":\"AAAA\",\"name\":\"${DOMAIN}\",\"content\":\"${IP4P}\",\"ttl\":60,\"proxied\":false}"
if [ $? -eq 0 ]; then
break
fi
done
服务器地址 和 外部端口号dokodemo-door 转发到其他服务