记录一次较复杂的Tailscale跨网配置
- 内容介绍
- 文章标签
- 相关推荐
背景
两个家庭局域网,需要实现双向互访。
现状
只能在开启Tailscale的设备上访问局域网B
当前网络拓扑
graph TB
subgraph 家庭A["🏠 家庭 A — 192.168.1.0/24"]
XiaomiRouter["📶 小米路由器<br/>192.168.1.1"]
MoePi["🍓 树莓派 MoePi<br/>LAN: 192.168.1.\*\*\*<br/>TS: 100.\*\*\*.69.\*\*\*"]
end
subgraph Tailnet["🌐 Tailscale 网络"]
direction LR
TS_MoePi["moepi<br/>100.\*\*\*.69.\*\*\*"]
TS_iStore["istoreos<br/>100.\*\*\*.107.\*\*\*<br/>📢 advertise: 10.0.0.0/24"]
TS_Desktop["desktop<br/>100.\*\*\*.33.\*\*\*"]
TS_Racknerd["racknerd<br/>100.\*\*\*.77.\*\*\*"]
TS_Ubuntu["ubuntuserver<br/>100.\*\*\*.70.\*\*\*"]
end
subgraph 家庭B["🏠 家庭 B — 10.0.0.0/24"]
IKuaiRouter["📶 爱快路由器<br/>10.0.0.1<br/>WAN: \*\*\*.\*\*\*.225.\*\*\*<br/>(主路由 / 拨号 / 网关)"]
iStoreOS["📦 iStoreOS<br/>10.0.0.10<br/>TS: 100.\*\*\*.107.\*\*\*<br/>📢 advertise: 10.0.0.0/24<br/>Tailscale 1.32.3<br/>⚠️ 未开 accept-routes"]
PVE["🖥️ PVE 宿主机<br/>10.0.0.5"]
LXC_Mihomo["📦 MihomoProxy (LXC)<br/>10.0.0.200<br/>未安装 Tailscale"]
其他设备["🖥️ 其他内网设备<br/>10.0.0.x"]
IKuaiRouter --- iStoreOS
IKuaiRouter --- PVE
IKuaiRouter --- 其他设备
PVE -.- |"LXC 容器"| LXC_Mihomo
end
MoePi <-.->|"🔒 Tailscale 隧道"| iStoreOS
TS_MoePi ~~~ TS_iStore ~~~ TS_Desktop
style 家庭A fill:#1a3a2a,stroke:#4ade80,stroke-width:2px,color:#fff
style 家庭B fill:#1a2a3a,stroke:#60a5fa,stroke-width:2px,color:#fff
style Tailnet fill:#0f172a,stroke:#818cf8,stroke-width:2px,color:#fff
style MoePi fill:#065f46,stroke:#34d399,stroke-width:2px,color:#fff
style iStoreOS fill:#3a2a1a,stroke:#fbbf24,stroke-width:1px,color:#fff
style LXC_Mihomo fill:#374151,stroke:#9ca3af,color:#fff
style XiaomiRouter fill:#374151,stroke:#9ca3af,color:#fff
style IKuaiRouter fill:#374151,stroke:#9ca3af,color:#fff
style PVE fill:#374151,stroke:#9ca3af,color:#fff
style 其他设备 fill:#374151,stroke:#9ca3af,color:#fff
此时的问题:家庭 B 的普通设备(未安装 Tailscale)无法访问家庭 A 的 192.168.1.0/24 网段以及普通Tailscale网段。只有安装了 Tailscale 客户端的设备才能通过 Tailscale IP 互访。
第一步:诊断异地互访不通的原因
现象:树莓派可以 ping 通 10.0.0.10,但家庭 B 设备无法访问树莓派。
排查发现:
-
树莓派已配置
advertise-routes=192.168.1.0/24,Tailscale 后台已批准 -
树莓派
ip_forward=0— 内核转发未开启 -
iStoreOS Tailscale 版本 1.32.3 太旧,
tailscale set命令不可用 -
iStoreOS 未开启
--accept-routes,不接受树莓派广播的子网路由 -
爱快路由器缺少静态路由,
10.0.0.x设备不知道把192.168.1.x流量送给谁
措施1:修复树莓派 ip_forward
# 在树莓派上执行
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-tailscale-forward.conf
在爱快路由器后台 网络设置 → 静态路由 添加:
目的地址: 192.168.1.0
子网掩码: 255.255.255.0
网关: 10.0.0.10
结果:仍然无法访问 192 网段
原因:
-
iStoreOS 的 Tailscale 版本 1.32.3 太旧
-
LuCI 插件配置有限,版本老旧。
-
流量到了 iStoreOS,但它不知道
192.168.1.0/24要走 Tailscale 隧道送到树莓派
尝试新方法,在局域网中另一台服务器上开启最新的Tailscale服务转发192网段
现状:局域网B中有一台PVE服务器,24小时运行
问题:LXC 容器默认没有 /dev/net/tun,Tailscale 需要它。
在 PVE 宿主机(10.0.0.5)上操作:
# 查看容器 ID
pct list
# 虚拟机 的 VMID = 112
# 添加 TUN 设备权限
cat >> /etc/pve/lxc/112.conf << 'EOF'
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
EOF
# 重启容器
pct reboot 112
下一步
安装 Tailscale 并配置
# 安装 Tailscale 1.96.4
apt-get update && apt-get install -y tailscale
# 开启 IP 转发
echo 'net.ipv4.ip_forward = 1' | tee /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf
# 启动 Tailscale
tailscale up --accept-dns=false --accept-routes --advertise-routes=10.0.0.0/24
# 浏览器打开认证链接登录
# 去 Tailscale 管理后台批准路由
4.3 Tailscale 管理后台批准路由
打开 Tailscale ,找到 mihomoproxy:
- 点击右侧三个点 → Edit route settings
- 启用
10.0.0.0/24子网路由 - (可选)Disable key expiry,避免密钥过期掉线
第五步:爱快路由器添加静态路由
这一步是让家庭 B 的普通设备知道把 192.168.1.x 的流量发给谁。
在爱快路由器后台 网络设置 → 静态路由,将网关改为 刚才配置的服务器:
目的地址: 192.168.1.0
子网掩码: 255.255.255.0
网关: 10.0.0.200
数据流:家庭 B 设备 → 爱快路由器(静态路由)→ TailScailProxy(Tailscale 隧道)→ 树莓派 → 家庭A设备
拓扑
graph TB
subgraph 家庭A["🏠 家庭 A — 192.168.1.0/24"]
XiaomiRouter["📶 小米路由器<br/>192.168.1.1"]
MoePi["🍓 树莓派 MoePi<br/>LAN: 192.168.1.228<br/>TS: 100.104.\*.\*<br/>广播: 192.168.1.0/24"]
XiaomiRouter --- MoePi
end
subgraph 家庭B["🏠 家庭 B — 10.0.0.0/24"]
IKuaiRouter["📶 爱快路由器<br/>10.0.0.1"]
iStoreOS["📦 iStoreOS<br/>10.0.0.10<br/>TS: 100.123.\*.\*<br/>广播: 10.0.0.0/24<br/>⚠️ Tailscale 1.32.3"]
PVE["🖥️ PVE 宿主机<br/>10.0.0.5"]
MihomoProxy["🔁 MihomoProxy (LXC 112)<br/>10.0.0.200<br/>TS: 100.104.\*.\*<br/>广播: 10.0.0.0/24<br/>✅ Tailscale 1.96.4<br/>accept-routes: ON"]
IKuaiRouter --- iStoreOS
IKuaiRouter --- PVE
PVE -.- |"LXC 容器"| MihomoProxy
end
MoePi <====>|"🔒 Tailscale 隧道"| MihomoProxy
iStoreOS <====>|"🔒 Tailscale 隧道"| MoePi
style 家庭A fill:#1a3a2a,stroke:#4ade80,stroke-width:2px,color:#fff
style 家庭B fill:#1a2a3a,stroke:#60a5fa,stroke-width:2px,color:#fff
style MoePi fill:#065f46,stroke:#34d399,stroke-width:2px,color:#fff
style MihomoProxy fill:#1e3a5f,stroke:#60a5fa,stroke-width:2px,color:#fff
style iStoreOS fill:#3a2a1a,stroke:#fbbf24,stroke-width:1px,color:#fff
style XiaomiRouter fill:#374151,stroke:#9ca3af,color:#fff
style IKuaiRouter fill:#374151,stroke:#9ca3af,color:#fff
style PVE fill:#374151,stroke:#9ca3af,color:#fff
关于两个节点广播同一子网的安全性
iStoreOS 和 MihomoProxy 都广播 10.0.0.0/24,查阅 Tailscale 官方文档确认:
-
不会引起网络风暴
-
Tailscale 自动处理为高可用(HA)模式:最老的节点当主用,另一个当备用
-
主用掉线约 15 秒后自动切换
-
注意事项:位于被广播子网内的节点同时开
--accept-routes可能导致本地流量绕道,但实际上本地路由优先级更高,一般不会出问题 -
官方建议 HA 子网路由器尽量不要同时开
--accept-routes,但本场景需要接受树莓派的192.168.1.0/24,所以必须开
最终结果
Proxy → (树莓派 TS IP) | 8ms |
Proxy → (树莓派 LAN IP) | 9ms |
PVE 宿主机 → 家庭 A 设备 | 13ms |
家庭 B 设备 → 家庭 A 设备 | 通了 |
网友解答:--【壹】--:
学习一下
--【贰】--:
强啊佬,这是折腾了多久
--【叁】--:
这个拓扑图是怎么画的呀?
--【肆】--:
mermaid
--【伍】--:
前两周刚搞过,一个兼职的异地同事,需要访问内网,然后在服务器上docker直接部署,开启转发到路由器地址,同事再加入就能访问内网所有了
背景
两个家庭局域网,需要实现双向互访。
现状
只能在开启Tailscale的设备上访问局域网B
当前网络拓扑
graph TB
subgraph 家庭A["🏠 家庭 A — 192.168.1.0/24"]
XiaomiRouter["📶 小米路由器<br/>192.168.1.1"]
MoePi["🍓 树莓派 MoePi<br/>LAN: 192.168.1.\*\*\*<br/>TS: 100.\*\*\*.69.\*\*\*"]
end
subgraph Tailnet["🌐 Tailscale 网络"]
direction LR
TS_MoePi["moepi<br/>100.\*\*\*.69.\*\*\*"]
TS_iStore["istoreos<br/>100.\*\*\*.107.\*\*\*<br/>📢 advertise: 10.0.0.0/24"]
TS_Desktop["desktop<br/>100.\*\*\*.33.\*\*\*"]
TS_Racknerd["racknerd<br/>100.\*\*\*.77.\*\*\*"]
TS_Ubuntu["ubuntuserver<br/>100.\*\*\*.70.\*\*\*"]
end
subgraph 家庭B["🏠 家庭 B — 10.0.0.0/24"]
IKuaiRouter["📶 爱快路由器<br/>10.0.0.1<br/>WAN: \*\*\*.\*\*\*.225.\*\*\*<br/>(主路由 / 拨号 / 网关)"]
iStoreOS["📦 iStoreOS<br/>10.0.0.10<br/>TS: 100.\*\*\*.107.\*\*\*<br/>📢 advertise: 10.0.0.0/24<br/>Tailscale 1.32.3<br/>⚠️ 未开 accept-routes"]
PVE["🖥️ PVE 宿主机<br/>10.0.0.5"]
LXC_Mihomo["📦 MihomoProxy (LXC)<br/>10.0.0.200<br/>未安装 Tailscale"]
其他设备["🖥️ 其他内网设备<br/>10.0.0.x"]
IKuaiRouter --- iStoreOS
IKuaiRouter --- PVE
IKuaiRouter --- 其他设备
PVE -.- |"LXC 容器"| LXC_Mihomo
end
MoePi <-.->|"🔒 Tailscale 隧道"| iStoreOS
TS_MoePi ~~~ TS_iStore ~~~ TS_Desktop
style 家庭A fill:#1a3a2a,stroke:#4ade80,stroke-width:2px,color:#fff
style 家庭B fill:#1a2a3a,stroke:#60a5fa,stroke-width:2px,color:#fff
style Tailnet fill:#0f172a,stroke:#818cf8,stroke-width:2px,color:#fff
style MoePi fill:#065f46,stroke:#34d399,stroke-width:2px,color:#fff
style iStoreOS fill:#3a2a1a,stroke:#fbbf24,stroke-width:1px,color:#fff
style LXC_Mihomo fill:#374151,stroke:#9ca3af,color:#fff
style XiaomiRouter fill:#374151,stroke:#9ca3af,color:#fff
style IKuaiRouter fill:#374151,stroke:#9ca3af,color:#fff
style PVE fill:#374151,stroke:#9ca3af,color:#fff
style 其他设备 fill:#374151,stroke:#9ca3af,color:#fff
此时的问题:家庭 B 的普通设备(未安装 Tailscale)无法访问家庭 A 的 192.168.1.0/24 网段以及普通Tailscale网段。只有安装了 Tailscale 客户端的设备才能通过 Tailscale IP 互访。
第一步:诊断异地互访不通的原因
现象:树莓派可以 ping 通 10.0.0.10,但家庭 B 设备无法访问树莓派。
排查发现:
-
树莓派已配置
advertise-routes=192.168.1.0/24,Tailscale 后台已批准 -
树莓派
ip_forward=0— 内核转发未开启 -
iStoreOS Tailscale 版本 1.32.3 太旧,
tailscale set命令不可用 -
iStoreOS 未开启
--accept-routes,不接受树莓派广播的子网路由 -
爱快路由器缺少静态路由,
10.0.0.x设备不知道把192.168.1.x流量送给谁
措施1:修复树莓派 ip_forward
# 在树莓派上执行
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-tailscale-forward.conf
在爱快路由器后台 网络设置 → 静态路由 添加:
目的地址: 192.168.1.0
子网掩码: 255.255.255.0
网关: 10.0.0.10
结果:仍然无法访问 192 网段
原因:
-
iStoreOS 的 Tailscale 版本 1.32.3 太旧
-
LuCI 插件配置有限,版本老旧。
-
流量到了 iStoreOS,但它不知道
192.168.1.0/24要走 Tailscale 隧道送到树莓派
尝试新方法,在局域网中另一台服务器上开启最新的Tailscale服务转发192网段
现状:局域网B中有一台PVE服务器,24小时运行
问题:LXC 容器默认没有 /dev/net/tun,Tailscale 需要它。
在 PVE 宿主机(10.0.0.5)上操作:
# 查看容器 ID
pct list
# 虚拟机 的 VMID = 112
# 添加 TUN 设备权限
cat >> /etc/pve/lxc/112.conf << 'EOF'
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
EOF
# 重启容器
pct reboot 112
下一步
安装 Tailscale 并配置
# 安装 Tailscale 1.96.4
apt-get update && apt-get install -y tailscale
# 开启 IP 转发
echo 'net.ipv4.ip_forward = 1' | tee /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf
# 启动 Tailscale
tailscale up --accept-dns=false --accept-routes --advertise-routes=10.0.0.0/24
# 浏览器打开认证链接登录
# 去 Tailscale 管理后台批准路由
4.3 Tailscale 管理后台批准路由
打开 Tailscale ,找到 mihomoproxy:
- 点击右侧三个点 → Edit route settings
- 启用
10.0.0.0/24子网路由 - (可选)Disable key expiry,避免密钥过期掉线
第五步:爱快路由器添加静态路由
这一步是让家庭 B 的普通设备知道把 192.168.1.x 的流量发给谁。
在爱快路由器后台 网络设置 → 静态路由,将网关改为 刚才配置的服务器:
目的地址: 192.168.1.0
子网掩码: 255.255.255.0
网关: 10.0.0.200
数据流:家庭 B 设备 → 爱快路由器(静态路由)→ TailScailProxy(Tailscale 隧道)→ 树莓派 → 家庭A设备
拓扑
graph TB
subgraph 家庭A["🏠 家庭 A — 192.168.1.0/24"]
XiaomiRouter["📶 小米路由器<br/>192.168.1.1"]
MoePi["🍓 树莓派 MoePi<br/>LAN: 192.168.1.228<br/>TS: 100.104.\*.\*<br/>广播: 192.168.1.0/24"]
XiaomiRouter --- MoePi
end
subgraph 家庭B["🏠 家庭 B — 10.0.0.0/24"]
IKuaiRouter["📶 爱快路由器<br/>10.0.0.1"]
iStoreOS["📦 iStoreOS<br/>10.0.0.10<br/>TS: 100.123.\*.\*<br/>广播: 10.0.0.0/24<br/>⚠️ Tailscale 1.32.3"]
PVE["🖥️ PVE 宿主机<br/>10.0.0.5"]
MihomoProxy["🔁 MihomoProxy (LXC 112)<br/>10.0.0.200<br/>TS: 100.104.\*.\*<br/>广播: 10.0.0.0/24<br/>✅ Tailscale 1.96.4<br/>accept-routes: ON"]
IKuaiRouter --- iStoreOS
IKuaiRouter --- PVE
PVE -.- |"LXC 容器"| MihomoProxy
end
MoePi <====>|"🔒 Tailscale 隧道"| MihomoProxy
iStoreOS <====>|"🔒 Tailscale 隧道"| MoePi
style 家庭A fill:#1a3a2a,stroke:#4ade80,stroke-width:2px,color:#fff
style 家庭B fill:#1a2a3a,stroke:#60a5fa,stroke-width:2px,color:#fff
style MoePi fill:#065f46,stroke:#34d399,stroke-width:2px,color:#fff
style MihomoProxy fill:#1e3a5f,stroke:#60a5fa,stroke-width:2px,color:#fff
style iStoreOS fill:#3a2a1a,stroke:#fbbf24,stroke-width:1px,color:#fff
style XiaomiRouter fill:#374151,stroke:#9ca3af,color:#fff
style IKuaiRouter fill:#374151,stroke:#9ca3af,color:#fff
style PVE fill:#374151,stroke:#9ca3af,color:#fff
关于两个节点广播同一子网的安全性
iStoreOS 和 MihomoProxy 都广播 10.0.0.0/24,查阅 Tailscale 官方文档确认:
-
不会引起网络风暴
-
Tailscale 自动处理为高可用(HA)模式:最老的节点当主用,另一个当备用
-
主用掉线约 15 秒后自动切换
-
注意事项:位于被广播子网内的节点同时开
--accept-routes可能导致本地流量绕道,但实际上本地路由优先级更高,一般不会出问题 -
官方建议 HA 子网路由器尽量不要同时开
--accept-routes,但本场景需要接受树莓派的192.168.1.0/24,所以必须开
最终结果
Proxy → (树莓派 TS IP) | 8ms |
Proxy → (树莓派 LAN IP) | 9ms |
PVE 宿主机 → 家庭 A 设备 | 13ms |
家庭 B 设备 → 家庭 A 设备 | 通了 |
网友解答:--【壹】--:
学习一下
--【贰】--:
强啊佬,这是折腾了多久
--【叁】--:
这个拓扑图是怎么画的呀?
--【肆】--:
mermaid
--【伍】--:
前两周刚搞过,一个兼职的异地同事,需要访问内网,然后在服务器上docker直接部署,开启转发到路由器地址,同事再加入就能访问内网所有了

