文章介绍:在开源篇6中,我们是利用俩台vyos之间建立BGP,通过bgp学习动态路由信息,实现路由分流功能,但是有网友说这样操作较复杂,所以本篇文档将这一部分配置步骤简化,只需要在本地的vyos中配置几条命令即可实现路由分流,实现的原理还是跟之前一样,只不过我将程序打包成了docker镜像,利用vyos内的container功能实现,当前docker镜像是默认拉取国内全部的路由信息,可以把vyos的默认路由指向海外出口隧道,通过bgp学习的IP路由信息走国内。

一、往期vyos文章

点我参观

二、创建config.ini文件

config.ini文件是用来定义bgp相关信息的,如果需要详细了解请查看下面的链接

yangpin97/BGPServer

2.1、创建config.ini文件

sudo nano /config/config.ini

2.2、粘贴config.ini配置

config.ini配置说明,其中100.66.66.1和100.66.66.2可以自定义,10.225.97.1是本地vyos的出口网关ip,ASN也可以自定义

  1. [server][peer]:这些是配置文件中的节(section)标识符,用于指定下面列出的配置项属于哪个设备或实体。通常,在BGP配置中,服务器指的是你正在配置的本地设备,而对等体指的是与本地设备直接相连的其他BGP路由器。
  2. RouterId = 100.66.66.2:这是本地设备(服务器)的路由器ID。路由器ID是在BGP中用于识别路由器的唯一标识符,通常是路由器的一个IP地址。在这里,它被设置为 100.66.66.2
  3. ASN = 65000:这是本地设备(服务器)的自治系统号(Autonomous System Number,ASN)。ASN是一个用于在互联网上唯一标识一个自治系统(AS)的32位数字。在这里,ASN被设置为 65000
  4. NextHop = 10.225.97.1:这是BGP路由更新中指定的下一跳(Next Hop)IP地址。下一跳指的是接收到某个目的地路由的路由器应该将数据包发送到的下一个路由器的IP地址。在这里,它被设置为 10.225.97.1,因为我们是拉取CN的中国IP路由,所以需要把bgp路由下一跳丢给本地出口网关。
  5. UpdateSource = 100.66.66.2:这指定了BGP路由更新消息的来源地址。也就是说,当本地设备发送BGP更新消息时,它会使用 100.66.66.2 这个IP地址作为源IP地址。
  6. IP = 100.66.66.1:这是对等体(peer)的IP地址。对等体是与本地设备直接相连的另一个BGP路由器。在这里,它被设置为 100.66.66.1
  7. ASN = 65000:这是对等体(peer)的自治系统号(ASN)。它表示对等体所属的自治系统号,这里也是 65000
[server]
RouterId = 100.66.66.2
ASN = 65000
NextHop = 10.225.97.1
UpdateSource = 100.66.66.2

[peer]
IP = 100.66.66.1
ASN = 65000

三、配置容器

3.1、配置容器网络

与上面的配置文件中的IP对立,系统默认100.66.66.1是vyos的pod-bgpserver接口ip,100.66.66.2是容器内使用的ip,所以我这里写的是30位掩码

set container network bgpserver prefix '100.66.66.0/30'

3.2、拉取容器镜像

run add container image docker.io/yangpin/bgpserver:cn

3.3、查看容器镜像

run show container image

yydy_2024-05-29_18-38-05

3.4、容器配置

  1. set container name bgpserver cap-add 'net-admin'set container name bgpserver cap-add 'sys-admin':
    这两个命令分别给容器 "bgpserver" 添加了两个特权(capabilities),分别是 'net-admin' 和 'sys-admin'。这些特权通常用于控制容器对主机系统的访问权限,'net-admin' 可以允许容器对网络进行管理,'sys-admin' 则允许容器对系统进行管理。
  2. set container name bgpserver host-name 'bgpserver':
    这个命令设置了容器 "bgpserver" 的主机名为 'bgpserver'。主机名是容器在网络中识别自身的名称。
  3. set container name bgpserver image 'docker.io/yangpin/bgpserver:cn':
    这个命令指定了容器 "bgpserver" 所使用的镜像,镜像的名称为 'docker.io/yangpin/bgpserver:cn'。这个镜像可能是一个 BGP 服务器的镜像,来源于 'docker.io',作者为 'yangpin',版本标记为 'cn'。
  4. set container name bgpserver network bgpserver address '100.66.66.2':
    这个命令为容器 "bgpserver" 设置了一个网络配置,指定了容器在 'bgpserver' 网络中的 IP 地址为 '100.66.66.2'。这个 IP 地址可能用于容器与其他设备或容器通信。
  5. set container name bgpserver memory '1024':
    这个命令设置了容器 "bgpserver" 的内存限制为 1024MB。这限制了容器能够使用的内存量,进过测试拉取中国大陆IP路由时回占用本机650~750MB的内存空间。
  6. set container name bgpserver restart 'always':
    这个命令设置了容器 "bgpserver" 在退出时总是自动重启。这可以确保容器在意外退出时能够重新启动,保持服务可用性。
  7. set container name bgpserver volume config destination '/opt/config.ini'set container name bgpserver volume config source '/config/config.ini':
    这两个命令分别设置了容器 "bgpserver" 中一个卷(volume)的配置。它们指定了一个名为 'config' 的卷,其中 'destination' 指定了容器中卷的挂载点为 '/opt/config.ini',而 'source' 则指定了宿主机中卷的来源路径为 '/config/config.ini'。这个卷通常用于将容器内的配置文件与宿主机上的文件进行关联,以实现配置的持久化和共享。
