• 每个浏览器配置文件拥有独立节点、密钥和状态,支持同时接入不同 tailnet,适合多账号与多环境隔离
• 默认开启分流,只有 tailnet 流量走 Tailtab,公网访问保持原路径,也支持按配置文件单独选择 exit node
• 通过本地鉴权代理和原生消息桥接实现接入,无需系统级 VPN 与 root 权限,部署轻量且安全边界清晰
https://github.com/Stocist/Tailtab
- 👍3
- ❤️2
- 🤯1
https://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