Linuxでホスト名にエイリアスを付けることはできますか?
次のように、jmillikinからさまざまなUbuntuフォーラムで質問されています。
# Real Host # Aliases
realhost fakehost1 fakehost2 fakehost3
誰かがsshについて回答しましたが、pingなどについては回答していません。私の主な目的は、それを Subversion サーバーのエイリアスとして使用することです。私の場合、realhostは動的IPアドレスの下にあります。そのため、「/ etc/hosts」エイリアスは機能しません。 svn://my_svnserver/my_repos
ではなくsvn://realhost/my_repos
としてSubversionサーバーにアクセスしたい。
フォーラムにアカウントを持っていない(またはログインしたくない)場合:
主な問題がpingではなくsshである場合は、次のような行を追加して〜/ .ssh/configを作成/編集できます。
Host fakehost1
Hostname real-hostname
Host fakehost2
Hostname real-hostname2
Host fakehost3
Hostname real-hostname3
Linuxは、HOSTALIASES環境変数を設定することでエイリアスをサポートしています。
echo "fakehost realhost" > /etc/Host.aliases
echo "export HOSTALIASES=/etc/Host.aliases" >> /etc/profile
. /etc/profile
次にできます
ping fakehost
N.B. pingを実行するには、これをrootとしてセットアップする必要がありますが、そのユーザーとして実行されるアプリケーションの場合は、どのユーザーとしても実行できます。ルートにsuidsをpingします。
DNSサーバーでこれを設定できます。CNAMEレコードを使用すると、マシンを複数のホスト名で認識できます。したがって、そのようなDNSサーバーにCNAMEレコードを追加します。
fakehost1 IN CNAME realhost
fakehost2 IN CNAME realhost
fakehost3 IN CNAME realhost
私はよく環境変数を使ってこれを行います。これはコマンドラインでのみ機能することはわかっていますが、ホスト名のエイリアスを切望することがよくあります(私はいくつかのスーパーコンピュータアカウントで作業し、すべてが長いURLで作業していました)。 BASHを使用している場合の例を次に示します。 〜/ .bashrc:
export fakehost = "long.ass.annoying.url.org"
次に、新しいシェルで:
ssh christopher @ $ fakehost
これを行う唯一の方法は、独自のローカルDNSサーバーがある場合です。
現在のIPアドレスをホスト名にマップするdyndnsサーバーが必要です。ログインするたびに、現在のIPアドレスをこのサーバーに通知し、ホスト名レコードを更新します。
/etc/hosts.aliasesの使用は、バインドリゾルバーライブラリの標準機能です。/etc/hostsにエントリを追加するよりも堅牢で、DNSにCNAMESを追加できない場合(アクセスできない場合)に使用できます。
一般に、ベストプラクティスは、/ etc/resolv.confで定義された適切なSEARCHを使用してDNSでCNAMESを使用することです。
/ etc/hostsの更新は、エントリをIPの変更と同期させる必要があるため、それほど堅牢ではありません。これが実際に機能するのは、小規模な場合、またはネームサービスを使用してホストマップを配布する場合(LDAPなど)のみです。
別の解決策はDNSMasqかもしれません http://en.wikipedia.org/wiki/Dnsmasq