本文主要以通过 N2N 组二层网并在其上运行 OSPF 动态路由,最终效果使得运行 N2N 的各个节点下的子网可以经路由实现互通。
Chapter 0: 这个运行 N2N 的节点均为 OpenWRT 设备,因为 OpenWRT 官方源已经没有 N2N 软件了,所以先基于 N2N 2.8 的源代码编译了 N2N for OpenWRT, 交叉编译的 Makefile 以及预编译的 ipk 安装包可以在此下载: Github hiplon/openwrt-n2n-latest
Chapter 1:
N2N 的配置比较简单,Supernode 部分以及 Edge 的基础部分可以参考 Github ntop/n2n ,不过由于此次需要经过 N2N 的虚拟网络作数据包的转发以及动态路由,所以需要启动 Enable packet forwarding 功能以及 Accept multicast MAC addresses,具体可以参考以下配置文件:
cat /etc/n2n/edge.conf
-d=n2ntun0
-c=myn2nnetwork
-k=mysecret
-a=10.1.0.5
-f
-r # Enable packet forwarding [启用 N2N 包转发需要]
-E # Accept multicast MAC addresses [启用动态路由需要]
-l=supernode.ntop.org:7777
Chapter 2:
配置 OSPF 动态路由:
配置 OSPF 动态路由的拓扑可以参考我之前关于 Zerotier + RIP 的文章
安装 quagga-ospfd
编辑 ospf 路由(以其中一个节点为例)
/etc/quagga/ospfd.conf
password zebra
!
interface br-lan
!
interface n2ntun0
!
router ospf
ospf router-id 10.1.0.5
network 192.168.14.0/24 area 0.0.0.2
network 10.1.0.0/24 area 0.0.0.0
!
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