天天看點

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

背景:

早期伺服器集中于騰訊雲,開始是傳統網絡。後面是自定義的私有網絡vpc.當然了vpc中還有容器網絡,容器的網絡方案使用了預設的Global Router,并沒有使用VPC-CNI的容器網絡與雲主機網絡在同一個 VPC 内的方案(騰訊雲官方文檔還有了Cilium-Overlay 的方案,恩還有個測試環境的k8s叢集是kubeadm自建的叢集網絡插件用的cilum).今年45月份有些新業務又跑在了阿裡雲上面,叢集環境直接用了阿裡雲的ACK PRO。網絡插件使用了Flannel ,也沒有使用阿裡雲的Terway。現在的需求就是要把兩個網絡打通!

看了一下網上的各種方案:

1. 騰訊雲與阿裡雲如何建立VPN連接配接(不過貌似阿裡雲側vpn鏡像找不到了,故未能跑通)

2.專線?阿裡雲騰訊雲都有專線服務https://cloud.tencent.com/developer/article/1731806?from=15425。這樣的也可以嘗試一下?

3.WireGuard米開朗基楊大佬寫過一系列的文章;如:基于 WireGuard 和 OpenVPN 的混合雲基礎架建構設

我也選擇了WireGuard的方案.....

以下測試都基于新環境搭建,沒有敢在現有的環境去搞......

終極實作目标

**三個vpc **

就先以ABC命名吧 !A B 網絡雙向互通,c網絡可以連接配接b,A網絡可以連接配接C?初步規劃每個叢集起碼有2台伺服器以上,可以ping通ssh目标網絡伺服器?恩 還可以在每個網絡k8s叢集中搞一個nginx service,用curl掉一下測試應用的通路?初步就算那麼想的!

注:所謂互通都包括容器網絡的通信!

VPC子網規劃

還是依賴與這個神奇的工具:http://www.ab126.com/web/3552.html,還是拿10.0.0.0/8去分了。A網絡騰訊雲上海vpc網絡設定為10.10.0.0/16, B網絡阿裡雲網絡10.20.0.0/16,C網絡騰訊雲北京VPC10.40.0.0/21

關于A網絡:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

注意:建立子網subnet的時候手殘了,沒有注意本來wireguard-shanghai3對應上海三區,wireguard-shanghai4對應上海四區的,沒有留意,就做成這樣的了......

關于B網絡

阿裡雲B網絡建立VPC也建立了4個可用區。但是他的定義都是叫什麼交換機!,如下:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

注意:當然了B網絡也選擇了上海區域,與騰訊雲A網絡處于同一地區!

關于C網絡

覺得A,B網絡浪費資源了....就修改了一下子網路遮罩:

最終網段規劃為10.40.0.0/21

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

subset子網如下:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

關于容器的網絡

A網絡容器網絡

A網絡容器網絡CIDR172.16.0.0/16,Service CIDR172.16.252.0/22(其實就是172.16.0.0/16)

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

B網絡容器網絡-以及阿裡雲ack叢集的建立

恩 覺得容器網絡 /16整段也有點浪費,修改一下就取172.17.0.0/20吧,本來就是示範的這些資源也都夠用了,實際生産環境中,如果需要考慮多地域,or多叢集,還考慮互通,應該合理劃分子網資源!

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

由于阿裡雲容器服務需要填寫Pod CIDR Service CIDR開始本來想直接分兩個網段的但是操作失誤删除了叢集重建沖突了(開始用的阿裡雲自己的那作業系統,安裝wireguard不順暢,删除更換系統為centos7了!),就把172.17.0.0/20劃分了四個子網取Pod CIDR172.17.8.0/22 Service CIDR172.17.12.0/22

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

c網絡容器網絡-以及tke叢集的簡單建立

以網絡c為例:容器網絡依然從172.17.0.0/16子網20去分吧!選擇了172.17.16.0/20段

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

建立tke叢集可以參考下圖:

打開tke控制台,選擇區域北京,建立:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

輸入叢集名稱(個人定義了),關鍵是叢集網絡選擇前面建立的C網絡(北京有好幾個vpc網絡呢),配置容器網絡172.17.16.0/20

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

比較喜歡TKE容器網絡的設定好帶能搞在一個段裡......阿裡雲的還要算一下。比較麻煩了,系統選擇了ubuntu20.04,也不去用騰訊雲自己的TencentOS Server了,怕跟阿裡雲的系統一樣安裝wireguard有問題(其實可以參考非标準核心的安裝方式,懶得看了)......

