Linux
有沒有辦法給特定的介面 ip 起別名?
我有一個在 debian 上作為 prod 伺服器執行的 VCS,並且由於一些管理程序問題,它必須在過去一周內多次重新啟動/遷移/更新。
因為我正在使用 docker 容器執行我的應用程序,所以我不能只通過
localhost
它來連接到我的本地 postgres,所以我使用的是ens2
ip。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 都會發生變化,我必須手動在 env vars 中進行更改,以便我的應用程序可以再次訪問數據庫,我相信你會同意這不是很實用。
localhost
所以這是我的問題:有沒有辦法自動為這個特定的介面分配一個別名,很像?我想我仍然可以嘗試解析
ifconfig
輸出,但我寧願先要求一個實際的解決方案👼謝謝你們的時間👌
域名系統。
維護一個記錄供應用程序使用,也許
appdb.prod.example.org
. 由於這是一個服務名稱,請考慮為目前執行它的主機創建一個 CNAME。每次主機獲得 IP 時更新 DNS 中的名稱。例如,名為 contains
container1.example.org
的AAAA 記錄2001:bc8:4740:205::1
。具體如何執行取決於您的編號方案和 DNS 配置。靜態IP一分配就可以輸入。DHCP 掛鉤可用於更新 DNS。並且有軟體可以監視每個介面的 IP 更改並執行 nsupdate,例如 autoddns。不要在 Linux 上使用 ifconfig,而不是用於新腳本。它已經過時了至少 11 年。