记录一次较复杂的Tailscale跨网配置

2026-04-11 15:091阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

背景

两个家庭局域网,需要实现双向互访。

现状

只能在开启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 设备无法访问树莓派。

排查发现

  1. 树莓派已配置 advertise-routes=192.168.1.0/24,Tailscale 后台已批准

  2. 树莓派 ip_forward=0内核转发未开启

  3. iStoreOS Tailscale 版本 1.32.3 太旧,tailscale set 命令不可用

  4. iStoreOS 未开启 --accept-routes,不接受树莓派广播的子网路由

  5. 爱快路由器缺少静态路由,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

  1. 点击右侧三个点 → Edit route settings
  2. 启用 10.0.0.0/24 子网路由
  3. (可选)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直接部署,开启转发到路由器地址,同事再加入就能访问内网所有了

标签:vps
问题描述:

背景

两个家庭局域网,需要实现双向互访。

现状

只能在开启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 设备无法访问树莓派。

排查发现

  1. 树莓派已配置 advertise-routes=192.168.1.0/24,Tailscale 后台已批准

  2. 树莓派 ip_forward=0内核转发未开启

  3. iStoreOS Tailscale 版本 1.32.3 太旧,tailscale set 命令不可用

  4. iStoreOS 未开启 --accept-routes,不接受树莓派广播的子网路由

  5. 爱快路由器缺少静态路由,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

  1. 点击右侧三个点 → Edit route settings
  2. 启用 10.0.0.0/24 子网路由
  3. (可选)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直接部署,开启转发到路由器地址,同事再加入就能访问内网所有了

标签:vps