下一步,特意添加了兩台cvm且不在同一個subset:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

預設下一步吧選擇自己的登陸方式,我這裡選擇了自己的ssh-key方式!

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

可選元件就直接預設了,畢竟我這裡主要是示範wireguard組網!下一步:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

同意,完成等待建立ing......

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

c叢集 兩台server 10.40.2.6将安裝**wireguard,**10.40.3.14後續作測試。

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

wireguard的安裝

理一遍關系

注:阿裡雲ack作業系統智能選擇centos7與alios 阿裡雲系統核心不是标準核心故作業系統我使用的centos7,騰訊雲tke叢集我用的是ubuntu 20.4系統!

每個個叢集都初始保證兩台server以上

A叢集資源:

vpc網絡資源10.10.0.0/16

容器網絡資源:172.16.0.0/16

主機名 ip subset 是否安裝wireguard
VM-4-8-ubuntu 10.10.4.8 上海二區
VM-4-17-ubuntu 10.10.4.17 上海二區
VM-2-4-ubuntu 10.10.2.4 上海一區
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

B叢集資源:

vpc網絡資源10.20.0.0/16

** 容器網絡資源:Pod CIDR172.17.8.0/22 Service CIDR172.17.12.0/22(17.17.0.0/20)**

主機名 ip 交換機(subset) 是否安裝wireguard
iZuf6fxoj4zcqlpe8jupv2Z 10.20.4.42 上海 可用區L(wireguard-shanghai4)
Zuf6fxoj4zcqlpe8jupv3Z 10.20.4.43 上海 可用區L(wireguard-shanghai4)
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

C叢集資源:

vpc網絡資源10.40.0.0/21

** 容器網絡資源:Pod CIDR172.17.16.0/20 Service CIDR172.17.28.0/22**

主機名 ip subset 是否安裝wireguard
VM-2-16-ubuntu **10.40.2.16 ** 北京二區
** **VM-3-16-ubuntu **10.40.3.16 ** 北京三區
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

前置條件:

防火牆都是關閉的,代理伺服器(安裝wireguard節點)開啟了ip轉發

保證net.ipv4.ip_forward = 1

sysctl -p|grep ip_forward
net.ipv4.ip_forward = 1
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A C網絡各一節點安裝wireguard

初步選擇在10.10.4.8這台cvm安裝wireguard

注:由于A C都是tke,且系統相同,我的安裝示範都是在10.40.2.16節點上!主要是開始操作的時候沒有截圖......

root@VM-2-16-ubuntu:~# uname -a
Linux VM-2-6-ubuntu 5.4.0-121-generic #137-Ubuntu SMP Wed Jun 15 13:33:07 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
           

核心5.4

sudo apt upgrade
sudo apt install wireguard-dkms wireguard-tools -y
sudo mkdir /etc/wireguard/keys
cd  /etc/wireguard/keys
sudo wg genkey > vpn-gw.key
sudo wg pubkey < vpn-gw.key > vpn-gw.pub


           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

檢查下 wireguard 子產品是否已經加載,如果沒有加載,試下執行 modprobe wireguard加載子產品

root@VM-2-16-ubuntu:/etc/wireguard/keys# lsmod |grep wire
root@VM-2-16-ubuntu:/etc/wireguard/keys# modprobe wireguard && lsmod | grep wireguard
wireguard             212992  0
ip6_udp_tunnel         16384  1 wireguard
udp_tunnel             16384  1 wireguard
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

注意:一般推薦是更新一下核心到linux-kernel 5.6以上,5.6kernel已經内置wireguard的mod,but鑒于叢集的穩定性,我沒有更新核心

B網絡一節點安裝wireguard

B網絡伺服器系統為centos7故yum操作安裝wireguard:

yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum install yum-plugin-elrepo
yum install kmod-wireguard wireguard-tools
#檢查下 wireguard 子產品是否已經加載,如果沒有加載,試下執行 modprobe wireguard加載子產品
modprobe wireguard
modprobe wireguard && lsmod | grep wireguard

           

注:關于核心是否更新看個人意願。或者找一個額外機器更新....為了維護叢集穩定性,未能更新核心

A B網絡互通

