目标:客户端通过 Tailscale 访问 DN42(172.20/14、fd00/8),并让 .dn42 域名使用 DN42 DNS(例如 fd42:d42:d42:54::1)解析
1) VPS:启用 Subnet Router 并批准路由
1.1 VPS 上执行
tailscale up --advertise-routes=172.20.0.0/14,fd00::/81.2 管理台批准
Tailscale Admin Console → Machines → 选择该 VPS → Approve routes:
勾选并批准 172.20.0.0/14、fd00::/8。
2) VPS:开启转发与关闭 rp_filter
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.default.forwarding=1
sysctl -w net.ipv4.conf.all.rp_filter=0
sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -w net.ipv4.conf.tailscale0.rp_filter=0(推荐)持久化:
cat <<'EOF' >/etc/sysctl.d/99-relay.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.tailscale0.rp_filter=0
EOF
sysctl --system3) VPS:配置 DN42 IPv4 SNAT(重要:不要用 MASQUERADE)
将 172.23.246.73 替换为你的 DN42 IPv4 出口地址
iptables -t nat -I POSTROUTING 1 \
-s 100.64.0.0/10 \
-d 172.20.0.0/14 \
-j SNAT --to-source 172.23.246.73(如果配置了iptables防火墙)放行转发:
iptables -I FORWARD 1 -s 100.64.0.0/10 -d 172.20.0.0/14 -j ACCEPT
iptables -I FORWARD 1 -s 172.20.0.0/14 -d 100.64.0.0/10 -j ACCEPT4) VPS:配置 DN42 IPv6 SNAT(NAT66)
将 fd75:1204:2fa8:1::1 替换为你的 DN42 IPv6 出口地址。
Tailscale 的 IPv6 通常为 fd7a:115c:a1e0::/48;如你的实际不同,替换 -s。
ip6tables -t nat -I POSTROUTING 1 \
-s fd7a:115c:a1e0::/48 \
-d fd00::/8 \
-j SNAT --to-source fd75:1204:2fa8:1::1(如果配置了iptables防火墙)放行转发:
ip6tables -I FORWARD 1 -s fd7a:115c:a1e0::/48 -d fd00::/8 -j ACCEPT
ip6tables -I FORWARD 1 -s fd00::/8 -d fd7a:115c:a1e0::/48 -j ACCEPT5) 检查规则是否命中
iptables -t nat -L POSTROUTING -v -n --line-numbers
ip6tables -t nat -L POSTROUTING -v -n --line-numbers访问 DN42 时,SNAT 规则 pkts/bytes 应增长。
若计数为 0,确认规则是否在链首(必须 -I POSTROUTING 1)。
6) Tailscale Split DNS:配置使用 DN42 公共 DNS
在 Admin Console → DNS → Nameservers → Add nameserver:
- Nameserver:填
fd42:d42:d42:54::1 - 打开 "Split DNS"
- Domain 填:
dn42
效果:仅 xxx.dn42 走 fd42:d42:d42:54::1,其余域名仍走本地/公网 DNS。
7) 客户端测试
7.1 路由测试
IPv4:
ping 172.23.246.65IPv6:
ping -6 fd42:d42:d42:54::17.2 DNS 测试
nslookup example.dn42 fd42:d42:d42:54::1或:
dig @fd42:d42:d42:54::1 example.dn42 AAAA以上完成后,客户端可通过 Tailscale 访问 DN42 IPv4/IPv6 服务,并且 .dn42 解析仅使用 DN42 内部 DNS,不影响公网 DNS。