用动态路由打通各Virtual L2网络 By HKL,
本文主要以Zerotier组好的各Virtual L2网络节点 + 动态路由 RIP 为例,最终效果就是让网关建立Zerotier的Virtual L2网络,网关下的其它网段就能相互通信。
拓扑如下:
例如如上拓扑,Zerotier建立了192.168.193.0/24的互联虚拟二层,有192.168.193.6、192.168.193.11、192.168.193.21的网关下面有172.16.0.0/23、192.168.2.0/24、192.168.11.0/24三个网段,那么通过建立rip动态路由,让这三个网段可以互通。
网关设备默认是OpenWRT设备,前提是已经通过例如VPN/Tinc/Zerotier等方法建立了互联段。
如果还没建立的话可以参考: /2020/03/openwrt-tinc/
先建好互联的段,
下面开始做动态路由的配置
先安装quagga-zebra和quagga-ripd组件:
# opkg install quagga-zebra quagga-ripd
如果想要有操作终端界面可以安装quagga-vtysh
分别编辑rip路由 /etc/quagga/ripd.conf
192.168.193.6、172.16.0.0/23
password zebra
!
router rip
network 192.168.193.0/24
route 172.16.0.0/23
!
access-list vty permit 127.0.0.0/8
access-list vty deny any
!
line vty
access-class vty
192.168.193.11、192.168.2.0/24
password zebra
!
router rip
network 192.168.193.0/24
route 192.168.2.0/24
!
access-list vty permit 127.0.0.0/8
access-list vty deny any
!
line vty
access-class vty
192.168.193.21、192.168.11.0/24
password zebra
!
router rip
network 192.168.193.0/24
route 192.168.11.0/24
!
access-list vty permit 127.0.0.0/8
access-list vty deny any
!
line vty
access-class vty
然后重启quagga进程 /etc/init.d/quagga restart
在有装vtysh的设备可以进终端看看rip状态
# vtysh
Hello, this is Quagga (version 1.1.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
nRouter# show ip rip status
Routing Protocol is "rip"
Sending updates every 30 seconds with +/-50%, next due in 28 seconds
Timeout after 180 seconds, garbage collect after 120 seconds
Outgoing update filter list for all interface is not set
Incoming update filter list for all interface is not set
Default redistribution metric is 1
Redistributing:
Default version control: send version 2, receive any version
Interface Send Recv Key-chain
ztuku6smag 2 1 2
Routing for Networks:
192.168.193.0/24
Routing Information Sources:
Gateway BadPackets BadRoutes Distance Last Update
192.168.193.21 0 0 120 00:00:19
192.168.193.11 0 0 120 00:00:07
192.168.193.14 0 0 120 00:00:10
Distance: (default is 120)
nRouter#
在其它设备可以看看路由
# ip route | grep zebra
172.16.0.0/23 via 192.168.193.6 dev ztuku6smag proto zebra metric 20
192.168.11.0/24 via 192.168.193.21 dev ztuku6smag proto zebra metric 20
192.168.12.0/24 via 192.168.193.14 dev ztuku6smag proto zebra metric 20
这样子这三个网段就能够互通了,
比如从172.16.1.99 可以通 192.168.11.8
root@ubuntu-lxc:/etc/apt# ip addr | grep inet
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 172.16.1.99/23 brd 172.16.1.255 scope global eth0
inet6 fe80::38a9:fcff:fe1d:b7f6/64 scope link
root@ubuntu-lxc:/etc/apt# ping 192.168.11.8
PING 192.168.11.8 (192.168.11.8) 56(84) bytes of data.
64 bytes from 192.168.11.8: icmp_seq=1 ttl=62 time=19.0 ms
64 bytes from 192.168.11.8: icmp_seq=2 ttl=62 time=14.6 ms
64 bytes from 192.168.11.8: icmp_seq=3 ttl=62 time=15.0 ms
64 bytes from 192.168.11.8: icmp_seq=4 ttl=62 time=16.1 ms
64 bytes from 192.168.11.8: icmp_seq=5 ttl=62 time=16.9 ms
^C
--- 192.168.11.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 14.592/16.344/19.022/1.572 ms
root@ubuntu-lxc:/etc/apt#
发布于: Monday 14 September 2020 分享至微博
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python包和模块的分发详细介绍
- PHP cookie,session的使用与用户自动登录功能实现方法分析
- Python内置方法和属性应用:反射和单例(推荐)
- 使用OpenCV对车道进行实时检测的实现示例代码
- php 读取文件夹下所有图片、文件的实例
- php微信公众号开发之欢迎老朋友
- Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
- PHP使用glob方法遍历文件夹下所有文件的实例
- Python图像阈值化处理及算法比对实例解析
- 浅析Python 条件控制语句
- 浅谈Django前端后端值传递问题
- sklearn和keras的数据切分与交叉验证的实例详解
- django Model层常用验证器及自定义验证器详解
- PyQT5 实现快捷键复制表格数据的方法示例
- Python爬虫headers处理及网络超时问题解决方案