Ubuntu

在 /etc/hosts 中使用對文件的引用而不是 IP

  • November 21, 2018

從帶有 hostname 的主機localhost,我想exthost通過 Internet 訪問帶有 hostname 的外部主機。的公共 IP 地址exthost由 Internet 提供商動態分配。

我想指的是exthost始終使用它的名稱,並根據 Provider 分配的值將此名稱映射到其實際 IP 地址,這可能會發生變化。

為此,我想使用/etc/hosts,正確更新與 相關的行的 IP 地址值exthost

例如,/etc/hostsLinux 中的 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文件。

引用自:https://unix.stackexchange.com/questions/483167