web-dev-qa-db-ja.com

/ etc / hostsのIPではなくファイルへの参照を使用する

ホスト名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値は異なる場合があります。


注: この質問 はローカルマシンに関するものであるため、同じケースではないようです。代わりに、外部ホストを参照しています。

1
BowPark

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ファイルを与えることです。

4
rAlen

私の/ 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でファイルを更新できます。

0