基本就是實作下圖這樣B網絡中容器and vpc網絡通過cvm 10.20.4.42的公網ip 到A網絡10.10.4.8的公網Ip 路由通路A網絡中資源,反之A網絡容器and vpc網絡資源通過10.10.4.8的公網ip到B網絡的10.20.4.42的公網ip路由通路B網絡中資源(自己的了解,可能語言表達有誤)

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

注意:10.30.0.1/24 10.10.30.2/24為wareguard網絡,避免與各個網絡位址沖突!

名詞解釋:

  • Interface

Address:這個是開啟wg之後本機的隧道IP

ListenPort:這個就設定51820了忘了看了哪個文章的了

PrivateKey:本機的私鑰/etc/wireguard/keys/vpn-gw.key

  • Peer

Public Key: 服務端(就是要連接配接的網絡的有公網ip,安裝wireguard的節點)的公鑰即需要連接配接的對方10.20.4.42的/etc/wireguard/keys/vpn-gw.pub

Allow IPs: 需要走隧道的IP段, 一般包含隧道自身IP段, 以及要借道隧道的IP段, 但是這裡設定并不會産生對應的route

Endpoint: 服務端的IP和端口

Persis.Keepalive: 25 保持活動的時間間隔

A網絡10.10.4.8節點配置

10.10.4.8節點wg0.conf配置

cat /etc/wireguard/ wg0.conf

[Interface]
   Address = 10.30.0.1/24
   ListenPort = 51820
   PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx
   SaveConfig = false
   MTU = 1420
   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.0/24,10.20.0.0/16,172.17.0.0/20
[Peer]
   # Client1: aliyun-shanghai
   PublicKey = xxxxxxxxxxxxxxxxxxxxxxxx
   Endpoint = xxxxxxxx:51820
   AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
   PersistentKeepalive = 25

           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

B網絡10.20.4.42節點配置

10.20.4.42節點wg0.conf配置

cat /etc/wireguard/ wg0.conf

[Interface]
   Address = 10.30.0.2/24
   ListenPort = 51820
   PrivateKey = xxxxxxxx
   SaveConfig = false
   MTU = 1420

   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
   # Client1: MacOS-Desktop
   PublicKey = xxxxxxx
   Endpoint = xxxxx:51820
   AllowedIPs = 10.30.0.2/24,10.10.0.0/16,172.16.0.0/16
   PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxx
AllowedIPs = 10.30.0.1/16,10.10.0.0/16,172.16.0.0/16
           

啟動服務:

注: 10.20.4.42 10.10.4.8都啟動服務,關閉服務down隻是示範,保持服務up啟動!

cd  /etc/wireguard
wg-quick up wg0
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

同理關閉服務就是:

wg-quick down wg0
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

測試安裝wireguard節點之間的互相通信:

10.10.4.8 ping 10.20.4.42

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

10.20.4.42 ping 10.10.4.8

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

vpc内自定義路由

如何ping 通vpc内其他cvm等網絡資源呢?

登陸騰訊雲背景私有網絡控制台找到對應vpc路由表,添加到B網絡的路由(關于172.17.0.0/16網段并沒有與B完全比對.....C網絡的容器網絡我也會路由到這裡就先這樣寫了)

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

同理,阿裡雲背景,打開路由表

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

将下一條指定到伺服器i-uf6fxoj4zcqlpe8jupv2即10.20.4.42節點

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

測試一下其他節點的互通:

從A網絡開始開始:

10.10.4.17 ping 10.20.4.42 10.20.4.43

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

換一個subset:

10.10.2.4 ping 10.20.4.42 10.20.4.43

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

可以在A叢集10.10.4.8 tcpdump看一下icmp包的抓包:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

反之B網絡測試:

10.20.4.43 ping 10.10.4.8 10.10.4.17 10.10.2.4

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

AB 容器網絡and vpc的互通:

A網絡run 一個nginx deployment 并開啟service:

沒有開啟内網通路,開啟一下吧,否則都沒有辦法用kubectl,将生成檔案内容copy到A叢集任一節點使用者家目錄下./kube/config檔案中(當然了可以不開啟,直接控制台操作)

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

可以kubectl run or 控制台建立一個nginx鏡像就好 主要是建立一個service:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

B網絡伺服器對A網絡容器網絡的連通性測試

  • B網絡伺服器pingA網絡 nginx pod service ip
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
  • B 網絡伺服器curl nginx pod service ip
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

