背景
近兩週,在老師和學長的帶領下,第一次接觸 open-eBackup 這個備份軟件。並且,開始嘗試對 openGauss 進行備份。中途遇到的第一個坑是自己給自己挖的。
在成功安裝 openEuler 後,為它進行配置路由時,執行了一條 nmcli 命令,結果 SSH 斷了,再也連不上了......
場景回顧
需要根據學長寫的文檔,為 openEuler 所在的服務器配一個靜態路由,為註冊客户端做準備。具體文檔如下:
背景設定
使用到的命令以及含義
# 查看當前網絡連接名稱
nmcli connection show
# 為指定連接(如ens33)添加靜態路由
sudo nmcli connection modify "ens33" +ipv4.routes "10.244.0.0/16 192.168.24.15"
# 重啓網絡連接生效
sudo nmcli connection down "ens33" && sudo nmcli connection up "ens33"
# 連通測試
ping 10.244.0.0
當時,我並沒有理解對應的命令是什麼含義,自作聰明的把 192.168.24.15 換成了我的虛擬機的靜態ip 192.168.24.73。 然後,再執行 sudo nmcli connection down "ens33" && sudo nmcli connection up "ens33" 命令的時候,遠程連接就掉了,然後就再也連不上了。
正確的命令應該是不做任何更改。直接執行命令 sudo nmcli connection modify "ens33" +ipv4.routes "10.244.0.0/16 192.168.24.15"。後續會淺講一下原因
分析原因以及解決
-
首先,為什麼執行
sudo nmcli connection down "ens33" && sudo nmcli connection up "ens33"完會連不上。- 執行 down 命令的時候,網卡會被禁用,此時 SSH 就會瞬間斷開了。
- 如果 up 的時候配置錯誤(比如 IP、網關或者路由異常),SSH 就無法再連回來
- 由於我在執行添加靜態路由的時候,私自把 192.168.24.15 改成了自己的 192.168.24.73 導致了路由異常,所以 SSH 就無法再連回來了
-
調試分析
-
直接用虛擬機控制枱登陸(不是 SSH)
ip addr show ip route show輸出:
針對ip addr show的輸出:2: ens33: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:b6:ba:8c brd ff:ff:ff:ff:ff:ff當前這個 ens33 網卡現在只有 MAC 地址,但是沒有 inet(IPv4地址)。也就是説,當前的網卡是啓動狀態,但是沒有 IP,因此無法通過 SSH 連接。
針對ip route show的輸出:
它的輸出為空。説明沒有默認路由。即使給網卡加上了 IP,如果沒有網關,也沒辦法訪問別的網絡。
-
-
解決問題
我們進入系統後,手動為其添加 IP 和網關:# 給網卡加上你的靜態 IP sudo ip addr add 192.168.24.73/24 dev ens33 # 啓動網卡 sudo ip link set ens33 up # 加默認網關 sudo ip route add default via 192.168.24.1測試能不能 ping 通:
ping 192.168.24.1 # ping 網關 ping 192.168.24.1 # ping 宿主機 ping 8.8.8.8 # ping 外網輸出示例:
到目前為止,問題就解決了。我們使用遠程連接工具來進行連接。就成功解決啦!
回顧
首先,我們要知道。這一步配置靜態 IP 是為了什麼:為的是後續將 openEuler 註冊為一個客户端
客户端是什麼:在 open-eBackup 中,客户端(Client) = 被保護主機上安裝的 ProtectClient 組件
客户端的作用:
- 接收控制器下發任務
- 調用本地資源(文件系統、數據庫插件)
- 採集/傳輸數據到備份主機
- 恢復數據時再從備份主機取回
所以説,要想客户端生效。客户端所在的主機要能正確訪問控制器和備份主機
💡 由於 open-eBackup 的控制器常部署在 Kubernetes 集羣裏,備份數據流也可能垮不同的網段,所以必須保證:
客户端所在主機 => Kubernetes Pod 網段可達
客户端所在主機 => 備份主機 IP 可達
命令的含義
瞭解命令的含義,找到為什麼不能改 ip 的原因。
# 為指定連接(如ens33)添加靜態路由
sudo nmcli connection modify "ens33" +ipv4.routes "10.244.0.0/16 192.168.24.15"
修改 ens33 的連接配置,給這個連接增加一條 IPv4 的路由規則
"10.244.0.0/16 192.168.24.15"這個是具體的路由規則,它的格式是:<目的網絡> <下一跳網關>
但是,我卻把 192.168.24.15 改成 192.168.24.73。這樣就變成了,“去往 10.244.0.0/16 的流量 → 交給下一跳 192.168.24.73(也就是自己)”。去查找路由表發現沒有,那麼我在重啓連接的時候,就會影響 IP 通訊。
- 當系統要訪問 10.244.0.0/16 網段時
- 就把數據包先交給網關 192.168.24.15
-
再由網關轉發到目標網絡
瞭解文檔中的背景設定
回看背景設定(其實學長寫的已經很明晰了):
下面是畫的一個大概的圖:
結語
這次的學習經驗包括虛擬機的安裝,openEuler 的安裝,openGauss 的安裝與測試以及解決類似上述問題對自己還是有很大的啓發。感覺是第一次這麼“近距離”的接觸有關網絡、命令等等的相關知識。
後續有機會可以瞭解一下 Kubernetes 的相關知識。