web-dev-qa-db-ja.com

ホスト名を使用してLANからマシンにアクセスできるようにする方法

ホスト名を使用してアクセスするマシンの詳細は次のとおりです。

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

これはデフォルトのDebian 6(Squeeze)インストールなので、まだ何もいじっていません。

これは、上記のマシンにアクセスしようとしているマシン(Debian Unstableを実行しているマシン)から取得したものです。

$ ping hostname
ping: unknown Host hostname
$ ping hostname.company.local
ping: unknown Host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
131
tshepang

ローカルネットワークを含むインターネットでは、マシンは IPアドレス で相互に呼び出します。マシンBの名前を使用してマシンAからマシンBにアクセスするには、マシンAにBの名前をそのIPアドレスにマップする何らかの方法が必要です。 Aでマシン名を宣言するには、3つの方法があります。

  • hostsファイル 。これは、名前をアドレスにマップする単純なテキストファイルです。
  • ドメインネームシステム(DNS) 。これは、グローバルインターネットで使用されている方法です。たとえば、ブラウザでこのページを読み込む場合、コンピュータが最初に行うことは、unix.stackexchange.comのアドレスを知るためにDNS要求を行うことです。
  • [〜#〜] nis [〜#〜][〜#〜] ldap [〜#〜] などの他の名前データベースまたは Active Directory 。これらは一部の企業ネットワークで使用されていますが、それほど頻繁ではありません(ユーザーデータベースにNIS、LDAPまたはADを使用する多くのネットワークでは、マシン名にDNSを使用しています)。ネットワークでこれらのいずれかを使用している場合は、専門のネットワーク管理者がいて、彼に何をすべきか尋ねる必要があります。

これらが実際に機能する方法はたくさんあります。それらすべてをカバーすることは不可能です。この回答では、いくつかの一般的な状況について説明します。

ホストファイル

Hostsファイル方式には、特別な方法を必要としないという利点があります。複数のマシンがある場合は、1つのマシンの名前が変更されたときにすべてのマシンを更新する必要があるため、面倒な場合があります。 BのIPアドレスが動的に割り当てられる場合(ネットワークに接続するたびに異なるアドレスが取得されるようにする場合)は適していません。

ホストファイルは、名前をIPアドレスにマッピングする行の単純なリストです。次のようになります。

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

UNIXシステムでは、hostsファイルは/etc/hostsです。 Windowsではc:\windows\system32\drivers\etc\hostsです。インターネットに接続できるほぼすべてのオペレーティングシステムに同様のファイルがあります。 ウィキペディアにはリスト があります。

AのhostsファイルにBのエントリを追加するには:

  1. BのIPアドレスを確認します。Bで、コマンドifconfigを実行します(コマンドが見つからない場合は、/sbin/ifconfigを試してください)。出力には次のような行が含まれます。

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    この例では、BのIPアドレスは10.3.1.42です。複数のinet addr:行がある場合は、ネットワークカードに対応する行を選択し、loエントリ、トンネル、または仮想エントリは選択しないでください。

  2. Aのhostsファイルを編集します。AがUNIXシステムを実行している場合は、スーパーユーザーとして/etc/hostsを編集する必要があります。 システム管理者(root) としてコマンドを実行する方法を参照してください。

ホームネットワークまたは小規模オフィスネットワークでのDHCP + DNS

この方法は、必要な機器があれば、はるかに簡単です。 1つのデバイスを構成するだけで、すべてのコンピューターが互いの名前を認識します。この方法は、コンピューターが [〜#〜] dhcp [〜#〜] を介してIPアドレスを取得することを前提としています。これは、コンピューターが通信網。 DHCPが何であるかがわからない場合は、おそらくDHCPで解決できます。

ネットワークに home router がある場合、そのルーターに接続されているマシンの名前を構成するのに最適な場所です。まず、Bの MACアドレス を把握する必要があります。各ネットワークデバイスには一意のMACアドレスがあります。 Bで、コマンドifconfig -aを実行します(コマンドが見つからない場合は、/sbin/ifconfig -aを試してください)。出力には次のような行が含まれます。

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

この例では、MACアドレスは01:23:45:67:89:abです。ケーブルを介してルーターに接続されているネットワークポートに対応するHWaddr行を選択する必要があります(または、wifiで接続している場合はwifiカード)。複数のエントリがあり、どれがどれかわからない場合は、ケーブルを差し込み、IPアドレスを受信するネットワークデバイスを確認します(すぐ下のinet addr行)。

次に、ルーターのWebインターフェイスで、「DHCP」などの設定を探します。設定の名前と場所はルーターモデルに完全に依存しますが、ほとんどの場合、基本的な設定のセットが類似しています。 Tomatoファームウェア では次のようになります。

tomato screenshot

MACアドレス、IPアドレス、目的の名前を入力します。ローカルネットワークのアドレス範囲で任意のIPアドレスを選択できます。ほとんどのホームルーターは、192.168 .x .yまたは10 .x .yの形式のアドレス範囲に事前構成されています。 = .z。たとえば、上記のTomatoルーターの[ネットワーク]タブには、値10.3.0.1の「ルーターIPアドレス」設定と、値255.255.255.0の「サブネットマスク」設定があります。ローカルネットワークには、10.3.0 .zの形式のアドレスが必要です。自動的に割り当てられるDHCPアドレスのアドレス範囲もあります(10.3.0.129–10.3.0.254)。手動で割り当てられたDHCPアドレスについては、この範囲にないものを選択してください。

Bをネットワークに接続すると、指定したIPアドレスが取得され、ネットワーク内の任意のマシンから指定した名前で到達できるはずです。

Dnsmasqで独自のDNSサーバーを作成する

対応するホームルーターがない場合は、どのLinuxマシンでも同じ機能を設定できます。 Dnsmasq を使用して [〜#〜] dns [〜#〜] を設定する方法を説明します。他にも多くの同様のプログラムがあります。 Dnsmasqを選択した理由は、構成が簡単で軽量なためです(たとえば、上に示したTomatoルーターがそれを使用しているためです)。 Dnsmasqは、PC、サーバー、ネットワーク機器向けのほとんどのLinuxおよびBSDディストリビューションで使用できます。

常にオンで、静的IPアドレスがあり、何らかのLinuxまたはBSDを実行しているコンピューターを選択します。 S(サーバー用)としましょう。 Sに、dnsmasqパッケージをインストールします(まだない場合)。以下では、設定ファイルが/etc/dnsmasq.confであると想定します。場所はディストリビューションによって異なる場合があります。次に、いくつかのことを行う必要があります。

  • Dnsmasqに、インターネットから取得したホスト名に加えてホスト名を提供するように指示します。最も簡単な方法は、/etc/hostsに名前とIPアドレスを入力し(上記の「Hostsファイル」セクションを参照)、/etc/dnsmasq.confno-hostsディレクティブのコメントを解除しないようにすることです。 (#で始まる行はコメント化されています。)別のファイルに名前を入れることができます。使用する場合は、addn-hosts=/path/to/hosts/file/etc/dnsmasq.confを追加します。
  • インターネット上のマシンの名前のIPアドレスを取得する方法をDnsmasqに伝えます。

    • Debian、Ubuntu、またはその派生物を実行している場合は、resolvconfパッケージをインストールします。ほとんどの場合、すべてがそのまま機能します。
    • ネットワーク管理者またはISPからDNSサーバーのアドレスが提供されている場合は、それらを/etc/dnsmasq.confに入力します。次に例を示します。

      server=8.8.8.8
      server=8.8.4.4
      
    • 現在のDNS設定がわからない場合は、/etc/resolv.confファイルを確認してください。 nameserver 8.8.8.8のような行が表示された場合は、server=8.8.8.8/etc/dnsmasq.confを挿入します。 /etc/dnsmasq.confを変更したら、Dnsmasqを再起動します。そのためのコマンドは、ディストリビューションによって異なります。一般的な可能性には、restart dnsmasqまたは/etc/init.d/dnsmasq restartが含まれます。

  • すべてのホスト名要求にDnsmasqサービスを使用するようにSに指示します。ファイル/etc/resolv.confを編集し(rootとして)、すべてのnameserver行を削除し、代わりにnameserver 127.0.0.1を挿入します。
    • DebianまたはUbuntuでresolvconfを使用している場合、ネットワークが稼働している状態でresolvconfパッケージをインストールすると、/etc/resolv.confは最適ではなくなる可能性があります。 /etc/resolvconf/resolv.conf.d/ディレクトリ内のファイルbaseheadtailnameserverエントリが含まれていないことを確認してから、resolvconf -u(ルートとして)。
  • 他のマシンにSをDNSサーバーとして使用するように伝えます。 /etc/resolv.confを編集し、すべてのnameserver行を単一のnameserver 10.3.0.2に置き換えます。ここで10.3.0.2はSのIPアドレスです(SのIPアドレスを確認する方法については上記を参照)。

Dnsmasqを [〜#〜] dhcp [〜#〜] サーバーとして使用して、マシンがその名前に対応するアドレスを自動的に取得できるようにすることもできます。これはこの回答の範囲を超えています。 Dnsmasqのドキュメントを参照してください(難しくありません)。特定のローカルネットワーク上に存在できるDHCPサーバーは1つだけであることに注意してください(ローカルネットワークの正確な定義はこの回答の範囲外です)。

グローバルインターネット上の名前

これまでのところ、ローカルネットワークを想定しています。世界の別の場所にあるマシンに名前を付けたい場合はどうでしょうか? DHCPに関連する部分がローカルネットワーク内でのみ適用可能であることを除いて、上記の手法のいずれも引き続き使用できます。あるいは、マシンにパブリックIPアドレスがある場合は、それらに独自のパブリック名を登録できます。 (プライベートIPアドレスをパブリック名に割り当てることもできます。これはあまり一般的ではなく、あまり役に立ちませんが、技術的な問題はありません。)

独自のドメイン名を取得する

独自の ドメイン名 を取得し、このドメイン内のホスト名にIPアドレスを割り当てることができます。ドメイン名プロバイダーにドメイン名を登録する必要があります。通常、これは年間10〜15ドルかかります(最も安価なドメインの場合)。ドメイン名プロバイダーのWebインターフェイスを使用して、ホスト名にアドレスを割り当てます。

ダイナミックDNS

マシンに動的IPアドレスがある場合、 動的DNS プロトコルを使用して、アドレスが変更されたときにマシンの名前に関連付けられたIPアドレスを更新できます。すべてのドメイン名プロバイダーが動的DNSをサポートしているわけではないため、購入する前に購入してください。個人使用の場合、 No-IP は、独自のドメイン(example.ddns.netなど)を使用している場合、無料のダイナミックDNSサービスを提供します。

マルチキャストDNS (mDNS)を使用します。これは、LANサブネットで機能するゼロ構成プロトコルです。サーバーは必要ありません。 .local TLD(すでに使用しているもの)。

あなたが尋ねているので、他のすべてはやり過ぎのようです。そうでない場合は、おそらく質問しないでしょう。

27
tne
vi /etc/dhcp3/dhclient.conf

send Host-name "ubuntu-laptop";

そして

/etc/init.d/networking restart
4
LanceBaynes

コンピュータは、どのホスト名がどのIPアドレスに属しているかを魔法のように知っているだけではありません。 localhostであっても、何らかの検索が行われます。

ある種の名前検索サービスを使用するには、他のシステムを構成する必要があります。これは/etc/hostsクライアント、LDAP、nsswitch、または通常のDNSサーバー。私はbindを使用して、ローカルドメイン内のすべてのローカルマシンを入力し、そのサイトのDNSを提供します。

3
Caleb

ホストファイルをいじりたくない場合で、インターネットドメイン名とインターネットアクセスを所有している場合は、内部IPを指すAタイプのサブドメインを作成できます。たとえば、intranet-pc1.someperson.comをセットアップし、10.0.1.13をポイントします。

1
MK Yung