B 網絡叢集建立pod 通路A 網絡vpc and容器網絡中應用:

kubectl run php --image=richarvey/nginx-php-fpm
           

注意:可以随便找個帶ping curl的鏡像,這個鏡像我是用習慣了

[root@iZuf6fxoj4zcqlpe8jupv2Z wireguard]# kubectl exec -it php bash

           
  • B網絡叢集中pod ping A網絡vpc cvm位址
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
  • B集網絡叢集pod ping A網絡叢集 中nginx pod service
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
  • B集網絡叢集pod curl A網絡叢集 中nginx pod service
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A網絡伺服器對B網絡容器連通性測試

B網絡建立nginx deployment svc

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
  • 同理A 網絡cvm ping B網絡容器叢集nginx pod svc ip
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
  • 同理curl 測試

curl就拿一台cvm測試了。。。。。

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A 網絡叢集建立pod 通路B網絡vpc and容器網絡中應用:

kubectl run php --image=richarvey/nginx-php-fpm
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
root@VM-4-17-ubuntu:~/.kube# kubectl exec -it php bash
bash-5.1# ping 10.20.4.42
bash-5.1# ping 10.20.4.43
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

ping 容器網絡

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

C連接配接B連通性測試

配置類:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

由圖中關系可見需要在10.20.4.42節點允許10.30.0.3/24的通信

B叢集10.20.4.42節點wg0.conf增加10.30.0.3相關設定

[Peer]
PublicKey = xxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.3/24
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
[root@iZuf6fxoj4zcqlpe8jupv2Z wireguard]# wg-quick down wg0
[root@iZuf6fxoj4zcqlpe8jupv2Z wireguard]# wg-quick up wg0

           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

C叢集10.40.2.16節點:

root@VM-2-16-ubuntu:/etc/wireguard# pwd
/etc/wireguard
root@VM-2-16-ubuntu:/etc/wireguard# cat wg0.conf
[Interface]
   Address = 10.30.0.3/24
   ListenPort = 51820
   PrivateKey = xxxxxxxxxxxxxxxxxxxxxx
   SaveConfig = false
   MTU = 1420

   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
   # Client1: aliyun-shanghai
   PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxx
   Endpoint = xxxxxxxxxxxxxx:51820
   AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
   PersistentKeepalive = 25
           
root@VM-2-16-ubuntu:/etc/wireguard# wg-quick up wg0
           

C叢集cvm ping B叢集vpc and nginx pod svc

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

C叢集建立pod ping B叢集網絡 and 容器網絡資源

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

C 叢集其他節點ping B叢集網絡 and 容器網絡資源

en 登陸另外一節點10.40.3.16 ping B叢集節點不通?

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

恩 依然是路由的問題,找到vpc 路由表,添加路由

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

curl就稍微看一眼了

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

B叢集ping C叢集網絡 and 容器網絡資源

測試一下就好了....不通就是對的

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A連接配接C連通性測試

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

配置類

C叢集10.40.2.16節點

root@VM-2-16-ubuntu:/etc/wireguard# cat wg0.conf
[Interface]
   Address = 10.30.0.3/24
   ListenPort = 51820
   PrivateKey = xxxxxxxxxxxxxxxxxxxxx
   SaveConfig = false
   MTU = 1420

   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
   # Client1: aliyun-shanghai
   PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxx
   Endpoint = xxxxxxxxxxxxx:51820
   AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
   PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.1/24

           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

wg-quick重新開機wg0服務

root@VM-2-16-ubuntu:/etc/wireguard# wg-quick down wg0
root@VM-2-16-ubuntu:/etc/wireguard# wg-quick up wg0
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A叢集10.0.4.8節點:

root@VM-4-8-ubuntu:/etc/wireguard# cat wg0.conf 
[Interface]
   Address = 10.30.0.1/24
   ListenPort = 51820
   PrivateKey = xxxxxxxxxxxxxxxxxxx
   SaveConfig = false
   MTU = 1420
   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.0/24,10.20.0.0/16,172.17.0.0/20
[Peer]
   # Client1: aliyun-shanghai
   PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxx
   Endpoint = xxxxxxxxxxxxx:51820
   AllowedIPs = 10.30.0.2/24,10.20.0.0/16,172.17.0.0/20
   PersistentKeepalive = 25
