article/openwrt/zeroTier结合rip动态路由协议实现互访.md
2023-11-19 17:20:20 +08:00

329 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ZeroTier 结合rip 实现局域网互访
### 为什么选择 ZeroTier 与 rip
个人使用ZeroTier体验不错
### 名词解释
**ZeroTier**
自行了解
**rip**
rip 是一种动态路由协议 可以自动学习路由
**frr**
frr 是一个 实现了 rip bgp 等多种 路由协议的软件包,同类型的还有 Quagga 等
### 网络拓扑图
```mermaid
graph TD;
LAN-124((LAN-124.0/24))
ZT-17((zt-17.0/24))
LAN-123((LAN-123.0/24))
nx30pro(nx30pro)
mi_4A(mi_4A)
ZT-192((zt-192.0/24))
ZT-191((zt-191.0/24))
pro+(pro+)
LAN-124-->|192.168.124.1|nx30pro
nx30pro-->|192.168.124.100/24|LAN-124-pc1;
nx30pro-->|192.168.124.120/24|LAN-124-pc2;
LAN-123 -->|192.168.123.1|pro+
ZT-17 -.->|10.147.17.214/24| mi_4A;
ZT-17 -.->|10.147.17.219/24| nx30pro;
ZT-192-.->|192.168.192.2|mi_4A;
ZT-191-.->|192.168.191.2|mi_4A;
ZT-192-.->|192.168.192.2|zt-192-pc1;
ZT-191-.->|192.168.191.2|zt-191-pc1;
pro+-->|192.168.123.100|LAN-123-PC;
pro+-->|192.168.123.71|nas;
pro+-->|192.168.123.10|mi_4A;
```
LAN123 是本地局域网(租房) 路由器为中兴的 **PRO+** 网段为 `192.168.123.0/24`
LAN124 是本地局域网 (家) 路由器为h3c的 **nx30pro** 网段为 `192.168.124.0/24`
zt17 虚拟局域网 (用于动态路由通信) 网段为 `10.147.17.0/24`
zt192 虚拟局域网 (用于节点接入) 网段为 `192.168.192.0/24`
zt191 虚拟局域网 (用于节点接入) 网段为 `192.168.191.0/24`
mi_4a 是刷了openWrt 固件的 小米4A路由器
在次拓扑中 充当网段的中转节点
ip 如下
```
192.168.123.10/24 本地局域网
192.168.192.2/24 zt节点接入
192.168.191.2/24 zt节点接入
10.147.17.214/24 动态路由互联
```
nx30pro 是刷了 openWrt 固件的新华三30pro路由器在次拓扑中充当两个网段的中转节点
由于直接采用的nx30pro 拨号 ,本节点比上一个节点少一个路由。
ip如下
```
192.168.124.1/24 本地局域网
10.147.17.219/24 动态路由互联
```
nas 是租房的nas 服务器 ip为 `192.168.123.71/24`
#### 创建ZeroTier
创建三个 zt-lan
网段分别为
192.168.192.0/24 zt节点接入
192.168.191.0/24 zt节点接入
10.147.17.0/24 动态路由互联
在192.168.192.0/24 添加路由
```
192.168.191.0/24 via 192.168.192.2
192.168.123.0/24 via 192.168.192.2
192.168.124.0/24 via 192.168.192.2
```
在192.168.191.0/24 添加路由
```
192.168.192.0/24 via 192.168.191.2
192.168.123.0/24 via 192.168.191.2
192.168.124.0/24 via 192.168.191.2
```
如图
![image-20230917124033764](http://pic.61dz.com/pic/image-20230917124033764.png)
#### 配置 openWrt
##### 安装 ZeroTier
在 mi_4anx30pro 中分别安装 ZeroTier
###### mi_4a
在mi_4a 中将三个zt-lan 添加至路由其中,
并为三个zt-lan 创建接口按照规划设置静态ip,防火墙区域选择lan
###### nx30pro
在nx30pro中将zt-17的id 添加至路由其中,
并创建 接口按规划的设置IP防火墙区域选择lan
##### 安装 frr
**ssh 登录 openWrt 安装 以下软件包**
```
opkg update
opkg install frr frr-ripd frr-zebra frr-vtysh frr-watchfrr
```
说明:
frr frr-zebra frr-vtysh frr-watchfrr 必须装 其他的选配
完整版如下
```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
```
添加网段 在图中红框位置 添加 mi_4a
```
router rip
route 10.147.17.0/24
network 192.168.123.0/24
network 192.168.192.0/24
network 192.168.191.0/24
```
添加网段 在图中红框位置 添加 (华三)
```
router rip
route 10.147.17.0/24
network 192.168.124.0/24
```
重启 frr
```
/etc/init.d/frr restart
```
查看状态
等一两分钟后
执行以下命令可以看到 已经在交换路由了也可以去openwrt 路由界面上观察 是否有rip 字样的路由
```
vtysh
show ip rip status
```
#### pro+路由配置
登录本地 路由器 设置静态路由 将ZeroTier的网段指向 openWrt 在5400 pro+ 中的地址
![image-20230917123812418](http://pic.61dz.com/pic/image-20230917123812418.png)
### 问题
- 在租房一侧 存在出入口不一致的情况, 因为在pro+ 上设置的路由 并没有下发到设备侧,
如图所示 去程经过mi_4a一个路由 两跳 到达目的地。回程 经过pro+,mi_4a,两个路由 三跳 到达目的地
```mermaid
sequenceDiagram
zt_192_pc->>mi_4a: 192.168.192.3->192.168.192.2
mi_4a->>rdp远程桌面: 192.168.123.10->192.168.123.160
rdp远程桌面->> pro: 192.168.123.160->192.168.123.1
pro->> mi_4a: 192.168.123.1->192.168.123.10
mi_4a->> zt_192_pc: 192.168.192.2->192.168.192.3
```
解决办法:在 rdp远程桌面 远程桌面上 添加静态路由
```cmd
route ADD 192.168.192.0 MASK 255.255.255.0 192.168.123.10 METRIC 10 IF 2
```
命令解释
添加一条路由 匹配 192.168.192.0/24 的ip 下一跳 去往 192.168.123.10mi_4a 权重10 走序号为 2的网卡
网卡需要可以使用 route 命令查看,出来的网卡列表 前两个数字就是需要。
```cmd
route print -4
```