ホスト名localhost
のホストから、インターネット経由でホスト名exthost
の外部ホストにアクセスしたいと思います。 exthost
のパブリックIPアドレスは、インターネットプロバイダーによって動的に割り当てられます。
exthost
を常にその名前を使用して参照し、プロバイダーによって割り当てられた値に従って、この名前を実際のIPアドレスにマッピングしたいと思います。これは変更される可能性があります。
そのために、/etc/hosts
を使用して、exthost
に関連する行のIPアドレス値を適切に更新したいと思います。
たとえば、Linuxの/etc/hosts
の行は次のようになります。
<ip_address> exthost.domain exthost
私はUbuntu18.04を使用していますが、これは確かに他のディストリビューション/ Unixライクなシステムにも当てはまります。
この目的のためだけにDNS(および無料サービスではない場合があるダイナミックDNS)を設定することを避けて、これを行うことは可能ですか?
たとえば、明示的な<ip_address>
の代わりに、目的のIPのみを文字列として含む別のファイルへの参照を使用することは可能ですか?ユーザーがこのファイルにアクセスして変更できるように、IP値は異なる場合があります。
注: この質問 はローカルマシンに関するものであるため、同じケースではないようです。代わりに、外部ホストを参照しています。
Linuxにはユーザー定義のhostsファイルのようなものはありません。正規の名前で機能するHOSTALIASESを使用できます。
質問が正しければ、DynDNSやNo-IPなどのダイナミックDNSサービスを使用して、ISPに割り当てられた正しいパブリックIPアドレスを常に持つことができます。
次に、HOSTSALIASESを使用して、exthost
をダイナミックDNSサービスによって提供されるFQDN名にマップできます。
HOSTALIASES値をexport HOSTALIASES=~/.hosts
でエクスポートしてから、次の行を~/.hosts
ファイルに追加して、たとえばno-ipで指定されたFDQN名にexthostをマップします。
exthost yourname.no-ip.org
HOSTALIASESは、IPではなく正規名でのみ機能します。そのため、ダイナミックDNSサービスを使用してFQDN名を付ける必要がありますが、そのFQDNを使用するだけで、HOSTALIASESを完全にスキップできます。
DNSサービスを設定するか、リモートサイトで何かをスクリプト化して、常にパブリックIPを送信し、ローカル/etc/hosts
ファイルでそのIPを変更しない限り、これを行うことはできないと思います。
別のオプションは、ユーザーに/etc/hosts
を変更する権限を与えるか、そのユーザーをchroot環境に設定し、chroot環境で自分の/etc/hosts
ファイルを与えることです。
私の/ etc/hosts:
127.0.0.1 localhost
127.0.1.1 *some-Host*
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
だから、言って:
Sudo nano /etc/hosts
行を追加します:
IPOFEXTHOST exthost
ここで、IPOFEXTHOSTはexthostの既知のIPです。
その時点から、exthostを含む行を置き換えることにより、ファイルを更新するスクリプトを作成できます。とはいえ、コンピューターの1つにdyndnsまたはno-ipアップデーターが必要になります。そのため、exthostのWebアドレスを直接知っているか、exthostが他のコンピューターのアドレスを知っているため、sshを逆にして、カールしたパブリックIPでファイルを更新できます。