set container name bgpserver cap-add 'net-admin'
set container name bgpserver cap-add 'sys-admin'
set container name bgpserver host-name 'bgpserver'
set container name bgpserver image 'docker.io/yangpin/bgpserver:cn'
set container name bgpserver network bgpserver address '100.66.66.2'
set container name bgpserver memory '1024'
set container name bgpserver restart 'always'
set container name bgpserver volume config destination '/opt/config.ini'
set container name bgpserver volume config source '/config/config.ini'

四、vyos配置

4.1、vyos基础配置

  1. set interfaces ethernet eth0 address '10.225.97.9/24':
    这个命令配置了以太网接口 'eth0' 的 IP 地址为 '10.225.97.9',并设置了子网掩码为 '/24',表示子网中有 24 位是网络位。
  2. set nat source rule 100 outbound-interface name 'eth0':
    这个命令创建了一个 NAT 出口规则,编号为 '100',并指定了出口接口为 'eth0'。这意味着所有从 'eth0' 接口发出的数据包都会受到 NAT 规则的影响。
  3. set nat source rule 100 source address '100.66.66.0/30':
    这个命令指定了 NAT 出口规则 '100' 的源地址为 '100.66.66.0/30',表示所有来自该地址范围的数据包都会受到 NAT 规则的影响。
  4. set nat source rule 100 translation address 'masquerade':
    这个命令将 NAT 出口规则 '100' 的转换地址设置为 'masquerade',这意味着出站数据包将使用设备的 IP 地址进行转换,以隐藏内部网络的真实 IP 地址。
  5. set protocols static route 0.0.0.0/0 next-hop 10.225.97.6:
    这个命令设置了静态路由,将目标网段为 '0.0.0.0/0'(所有目的地)的数据包转发到下一跳地址 '10.225.97.6'。这是一个默认路由,用于指示所有不在本地网络范围内的数据包应该发送到指定的下一跳地址进行转发。
  6. set system name-server '223.5.5.5':
    这个命令配置了系统的 DNS 服务器,将 DNS 查询发送到 '223.5.5.5' 进行解析。这个地址是一个 DNS 服务器的 IP 地址,用于解析域名到对应的 IP 地址。
set interfaces ethernet eth0 address '10.225.97.9/24' 
set nat source rule 100 outbound-interface name 'eth0'
set nat source rule 100 source address '100.66.66.0/30'
set nat source rule 100 translation address 'masquerade'
set protocols static route 0.0.0.0/0 next-hop 10.225.97.6
set system name-server '223.5.5.5'

4.2、vyos配置bgp

  1. set protocols bgp neighbor 100.66.66.2 address-family ipv4-unicast soft-reconfiguration inbound:
    这个命令配置了 BGP 邻居 '100.66.66.2',并启用了 IPv4 单播地址族,并启用了入站软重配置。软重配置允许路由器在不重新建立 BGP 邻居关系的情况下重新计算入站路由。
  2. set protocols bgp neighbor 100.66.66.2 remote-as '65000':
    这个命令设置了 BGP 邻居 '100.66.66.2' 的远程自治系统号(Remote AS)为 '65000'。这是指定邻居路由器所属的自治系统号。
  3. set protocols bgp neighbor 100.66.66.2 update-source '100.66.66.1':
    这个命令设置了 BGP 邻居 '100.66.66.2' 的更新源地址为 '100.66.66.1'。这指定了路由器用于与邻居路由器交换 BGP 更新消息的本地地址。
  4. set protocols bgp system-as '65000':
    这个命令设置了本地路由器的自治系统号(Local AS)为 '65000'。这是本地路由器所属的自治系统号。
  5. set protocols bgp timers holdtime '15':
    这个命令设置了 BGP 连接的持续时间(Hold Time)为 15 秒。持续时间是指在没有收到邻居路由器的 BGP Keepalive 消息时,本地路由器将保持 BGP 邻居关系的最长时间。
  6. set protocols bgp timers keepalive '3':
    这个命令设置了 BGP Keepalive 消息的发送间隔为 3 秒。Keepalive 消息用于维持 BGP 邻居关系的活跃状态,以确保网络路由信息的及时更新。
set protocols bgp neighbor 100.66.66.2 address-family ipv4-unicast soft-reconfiguration inbound
set protocols bgp neighbor 100.66.66.2 remote-as '65000'
set protocols bgp neighbor 100.66.66.2 update-source '100.66.66.1'
set protocols bgp system-as '65000'
set protocols bgp timers holdtime '15'
set protocols bgp timers keepalive '3'

五、查看bgp状态

run show bgp summary

yydy_2024-05-29_18-43-21

六、查看路由表信息

6.1、查看全局路由表

run show ip route

yydy_2024-05-29_18-48-23

6.2、查看指定路由

海外8.8.8.8走默认路由,国内223.5.5.5走bgp路由

run show ip route 8.8.8.8
run show ip route 223.5.5.5

yydy_2024-05-29_18-51-39