本文主要以通过 N2N 组二层网并在其上运行 OSPF 动态路由,最终效果使得运行 N2N 的各个节点下的子网可以经路由实现互通。
Chapter 0: 这个运行 N2N 的节点均为 OpenWRT 设备,因为 OpenWRT 官方源已经没有 N2N 软件了,所以先基于 N2N 2.8 的源代码编译了 N2N for OpnWRT, 交叉编译的 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