嘗試利用Pathvector使用Bird2實現iBGP

這篇文章的性質,將偏向”紀錄”這個過程,並不是教學
本人因為在網路上搜尋不太到有人拿Pathvector來操作iBGP
所以這篇就來記錄一下,我是如何操作的

首先我在PVE中,創建一個新的vm,配置大概如下

  • CPU: 100%
  • RAM: 512MB
  • Disk: 15G
  • System: Dabian 11

接著,我們按照Pathvector的官方文黨,安裝好以下這些套件
gortr、bgpq4、keepalived、pathvector本體、bird2、wireguard
這邊可以直接複製下方指令進行安裝

apt update
apt install gortr -y
apt install bgpq4 -y
apt install keepalived -y
curl https://repo.pathvector.io/pgp.asc > /usr/share/keyrings/pathvector.asc
echo "deb [signed-by=/usr/share/keyrings/pathvector.asc] https://repo.pathvector.io/apt/ stable main" > /etc/apt/sources.list.d/pathvector.list
apt update && apt install -y pathvector
apt install bird -y
apt install wireguard -y

接下來,進到/etc/pathvector.yml,把該填寫好的資訊都填寫上去
這邊要注意的是,有畫紅線的地方,需自行填寫自己的資訊

然而,因為這邊是我家,所以source6後面我寫::2
prefixes的地方,為了要讓IXVM知道::2/64在我家
所以這邊不能填寫/48,要寫成/64>< 我一開始就是寫成/48,讓IXVM收不到我的表

下方就是打上wireguard,如何配置可以參考CRE哥哥的Blog –> 適用於 BGP 使用的 Wireguard 隧道
這邊要提醒的是,在打p2p的時候,IPv6要使用Private的IP
假如說我今天要做iBGP的段是2a12:dd47:3026::/48
那麼我在打p2p的時候,段就不能用這個段
所以我一律都是去Gemini生成一段IPv6 /48的段出來給我做Private IP

可以互相ping到,就表示成功了

接著把上面的打p2p的IP,填入pathvector config中,neighbors裡面

填好後兩邊都reload pathvector的config
輸入以下指令

pathvector g

reload好後,輸入以下指令,查看有沒有連線成功

birdc s p

如果成功,後面將會顯示Established
如果是Active,又或者出現其他的,那可能需要查看步驟是否哪裡做錯

這時候我們可以使用birdc s p a [對方的連線protocol]來查看發表情況
從下列這張表,我們可以看到
我家發了一張表出去,收到了IXVM發給我的全表
但是IXVM那邊沒有收到我家發出去的表
那這是為甚麼呢?
因為IXVM那邊import現在正在驗段的RPKI
因為我是發/64給IXVM,我這個段的RPKI只有48,所以會invaild rejected
那這時候,我們就必須手動調整bird的設定

輸入以下指令

nano /etc/bird/ASxxxxxx_xxxx.conf

把系統自動驗證的東西,手動mark掉
好了後儲存退出
打上birdc c,reload bird的config

nice,現在兩邊都成功收表,成功發表

這時候你會發現,欸?,我不是都已經收表了,為甚麼還是沒辦法用自己的段mtr出去
那是因為你還沒將自己的段加到網卡中
輸入指令

ip addr add [自己的段::2/64] dev [你的網卡]

添加完後,這時候我們可以來查看有沒有添加成功
輸入指令

ip a

確認以下資訊

接著讓我們mtr dns.hinet.net一下

耶,我們成功在家中,使用Pathvector來操作iBGP

這邊跟大家科普一下小知識
如果我想直接用/48的話,就不要打iBGP,直接打L2的Tunnel會快蠻多的
像是gretap、vxlan這些
iBGP主要是L3,L3層面需要有路由才能走

例如,如果我像上面用::2/48的話
從我家對ixvm發::2/64
我需要讓ixvm知道::2在p2p的private IP後面
不然ixvm又不知道::2在哪裡,ARP表又沒有
這,就叫做L3交付,透過路由的部分
L2交付就是打ARP能過的隧道交付,不需要路由
廣播甚麼都能過的隧道

如果有甚麼寫的不對的地方,歡迎在下方留言區留言! 讓我知道我哪裡有做錯了!
過程感謝Jord、CRE提供協助。

2 則留言

  1. 您好,能做一篇使用bird2建iBGP將上游廣播出去的IPv6接回自己家
    上游例如Vultr廣播出去的IP打隧道到家中Bird軟路由
    能在家中使用自己的IPv6上網、開服務
    想了解雙方bird設定

    感謝

    • 您好,由於我手邊沒有Vultr的機器,可能沒辦法嘗試
      但如果是想使用Vultr收表的話,可以參考這篇
      https://blog.cre0809.com/archives/727/

      正確收表之後,使用像是wireguard、GRE這類的隧道打回家
      然後將您的電腦IPv6預設匝道指向那台收表的vm
      基本上應該就可以使用IPv6上網囉!

      那上面有提到想了解雙方bird設定
      雖然我的架構也是用bird,但我這邊是使用控制bird的Pathvector
      bird設定這邊可能還要再參考其他人的文章,這樣

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *