MENU

在自家使用ROS宣告ipv6

之前介绍过通过tunnelbroker提供的bgp tunnel不借助isp宣告ipv6,本篇则介绍如何通过ros实现自己这一套方案,本套方案的优点为不再使用第三方提供的bgp tunnel可以自由选择服务器位置(只要其支持bgp),自家和服务器之间的连接可以自己决定,部分方法不再需要自家有公网ip

准备

  • 一个可以进行bgp的kvm或xen服务器(本篇使用vserver提供的vps)
  • 至少一个提供transit的上游
  • 一个ipv6子网

整个流程

宣告有2种方案分别为:

  • vps通过public asn和上游建立peer,再通过private asn和自家建立peer,vps像上游发送前缀时删除private asn
  • vps通过public asn和上游建立peer,再通过public asn和自家建立peer(igp)

本次将介绍第一种方法,private asn可以随意挑一个,本文将使用64554.

ros支持的链接方式就那么几个,无法自行扩展,自家有公网ip可以尝试使用eoip gre sit等隧道,自家没有公网ip或ip为动态其不想频繁去vps更改endpoint的话可以用vpn方式,支持的有openvpn pptp l2tp sstp等,本次则采用sstp和vps建立连接

vps配置1

routeros安装方法本篇叙述,可自行查找方法.

通过winbox链接到vps后点击system->package->安装或启用ipv6模块,然后重启
重启后再次链接到vps,然后点击ppp->interface,点击加号选择sstp server binding,然后设置一个用户名(接下来要用到),然后点击ok
然后再ppp的窗口中选择secrets添加一个账户,用户名为刚才设置的用户名,密码自行定义,然后确定

然后到左边菜单的ipv6->address,点击加号添加一个ipv6的子网,这个子网随意,可以是互联网上任意一块保留的或未分配的子网,也可以是自己的其它子网,此子网并不需要宣告,只要不是回环子网即可,这里用2019::1/64,interface选择刚刚设置的sstp server bindng,设置好后点击ok

然后开始配置bgp
左边菜单选择routing->bgp,点击加号创建一个instance,名称自定,as号码填写自己的public asn,router id填写自己的公网ipv4,然后点击ok

然后创建过滤规则,如果只和自家还有一个上游peer,那么此步骤可忽略,如果和多个as建立对等的话这一步是不可忽略的.

本次将创建一个只允许自己前缀的规则
点击左边菜单routering->filters,点击加号创建规则,chain自己定义但要记住,本次使用self-prefix,然后下面的prefix输入自己的ipv6前缀
,前面的方块切记不要点击,然后下面的protocol选择bgp,然后上面选项卡切换到actions,将里面的action改为accept,然后保存

然后回到filters选项卡再创建一个规则,chain要和上一个保持一致,然后直接切换到actions将里面的action改为reject

此时self-prefix实现了只允许特定前缀.

然后回到routeing->bgp,点击peers设置和上游的对等信息,点击加号创建新对等,名称随意,instance选择刚刚自己建立的,remote addressremote as分别设置为上游提供的对等ipv6和asn,multihop根据上游要求自行选择或不选,tcp md5 key为bgp密码,根据上游要求自行输入或不使用,在下面的out filter中选择刚刚设置的self-prefix,然后勾选下面的remove private as,然后切换到advanced选项卡将ipv6勾选,然后点击ok,之后确认是否和上游建立peer,确认无问题后我们开始设置自家的路由

自家路由配置1

自家路由同样适用的ros,先和vps建立连接,选择左边菜单的interfaces点击加号创建一个sstp client,名字随便,切换到dial out 其中connect to输入vps的ip,下面userpassword输入刚刚vps里设置的帐户名和密码,然后下面的verfy server address form certificate取消勾选,然后点击apply,然后点击status确认是否连接,并记下local address,然后点击左边菜单ipv6->address,点击加号添加子网,address则为刚刚vps设置的那一段内的任意地址,这里使用2019::2/64,instance选择刚刚的sstp client,此时在这个sstp链接中,2019::1为vps的地址,2019::2为自家路由的地址

然后点击左边才的routeing->bgp,点击加号创建一个instance,名称随意,as则为要使用的private as,这里使用64554,然后router id设置为刚刚sstp clientstatus显示的local address,然后点击ok,然后切换到peer选项卡,点击加号创建一个peer,名称随意,instance选择刚刚自己创建的那个,remote address设置为2019::1,remote as设置为自己的public asn,然后切换到advanced勾选ipv6,然后点击ok,回到routeing->networks,点击加号添加自己要宣告的那段ipv6前缀,然后点击ok
然后回到vps继续配置

vps配置2

点击左边菜单routeing->bgp,切换到peer选项卡,点击加号添加peer,name随意,instance选择自己刚才创建的instance,remote address设置为2019::2,remote as设置为自己刚刚的private asn也就是64554,然后切换到advanced选项卡勾选ipv6然后点击ok,然后检查自己vps和自家路由的peer无问题后,则宣告完成
此时通过外界进行路由追踪则可以看到宣告的ipv6将出现路由信息.

问题排查

首先隧道或vpn正常连接为宣告的前提,首先要排查vps和自家路由间的ipv4以及自定义ipv6的ping是否正常,若不正常则应当检查vpn或隧道连接的问题

若外界可以看到路由信息,但在vps上游那里中断则检查vps的ipv6 forward是否已经启用,未启用则需要启用

若外界没有路由,则首先检查vps中和自家路由的peer,打开和自家路由建立的peer详情,切换到status,查看updates received是否为0,为0则自家路由没有宣告前缀,如果不为零再查看和上游建立的peer详情,切换到status,查看updates sent是否为0,若为0则检查vps的filter是否设置正确,若不为0,先检查peer的general里的remove private as是否已经勾选,如果勾选则表示vps配置正确,已经将宣告的子网发送给了上游,此时应当联系上游排查问题.

其它备注

  • 所有的和private as建立的peer都不应当勾选remove private as
  • 所有和public as建立的peer都应当勾选remove private as
996.icu 996.icu