Stories

Detail Return Return

一次 SSH 斷聯踩坑,聊聊 open-eBackup 與客户端之間的網絡關係 - Stories Detail

背景

近兩週,在老師和學長的帶領下,第一次接觸 open-eBackup 這個備份軟件。並且,開始嘗試對 openGauss 進行備份。中途遇到的第一個坑是自己給自己挖的。
在成功安裝 openEuler 後,為它進行配置路由時,執行了一條 nmcli 命令,結果 SSH 斷了,再也連不上了......

場景回顧

需要根據學長寫的文檔,為 openEuler 所在的服務器配一個靜態路由,為註冊客户端做準備。具體文檔如下:
背景設定

image.png

使用到的命令以及含義

# 查看當前網絡連接名稱
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"。後續會淺講一下原因

分析原因以及解決

  1. 首先,為什麼執行 sudo nmcli connection down "ens33" && sudo nmcli connection up "ens33" 完會連不上。

    • 執行 down 命令的時候,網卡會被禁用,此時 SSH 就會瞬間斷開了。
    • 如果 up 的時候配置錯誤(比如 IP、網關或者路由異常),SSH 就無法再連回來
    • 由於我在執行添加靜態路由的時候,私自把 192.168.24.15 改成了自己的 192.168.24.73 導致了路由異常,所以 SSH 就無法再連回來了
  2. 調試分析

    • 直接用虛擬機控制枱登陸(不是 SSH)

      ip addr show
      ip route show

      輸出:
      image.png

      針對 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,如果沒有網關,也沒辦法訪問別的網絡。

  3. 解決問題
    我們進入系統後,手動為其添加 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 外網

    輸出示例:
    image.png

    到目前為止,問題就解決了。我們使用遠程連接工具來進行連接。就成功解決啦!

回顧

首先,我們要知道。這一步配置靜態 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
  • 再由網關轉發到目標網絡

    瞭解文檔中的背景設定

    回看背景設定(其實學長寫的已經很明晰了):

    image.png

    下面是畫的一個大概的圖:

    image.png

    結語

    這次的學習經驗包括虛擬機的安裝,openEuler 的安裝,openGauss 的安裝與測試以及解決類似上述問題對自己還是有很大的啓發。感覺是第一次這麼“近距離”的接觸有關網絡、命令等等的相關知識。
    後續有機會可以瞭解一下 Kubernetes 的相關知識。

Add a new Comments

Some HTML is okay.