適用於 BGP 使用的 Wireguard 隧道

前言廢話

在與他人進行 BGP 時,主流好像都是使用 GRE 隧道比較多。前些時間在研究 iBGP,由於我的其中一端並沒有固定 IP ,所以我打算使用 Wireguard 來打通這個隧道。

但由於 Wireguard 會將這個路由寫進內核裡,導致我踩到了一個大坑,而我當時不知道這將嚴重影響 BGP 運作。爬文將近一個禮拜的時間才發現,特此將方法筆記在這裡。

開始操作

這篇文章會用 IPv6 舉例,但相信聰明的你,也應該有辦法將他配置於 IPv4 上。

伺服器端

主要重點就是告知 Wireguard 不要修改路由,並透過 PostUp 來新增 Peer。

[Interface]
PrivateKey = SERVER_PRIVATE_KEY
ListenPort = 51820
SaveConfig = false
Table = off
PostUp = ip addr add [這端的IPv6位址]/64 peer [對方的IPv6位址]/64 dev %i

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = ::/0

客戶端

其實就也差不多啦,反向操作而已。

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Table = off
PostUp = ip addr add [這端的IPv6位址]/64 peer [對方的IPv6位址]/64 dev %i

[Peer]
PublicKey = SERVER_PUBLIC_KEY
AllowedIPs = ::/0
Endpoint = SERVER_IP_ADDRESS:PORT
PersistentKeepalive = 1

結語

到這邊並使用 wg-quick 將其上線,並嘗試 Ping 看看,這邊就大功告成了。

希望不會有人跟我踩到一樣的坑,然後查很久。QQ