# ZeroTier 结合rip 实现局域网互访 ### 为什么选择 ZeroTier 与 rip 个人使用ZeroTier体验不错, ZeroTier 实现局域网互访的方式有 双向nat 转发、大子网嵌套小子网,设置静态路由等。 双向转发 流量会经过 openWrt的防火墙,源地址重写,在服务器端只能看到openWrt的地址 获取不到 另一个子网的具体主机地址。 子网嵌套 设置繁琐 扩展不方便, 静态路由 需要手动在 openWrt 上设置 静态路由,局域网多时设置繁琐。 如:A B C 三个局域网 需要互访 需要添加 (N-1) * N 条记录 (N为局域网数量) A 访问B 的路由 A 访问C 的路由 B 访问A 的路由 B 访问C 的路由 C 访问B 的路由 C 访问A 的路由 共六条记录。 ### 名词解释 **ZeroTier** 自行了解 **rip** rip 是一种动态路由协议 可以自动学习路由 **frr** frr 是一个 实现了 rip bgp 等多种 路由协议的软件包,同类型的还有 ### 网络拓扑图 ```mermaid graph TD; pro+-->openWrt; pro+--> localhost; pro+--> nas; ZeroTier-->ZeroTier节点; ZeroTier-->openWrt; ``` LAN 是本地局域网 路由器为中兴的 **PRO+** 网段为 `192.168.123.0/24` ZeroTier 虚拟局域网 网段为 `192.168.191.0/24` openWrt 是刷了 openWrt 固件的 小米4A路由器,在次拓扑中 充当两个 网段的lan节点 openWrt 在 pro+ 下的地址为 192.168.123.10/24 网关为192.168.123.1 openWrt 在 ZeroTier 下的地址为 192.168.191.2/24 网关 默认 ### 准备工作 #### 创建ZeroTier 首先 在 ZeroTier 里创建局域网 得到 网络ID 在本机电脑上安装 ZeroTier one 并加入局域网。 默认是 私有局域网 需要去 ZeroTier 通过才能加入 ![image-20230917125549750](http://pic.61dz.com/pic/image-20230917125549750.png) #### 配置 openWrt openWrt lan 口接入电脑,登陆后删除 wan wan6接口 , 编辑LAN接口 将IP设置为静态IP 与本地LAN 同一网段 这里设置成 `192.168.123.10/24` ![image-20230917123125627](http://pic.61dz.com/pic/image-20230917123125627.png) 将 openWrt LAN 口 接入 5400pro+ 的lan口 测试openWrt是否能上网 ##### 安装 ZeroTier 在openWrt 软件包里安装 ZeroTier 并填入之前创建的 ZeroTier 局域网ID 加入局域网 自动NAT 不需要勾选 自动NAT 不需要勾选 自动NAT 不需要勾选 ![image-20230917125355581](http://pic.61dz.com/pic/image-20230917125355581.png) 添加 ZeroTier 的接口(不确定是否必须) 在接口界面 新增接口 协议选择静态IP 设备选择 zt 的设备 (多个 zt 网络需要确定 设备对应的子网) ![image-20230917125901432](http://pic.61dz.com/pic/image-20230917125901432.png) 然后填写 IP 为之前在ZeroTier 分配的IP 本文中是 `192.168.192.2/24` 网关空着 保存即可 ### 路由配置 #### 本地路由配置 登录本地 路由器 设置静态路由 将ZeroTier的网段指向 openWrt 在5400 pro+ 中的地址 ![image-20230917123812418](http://pic.61dz.com/pic/image-20230917123812418.png) #### ZeroTier 路由配置 登录ZeroTier 设置静态路由 将5400 PRO+ 的网段指向 openWrt 在ZeroTier 中的地址 ![image-20230917124033764](http://pic.61dz.com/pic/image-20230917124033764.png) #### openWrt 路由配置 **ssh 登录 openWrt 安装 以下软件包** ```bash opkg update opkg install frr frr-babeld frr-bfdd frr-bgpd frr-eigrpd frr-fabricd frr-isisd frr-ldpd frr-libfrr frr-nhrpd frr-ospf6d frr-ospfd frr-pbrd frr-pimd frr-ripd frr-ripngd frr-staticd frr-vrrpd frr-vtysh frr-watchfrr frr-zebra ``` **编辑配置** ``` vi /etc/frr/daemons ``` 将 `ripd=no` 修改成 `ripd=yes` 保存 ``` vi /etc/frr/frr.conf ``` 添加网段 在图中红框位置 添加 ``` router rip network 192.168.123.0/24 network 192.168.191.0/24 ``` ![image-20230917124516201](http://pic.61dz.com/pic/image-20230917124516201.png) 重启 frr ``` /etc/init.d/frr restart ``` ### 安全管理 这样配置后 局域网互通 不受防火墙管理,如需要为别人提供服务,只想 别人访问特定的网段 可以