warning 小白警告
本人是 BGP 纯小白,对于 BGP 为刚入门状态,本文为本小白的记录文,文章内有任何的 笔误/错误/小白理解 请大佬勿喷,如果能指正出来那就更好啦
warning 再次警告
如果您能接受的话,可以继续看下去,如果不能接受,建议现在就关闭此文章
前言
为了学习一些网络知识(其实是因为最近没什么事情做并且早就计划入坑了),所以我入坑了 DN42 (
DN42 是什么?
dn42 是一个大型的动态 VPN,它采用了互联网技术(BGP、whois 数据库、DNS 等)。参与者使用网络隧道(GRE、OpenVPN、WireGuard、Tinc、IPsec)相互连接,并通过边界网关协议交换路由。网络地址在
—— 来自 dn42wiki172.20.0.0/14
范围内分配,并使用私有 AS 编号(参见 registry)以及来自 ULA 范围 (fd00::/8
) 的 IPv6 地址
你可以在 DN42 里面干什么?
—— burble
- Do whatever is fun and interesting for you
做任何对你来说有趣和有趣的事情
准备工作
本文主要记录多服务器互联,并不详细记录 dn42 接入过程,如果需要了解 dn42 的接入过程推荐观看 lantian 前辈的这篇文章
你需要准备的东西
- 几台已经准备好 bird 的服务器
- 一台已经接入 dn42 的服务器
由于本人是纯小白,怕配置不好 Babel、OSPF 炸掉整个 dn42 所以选择使用 ZeroTier One 这种 Full-Mesh VPN 进行内部组网,本文主要介绍使用 ZeroTier One 进行服务器的内部组网
开始搭建
互联服务器
因为本人互联的服务器的一些地区原因,使用打算自建 planet 服务器
为了方便,使用了 Github 的这个项目
参考这个项目的 README 文档,应该很快就能搭建并且给每个节点部署好 ZeroTier One 节点端了
记得在创建网络的时候把 ip 范围改成你申请到的段的范围(记得v6的也要!!
然后打开 Routes,将 ip 的网关设置好
然后你可以把已经提前在 peer 定好 ip 的服务器改成指定的 ip
这时候连上你的服务器,ping 一下 web 上分配给其他服务器的 ip,应该可以 ping 通了
IBGP
现在你的服务器只是互联了,但是你并没有宣告外部这个服务器能互联到你 AS 内的其他服务器,所以你需要创建 IBGP 来宣告
由于本人是小白,本文只讲述最简单的服务器两两之间建立 BGP 连接的方式,如果您需要更高级 / 更方便的方式,可以查阅这里
在 bird.conf 中添加以下内容
template bgp milu_internal {
local as OWNAS;
path metric 1;
direct;
enable extended messages on;
ipv4 {
next hop self yes;
#这里最好不要 all,建议学习了 bird 语法之后自己写 filter ,但是本文由于简单就不在这里说明了
import all;
export all;
};
ipv6 {
#这里最好不要 all,建议学习了 bird 语法之后自己写 filter ,但是本文由于简单就不在这里说明了
next hop self yes;
import all;
export all;
};
};
protocol bgp mlnet_other_server from milu_internal {
NEIGHBOR_IP 是其他互联服务器的ip
neighbor NEIGHBOR_IP as OWNAS;
};
protocol bgp mlnet_other_server from milu_internal {
NEIGHBOR_IP 是其他互联服务器的ip
neighbor NEIGHBOR_IP as OWNAS;
};
// 以此类推
Bashimport all; 和 export all; 只是本文为了简单,建议学习《BIRD 与 BGP 的新手开场》 后自己写 filter 更保险
然后您需要将此配置文件添加到每个服务器上
然后输入 birdc c,重载配置,等待几分钟应该就可以在外部 ping 到你内部了(如果你已经有服务器和别人 peer 的话
(顺便说一句,如果您想和我 peer 的话请看这里)
参考文章
感谢以下文章对本小白踏入 DN42 提供了巨大的帮助!
发表回复