[Peer]
   # Client1: wireguard-beijing
   PublicKey = xxxxxxxxxxxxxxxxxx
   Endpoint = xxxxxxxxxxxxxxxxx:51820
   AllowedIPs = 10.30.0.3/24,10.40.0.0/21,172.17.16.0/20
   PersistentKeepalive = 25

           
root@VM-4-8-ubuntu:/etc/wireguard# wg-quick down wg0
root@VM-4-8-ubuntu:/etc/wireguard# wg-quick up wg0
           
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

強調一下 防火牆 udp:51820

前面沒有說特意拿C網絡來說一下。防火牆要開通UDP:51820(或者着針對自己的ip位址),前面AB叢集我都預設打開了。不開通的時候是ping 不通的,打開tcp:51820依然不通,打開udp:51820就可以ping 通了!

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A叢集CVM10.10.4.8(wireguard)節點ping C叢集網絡 and 容器網絡資源

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A叢集進入容器pingC叢集網絡 and 容器網絡資源

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

A叢集其他CVM節點(安裝wireguard節點外節點)ping C叢集網絡資源

A網絡其他cvm ping C網絡一定記得手動添加路由:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:
wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

C叢集 ping A叢集

草草測試一下吧吧......

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

問題來了:

上面 A B CB AC的測試再作一遍發現....AB不通了:

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

看一眼AB 節點的配置檔案

A叢集

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

B叢集

wireguard-跨雲or vpc網絡通訊方案背景:看了一下網上的各種方案:終極實作目标wireguard的安裝A B網絡互通C連接配接B連通性測試A連接配接C連通性測試問題來了:總結:

初步懷疑兩個叢集配置檔案裡面有沖突了?過程就是一次次改嘗試

最終配置檔案如下:

A叢集10.0.4.8節點

[Interface]
   Address = 10.30.0.1/24
   ListenPort = 51820
   PrivateKey = xxxxxxxxxxxxxxxxxxxxxxx
   SaveConfig = false
   MTU = 1420
   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#[Peer]
#PublicKey =xxxxxxxxxxxxxxx
#AllowedIPs = 10.30.0.2/24
[Peer]
   # Client1: aliyun-shanghai
   PublicKey =xxxxxxxxxxxxxxxxxxxxxx
   Endpoint = xxxxxx:51820
   AllowedIPs = 10.30.0.2/32,10.20.0.0/16,172.17.0.0/20
   PersistentKeepalive = 25
[Peer]
   # Client1: wireguard-beijing
   PublicKey = xxxxxxxxxxxxxxx
   Endpoint = xxxxxxxx:51820
   AllowedIPs = 10.30.0.3/32,10.40.0.0/21,172.17.16.0/20
   PersistentKeepalive = 25

           
[Interface]
   Address = 10.30.0.2/24
   ListenPort = 51820
   PrivateKey = xxxxxxxxxxxxxxxxxxxxx
   SaveConfig = false
   MTU = 1420

   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#[Peer]
#PublicKey = xxxxxxxxxxxxxxxxxxxxxxx
#AllowedIPs = 10.30.0.1/24
[Peer]
   # Client1: MacOS-Desktop
   PublicKey = xxxxxxxxxxxxxxxxxxxxxxxx
   Endpoint = xxxxxxxxxxxxxxxxxxx:51820
   AllowedIPs = 10.30.0.1/32,10.10.0.0/16,172.16.0.0/16
   PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.3/24

           
[Interface]
   Address = 10.30.0.3/24
   ListenPort = 51820
   PrivateKey = xxxxxxxxxxxxxxx
   SaveConfig = false
   MTU = 1420

   # Internet Gateway config: nat wg0 out to the internet on ens5
   PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
   # Client1: aliyun-shanghai
   PublicKey = xxxxxxxxxxxxxxxx
   Endpoint = xxxxxxx:51820
   AllowedIPs = 10.30.0.2/32,10.20.0.0/16,172.17.0.0/20
   PersistentKeepalive = 25
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.30.0.1/32

           
wg-quick down wg0
wg-quick up wg0
           

總結:

  1. wireguard跨網 組網還是很友善的
  2. 兩個網絡組網還好,三個組網要注意下子網路遮罩或者各種的沖突,不知道是否會覆寫沖突......
  3. 網絡基礎還是薄弱,沒有搞太明白....但是好歹三個網絡的測試搞通了
  4. 安全組防火牆的放行
  5. 新增自定義路由政策的添加

繼續閱讀