在 /etc/hosts 中使用對文件的引用而不是 IP
從帶有 hostname 的主機
localhost
,我想exthost
通過 Internet 訪問帶有 hostname 的外部主機。的公共 IP 地址exthost
由 Internet 提供商動態分配。我想指的是
exthost
始終使用它的名稱,並根據 Provider 分配的值將此名稱映射到其實際 IP 地址,這可能會發生變化。為此,我想使用
/etc/hosts
,正確更新與 相關的行的 IP 地址值exthost
。例如,
/etc/hosts
Linux 中的 in 行可能如下所示:<ip_address> exthost.domain exthost
我使用的是 Ubuntu 18.04,但這肯定也適用於其他發行版/類 Unix 系統。
是否可以這樣做,避免為此目的設置 DNS(以及動態 DNS,有時不是免費服務)?
例如,是否可以使用對
<ip_address>
僅包含所需 IP 作為字元串的另一個文件的引用而不是顯式引用?以便使用者可以訪問和修改此文件,根據 IP 值可能會有所不同。注意:這個問題似乎不是同一種情況,因為它是關於本地機器的。我指的是外部主機。
Linux 上沒有使用者定義的主機文件之類的東西,您可以使用與規範名稱一起使用的 HOSTALIASES。
如果我正確地回答了您的問題,您可以使用動態 DNS 服務(如 DynDNS 或 No-IP)來始終擁有您的 ISP 分配的正確公共 IP 地址。
然後,您可以使用 HOSTSALIASES 映射
exthost
到動態 DNS 服務提供的 FQDN 名稱。例如,導出 HOSTALIASES 值,
export HOSTALIASES=~/.hosts
然後在~/.hosts
文件中添加以下行以將 exthost 映射到由 no-ip 提供的 FDQN 名稱。exthost yourname.no-ip.org
HOSTALIASES 僅適用於規範名稱,而不是 IP,這就是為什麼您應該使用一些動態 DNS 服務來擁有 FQDN 名稱,但您可以只使用該 FQDN,並完全跳過 HOSTALIASES。
如果不設置一些 DNS 服務或在遠端站點上編寫腳本以始終向您發送他們的公共 IP,然後在本地
/etc/hosts
文件中更改該 IP,我認為您無法做到這一點。另一種選擇是授予使用者在 chroot 環境中更改
/etc/hosts
或設置該使用者的權限,並在他的 chroot 環境中為他提供自己的/etc/hosts
文件。