BGP从入门到跑路
好几年前, 当时刚玩vps, 就在想, 加一个ip就要十多二十软妹币, 好贵啊, 能不能直接自己买ip自己用呢? 后来看到论坛有人买/24的ipv4, 一年只要4000, 好便宜啊(虽然我还是买不起)
后来了解到自己买ip自己用, 要有自己的asn, 要有服务器用来宣告, 要有人家愿意让你BGP Session, 感觉好麻烦啊 特别是看到RIPE LIR会费的时候 , 再后来才知道可以找大佬注册小ASN, 又省钱, 又省力. 博主就趁着黑五, 找一个很不错的老外商家(cloudie.sh), 注册了一个ASN还拿到了/40的Ipv6 block, 非常爽.
总结一下, 注册ASN这件事, 主要是耗时耗钱, 但是准备好money以后还是比较简单的, 接下来介绍如何宣告自己拿到的ipv6 然后在bgp.he.net上反复观摩自己, 成为一个真正的BGP萌新 天天漏路油那种
事先准备
- 一个能进行BGP Session的服务器
- 一个ASN
- 一段ipv6 or ipv4
- LOA文件
- IP 所属的网络协调中心创建一个你要广播的inet6num对象
去RIPE 操作一手
当然ripe才上ripe啊, apnic一边玩去
比如我有一个/40的ipv6, 我现在要分/44出来广播, 那么我就去 resource -> ipv6 -> create assignment
制作LOA文件
感谢v.ps的客服提供的经验, 我推荐使用 https://loa.as1003.net 这个网站制作自己的LOA证书(ip 广播授权书), 你想想, 你得想申明这段ip是你的, 然后给商家一份免责说明不是?
以上内容完成以后, 就去找你的服务器提供商, 开个ticket, 让它们帮你配置好BGP宣告吧!
礼貌很重要喔(*^▽^*)
在服务器上安装bird并配置BGP
博主服务器系统版本为ubuntu20的bird版本为1 (BIRD version 1.6.8), 比较老, 推荐安装bird2而不是bird.
但此教程使用bird1来做宣告, 也算是另外一个角度来看东西吧, 其实bird1和bird2语法差别很小, 而且v4和v6可以在一个config里面配, 所以大力推荐使用bird2 , 至于博主为什么不换bird2 因为配好了才发现有bird2的懒狗罢了
apt install bird # 安装 bird1
apt install bird2 # 安装 bird2
修改 /etc/bird/bird6.conf
这个配置文件, 如果你的服务商是vultr, 建议参考文章附录里的几个博主, 它们使用vultr来进行BGP宣告, 与这份配置文件有所不同. 博主使用的服务商是 V.PS
# This is a minimal configuration file, which allows the bird daemon to start
# but will not cause anything else to happen.
#
# Please refer to the documentation in the bird-doc package or BIRD User's
# Guide on http://bird.network.cz/ for more information on configuring BIRD and
# adding routing protocols.
# Change this into your BIRD router ID. It's a world-wide unique identification
# of your router, usually one of router's IPv6 addresses.
router id 你的vps自带的ipv4;
# The Kernel protocol is not a real routing protocol. Instead of communicating
# with other routers in the network, it performs synchronization of BIRD's
# routing tables with the OS kernel.
protocol kernel {
scan time 20;
import none;
# export all; # Actually insert routes into the kernel routing table
}
# The Device protocol is not a real routing protocol. It doesn't generate any
# routes and it only serves as a module for getting information about network
# interfaces from the kernel.
protocol static
{
route 你要宣告的地址段,比如1145:1140:0000::/44 via 你的vps自带的ipv6;
}
protocol device {
scan time 20;
}
protocol bgp xTomBGP
{
local as 你的ASN号;
source address 你的vps自带的ipv6;
import none;
export all;
graceful restart on;
multihop; # 这个有坑, vultr是 multihop 2, 但是v.ps是直连的所以不能设置为2
neighbor 服务商给的那个peer用的ipv6 as 服务商给你peer的ASN;
password "Your BGP Password";
}
修改好你的bird6配置文件, 然后重启 bird6, 注意, 因为bird 1 里面 IPV4 和 IPV6 宣告是分开来的, 在这篇教程当中我们只宣告ipv6, 所以命令应该是:
systemctl restart bird6
# 然后你可以查看你的bird6运行情况
systemctl status bird6
# 如果你要每次开机时, bird6自动启动, 你可以输入以下命令:
systemctl enable bird6
如果你的配置是成功的, 那么输入:
# 在bird1中, ipv4 和 ipv6是分开来的, 这个是查看ipv4连接的
birdc s p
# 这个是ipv6连接的
birdc6 s p
如果显示 Established 那就是宣告成功了!! (〃'▽'〃), 如果是 Active, 或者 Connect, 都是还没宣告成功正在连接哦!
既然已经宣告了, 等待全球路由刷新, 如果 bgp.he.net 上能看到你的asn已经宣告了ipv6, 那就是OK了, 如果想要快的话, 可以看看 bgp.tools
接下来是最爽的使用自己ip上网环节, 我们将设置自己的网卡在走ipv6的时候, 走自己的ipv6!
这里假设你的网卡是eth0, 并且你已经宣告的ipv6块是 1145:1140:aabb::/44
# 这一行将 1145:1140:aabb:6666:6666:6666:6666:6666 这个ip加到eth0网卡上, 这个操作是暂时的, 你重启服务器就会消失, 至于怎么永久配置, 麻烦自己百度一下咯
sudo ip -6 addr add 1145:1140:aabb:6666:6666:6666:6666:6666 dev eth0
# 这一行表达 1145:1140:aabb:6666:6666:6666:6666:6666 这个ipv6, 在eth0上, 要走 服务器商提供给你的网关, 像v.ps, 给你宣告ip用的网关和服务器本身ipv6的网关是不一样的, 所以我们就得这么操作
sudo ip -6 route change default via 服务器商提供给你的网关 dev eth0 proto ra metric 1024 pref medium src 1145:1140:aabb:6666:6666:6666:6666:6666
# 如果你宣告的ip, 走的网关就是你服务器的默认网关, 你可以通过命令
ip -6 r # 来查看你的默认网关, 或者
ip addr # 里面自己找
# 测试上网环节
curl -6 ip.sb
如果出来的结果就是你刚刚配置的1145:1140:aabb:6666:6666:6666:6666:6666, 说明你实名上网成功了!!
✿✿ヽ(°▽°)ノ✿
未完待续, 接下来是选修节目, 加入 LocIX 交换.
感谢 V.PS 买德意志服务器送LocIX接入的福利 什么时候送DE-CIX DUS Port免月费
在加入LocIX之前, 我们先要完善一下你在 Peering DB 上的条目, 这样大家在看到你的时候, 可以通过peeringDB上的条目更了解你的ASN, 然后决定要不要找你peer.
这里帮大家猜一个坑, 在peeringDB注册好, 要关联组织的时候, 只要把自己ASN填进去就好, peeringDB的工作人员审核以后会帮你把关联信息填入的! 非常方便!
然后你会拥有一个漂亮的peer主页, 脑补一下 ->_-> 以后可以写进简历里
第二步
到 LocIX 的面板里, 找一下LocIX分配给你的ip, 大家可以这么理解IX, 你要跟别人交朋友, 那就要去朋友多的地方交朋友效率比较高, IX 分配给你的IP, 相当于你的独家名片, 还记得在conf里面填写的 neighbor 服务商给的那个peer用的ipv6
这个时候, 你就可以用IX分配给你的名片来通过IX和大家交朋友啦!
接下来我们要交的第一个盆友是 LocIX的 Route Servers, 你得先跟IX的工作人员交盆友, 才能靠IX交更多朋友不是?
在Documentation中找到Route Server, 或者访问这个链接
https://manager.dus.locix.network/public-content/routeserver
可以看到这些服务器地址, 把他们全peer了
通过V.PS接入LocIX的话, 工作人员会先给你配置第二个网卡, 这个网卡可以直接连接LocIX, 所以得先给第二个网卡加上 LocIX分配给你的IP like this:
然后配置bird的conf来实现peer, 在bird6.conf里:
请注意这个LocIX_in过滤器是非常粗糙的, 只接受LocIX的表, 更多的目标得你自己去实现!
filter LocIX_in {
if bgp_path.first ~ [202409] then accept; # 只收LocIX的表
reject;
}
protocol bgp LocIXBGP1 {
local as 你的ASN;
source address LocIX分给你的ipv6;
export none;
import filter LocIX_in;
graceful restart on;
neighbor 2a0c:b641:701::a5:20:2409:1 as 202409;
}
protocol bgp LocIXBGP2 {
local as 你的ASN;
source address LocIX分给你的ipv6;
import filter LocIX_in;
export none;
graceful restart on;
neighbor 2a0c:b641:701::a5:20:2409:2 as 202409;
}
依样画葫芦, bird.conf里:
filter LocIX_in_v4 {
if bgp_path.first ~ [202409] then accept;
reject;
}
protocol bgp LocIXBGP1v4 {
local as 你的ASN;
source address LocIX分给你的ipv4;
import filter LocIX_in_v4;
export none;
neighbor 185.1.155.254 as 202409;
}
protocol bgp LocIXBGP2v4 {
local as 你的ASN;
source address LocIX分给你的ipv4;
import filter LocIX_in_v4;
export none;
neighbor 185.1.155.253 as 202409;
}
然后重启bird服务
systemctl restart bird6
systemctl restart bird
最后查看广播情况
birdc6 s p
birdc s p
恭喜你已经成功接入LocIX了!
请开始你辉煌的漏油BGP生涯吧!
欢迎大佬们peer我哦 虽然我还没正经peer过谁 o(╥﹏╥)o
开始反复访问bgp.he.net吧!
文章参考了以下博主
nico, vultr上宣告ipv6
Bird新手教程
Misaka上bird6宣告 有钱我也要买misaka
在 Linux 下通过 BIRD 广播自己的 IPv6
8 条评论
文章的确不错啊https://www.cscnn.com/
看的我热血沸腾啊https://www.237fa.com/
怎么收藏这篇文章?
叼茂SEO.bfbikes.com
不错不错,我喜欢看
博主真是太厉害了!!!
您现在使用的服务器是vps还是独立的云服务器?我这边发现你所使用的ip向我们的服务器发送过攻击,所以来确认一下
腾讯云轻量