有沒有辦法為特定介面 ip 指定別名?

有沒有辦法為特定介面 ip 指定別名?

我有一個在 debian 上運行的 VCS 作為產品伺服器,由於一些虛擬機器管理程式問題,它必須在過去一周重新啟動/遷移/更新幾次。

因為我使用 docker 容器運行我的應用程序,所以我不能只是localhost通過它連接到我的本地 postgres,所以我使用 ipens2代替。

ens2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.12.174.3  netmask 255.255.255.254  broadcast 10.12.174.3
        inet6 fe80::dc1c:14ff:fe51:5002  prefixlen 64  scopeid 0x20<link>
        inet6 2001:bc8:4740:205::1  prefixlen 127  scopeid 0x0<global>
        ether de:1c:14:51:50:02  txqueuelen 1000  (Ethernet)
        RX packets 37139  bytes 4801851 (4.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39791  bytes 35291408 (33.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

但是每次重新啟動時,ip都會發生變化,我必須手動去環境變數中更改它,以便我的應用程式可以再次訪問資料庫,我相信您會同意這不是很實用。

所以這是我的問題:有沒有一種方法可以自動為這個特定的介面分配一個別名,非常類似localhost

我想我仍然可以嘗試解析ifconfig輸出,但我寧願先詢問實際的解決方案

答案1

域名系統。

也許維護一個記錄以供應用程式使用appdb.prod.example.org。由於這是服務名稱,請考慮為目前正在執行它的主機建立 CNAME。

每次主機取得 IP 時更新 DNS 中的名稱。例如,AAAA 記錄稱為container1.example.orgcontains 2001:bc8:4740:205::1。具體如何執行此操作取決於您的編號方案和 DNS 配置。靜態 IP 分配後即可輸入。 DHCP 掛鉤可用於更新 DNS。並且有軟體可以監視每個介面的 IP 變更並執行 nsupdate,例如 自動域名


不要在 Linux 上使用 ifconfig,不適用於新腳本。它已經過時了至少 11 年。

答案2

總是可以使用:

alias ip="hostname -I"

相關內容