本文主要介绍通过 n2n 结合动态路由 RIP 的异地组网方案,经过近一年的使用,比较稳定,所以分享一下。
( 0 )前言及网络拓扑
首先简单说一下组网的拓扑:
此前在 v 站和 我的博客 也有陆续发过一些异地组网的方法:
通过 N2N 组网并运行 OSPF 动态路由 on OpenWRT
用动态路由打通各 Virtual L2 ( Zerotier )网络
OpenWRT 结合 tinc 组自己的 SDLAN ( Step by Step )
OpenWRT 搭建 WireGuard 服务器
大家收藏点赞挺多的,就是没啥回复😆
现在分享一下已经稳定运行一年多的方案,n2n + quagga-rip,方案只需一个带公网 IP 的服务器作握手 /中继(也可以用 n2n 官网提供的[不推荐]),在网络环境较好的情况下基本握手后可以实现直接穿透。
( 1 )安装配置 n2n
n2n 软件 主要实现 peer-to-peer 虚拟组网功能,编译快速,配置简单,稳定。一般同类的软件有 zerotier, tinc, ... 本人基本都用过,综合考虑使用 n2n, 其它同类软件实现功能一样。
SuperNode 节点:
n2n SuperNode 节点类似于 zerotier 的 planet 或者 moons,用作握手或者中继,
本文拓扑中 SuperNode 节点使用 Archlinux 服务器,可直接 pacman 安装,其它发行版可通过包管理或者自编译安装,非常简单。
只需监听端口和 community(自定义字符串,和后面配置一致)即可
$ supernode -h
Welcome to n2n v.2.8.0 for x86_64-unknown-linux-gnu
Built on Jan 22 2021 15:06:27
Copyright 2007-2020 - ntop.org and contributors
supernode <config file> (see supernode.conf)
or
supernode -l <local port> -c <path> [-u <uid> -g <gid>] [-t <mgmt port>] [-v]
-l <port> Set UDP main listen port to <port>
-c <path> File containing the allowed communities.
-u <UID> User ID (numeric) to use when privileges are dropped.
-g <GID> Group ID (numeric) to use when privileges are dropped.
-t <port> Management UDP Port (for multiple supernodes on a machine).
-v Increase verbosity. Can be used multiple times.
-h This help message.
EdgeNode 节点:
EdgeNode 节点运行在各接入网段网关上,本人主要是运行其在各个拨号的 OpenWRT 路由器网关上,这样更加便利地将各个网段互联:
OpenWRT 包管理中没有新版本 n2n,所以可以参考 n2n 2.8 for OpenWRT 是 OpenWRT 交叉编译的脚本,也有打包好的 ipk 安装包,当然也可以用其它方法
安装完 edge 后,主要配置如下:(以拓扑中节点 X 为例)
root@XMOPWRT:~# cat /etc/n2n/edge.conf
-d=tincn0
-c=myperfectn2n //与前面 supernode 配置的 community(自定义字符串)一致
-a=10.193.111.14 //n2n 互联段 IP
-A1 //不启用加密性能更好(视乎需求)
-f
-r # Enable packet forwarding [启用 N2N 包转发需要]
-E # Accept multicast MAC addresses [启用动态路由需要]
-l=supernode.ntop.org:7777
启动 n2n
SuperNode
systemctl enable n2n
EdgeNode
/etc/init.d/edge enable
/etc/init.d/edge start
内网 IP
root@XMOPWRT:~# ip addr
5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 66:09:80:0e:c9:af brd ff:ff:ff:ff:ff:ff
inet 10.193.14.1/24 brd 10.193.14.255 scope global br-lan
valid_lft forever preferred_lft forever
11: tincn0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1290 qdisc fq_codel state UNKNOWN qlen 1000
link/ether 5e:36:f6:58:de:a8 brd ff:ff:ff:ff:ff:ff
inet 10.193.111.14/24 brd 10.193.111.255 scope global tincn0
valid_lft forever preferred_lft forever
inet6 fe80::5c36:f6ff:fe58:dea8/64 scope link
valid_lft forever preferred_lft forever
至此,各个节点应该通过互联段可以互通。
root@XMOPWRT:~# ping 10.193.111.11
PING 10.193.111.11 (10.193.111.11): 56 data bytes
64 bytes from 10.193.111.11: seq=0 ttl=64 time=20.020 ms
^C
--- 10.193.111.11 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 20.020/20.020/20.020 ms
root@XMOPWRT:~# ping 10.193.111.10
PING 10.193.111.10 (10.193.111.10): 56 data bytes
64 bytes from 10.193.111.10: seq=0 ttl=64 time=15.340 ms
^C
--- 10.193.111.10 ping statistics ---
2 packets transmitted, 1 packets received, 50% packet loss
round-trip min/avg/max = 15.340/15.340/15.340 ms
( 2 )安装配置 quagga
主要通过 quagga 并通过 RIP 路由协议实现动态路由,
各 EdgeNode 节点安装 quagga-ripd
opkg install quagga-ripd quagga quagga-libzebra quagga-zebra quagga-watchquagga
安装完 quagga 后,主要配置如下:(以拓扑中节点 X 为例):
root@XMOPWRT:~# cat /etc/quagga/ripd.conf
password zebra
!
router rip
network 10.193.111.0/24
route 10.193.14.0/24
!
access-list vty permit 127.0.0.0/8
access-list vty deny any
!
line vty
access-class vty
启动 quagga-ripd
EdgeNode
/etc/init.d/quagga enable
/etc/init.d/quagga start
至此,各个 EdgeNode 节点的 br-lan 网段应该通过可以互通。
C:\Users\k>ipconfig
Windows IP 配置
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . : lan
IPv6 地址 . . . . . . . . . . . . : fd78:ecee:8a17:0:bcb2:17a9:71cd:8ea5
临时 IPv6 地址. . . . . . . . . . : fd78:ecee:8a17:0:79c1:4:2b1:b58f
本地链接 IPv6 地址. . . . . . . . : fe80::bcb2:17a9:71cd:8ea5%9
IPv4 地址 . . . . . . . . . . . . : 10.193.14.133
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 10.193.14.1
C:\Users\k>ping 10.193.10.30
正在 Ping 10.193.10.30 具有 32 字节的数据:
来自 10.193.10.30 的回复: 字节=32 时间=14ms TTL=62
来自 10.193.10.30 的回复: 字节=32 时间=13ms TTL=62
10.193.10.30 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 13ms,最长 = 14ms,平均 = 13ms
Control-C
^C
C:\Users\k>ping 10.193.11.9
正在 Ping 10.193.11.9 具有 32 字节的数据:
来自 10.193.11.9 的回复: 字节=32 时间=18ms TTL=62
10.193.11.9 的 Ping 统计信息:
数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 18ms,最长 = 18ms,平均 = 18ms
Control-C
^C
( 3 ) iptables 配置
iptables -A input_rule -i tinc+ -j ACCEPT
iptables -A forwarding_rule -i tinc+ -j ACCEPT
iptables -A forwarding_rule -o tinc+ -j ACCEPT
iptables -A output_rule -o tinc+ -j ACCEPT
为了安全或者一些避免部分特定情况导致网络访问不通,可以启用 SNAT(可选 /建议)
iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o tincn0 -j SNAT --to 10.193.111.14
refer: https://vnf.cc/2021/07/n2n-rip-virtualnet/
PHP网站源码广州seo网站推广昌吉SEO按天计费推荐达州模板推广哪家好佛山网络推广公司甘南网站定制价格鞍山网站定制哪家好西乡百姓网标王推广价格仙桃网页设计报价吉林网站推广工具哪家好大理品牌网站设计多少钱开封百搜标王公司本溪外贸网站建设多少钱常德设计网站大芬网站优化按天计费公司衡水关键词排名多少钱烟台关键词按天收费报价绍兴网站优化按天扣费推荐保定如何制作网站价格鹤岗网站建设设计宜春阿里店铺运营价格张家界SEO按天扣费推荐通化外贸网站制作哪家好南通网站推广工具哪家好石岩SEO按天收费报价宜昌百度网站优化平凉网站制作推荐许昌英文网站建设报价张北网站推广系统多少钱甘孜网页设计海南百姓网标王报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运