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


120

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

$ 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

クライアント(実行するマシンping)、またはクライアントが相談するマシンで何かをする必要があります。クライアントのOSは何ですか?そのDNS構成は何ですか?
ジル

DNS構成とは何ですか?また、更新された投稿を参照してください。
-tshepang

1
私の答えはあなたが望んでいたようなものですか?もしそうなら、質問が簡素化必要-誰が知っているpingし、/etc/hostsとにかくDNSについてではなく?
ジル

どうもありがとう。ご覧になります。ああ、それは答えよりも記事です:)
tshepang

3
答えは「dnsmasqのインストールと構成」です。できた :)
ウォーレンヤング

回答:


145

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

  • hostsファイル。これは、名前をアドレスにマッピングする単純なテキストファイルです。
  • ドメインネームシステム(DNS) 。これは、グローバルインターネットで使用される方法です。たとえば、ブラウザでこのページを読み込むとき、コンピュータが最初に行うことは、のアドレスを知るためにDNS要求を行うことですunix.stackexchange.com
  • NISLDAPActive 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アドレスを取得することを前提としています。これは、コンピューターがネットワークに接続するときにIPアドレスを自動的に取得する方法です。DHCPが何であるかわからない場合は、おそらく知っています。

ネットワークにホームルーターがある場合、そのルーターに接続されているマシンの名前を構成するのに最適な場所です。まず、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です。ケーブル(またはwifi経由で接続している場合はwifiカード)を介してルーターに接続されているネットワークポートに対応するHWaddr行を選択する必要があります。複数のエントリがあり、どれがどれなのかわからない場合は、ケーブルを接続して、どのネットワークデバイスがIPアドレスを受信するかを確認してください(inet addrすぐ下の行)。

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

トマトのスクリーンショット

MACアドレス、IPアドレス、目的の名前を入力します。ローカルネットワークのアドレス範囲で任意のIPアドレスを選択できます。ほとんどのホームルーターは、192.168。の形式のアドレス範囲用に事前構成されています xyまたは10. xyZ。たとえば、上記のトマトルーターの[ネットワーク]タブには、値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に、インターネットから取得したホスト名に加えてホスト名を提供するように指示します。最も簡単な方法は、名前とIPアドレスを入力し/etc/hosts(上記の「ホストファイル」セクションを参照)、ディレクティブのコメントが解除されて/etc/dnsmasq.confいないことを確認することですno-hosts。(aで始まる行#はコメント化されています。)名前を別のファイルに入れることができます。もしそうなら、行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(ルートとして)ファイルを編集し、すべてのnameserver行を削除して、nameserver 127.0.0.1代わりに配置します。
    • DebianまたはUbuntuでresolvconfを使用している場合、ネットワークが稼働して/etc/resolv.confいる状態でresolvconfパッケージをインストールすると、最適ではなくなる可能性があります。ファイルていることを確認しbaseheadそしてtail中に/etc/resolvconf/resolv.conf.d/ディレクトリがどの含まれていません。nameserverそして、エントリを実行しますresolvconf -u(rootとして)。
  • 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サービスを提供します。


DNSMASQを使用して独自のDNSサーバーを作る:Windowsが他のマシンにインストールしたときにどのように私は、Sを使用するために他のマシンに伝えることができます
ラドゥRădeanu

@Radu接続に関連付けられたDNSサーバーは、コントロールパネルのどこかで変更できます。ネットワークインターフェイスの接続プロパティをプルアップする必要があると思います。
ジル

私はc:\ windows \ system32 \ drivers \ etc \ hostsを使用しましたが、動作します。ありがとう!
ラドゥラデアヌ

私はこれを探して髪を引っ張っていましたが、あなたが提案したようにルーターで見つけました。詳細情報をありがとう!
ジェイソントゥラン

会社のネットワークの場合、インフラストラクチャ部門を指定する必要があります。LinuxサーバーをDNSサーバーリストに追加しますか?
WesternGun

24

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

あなたが求めているので、他のすべてはやり過ぎのようです。そうでなければ、おそらくあなたは尋ねないでしょう。


1
mDNSは、すべてのウィンドウボックスに何かをインストールしないと、Windowsでサポートされないようです。
-Zitrax

1
@Zitrax良い点(ただし、これは* nixサイトです)。Windowsのセットアップに関連する情報を見つけることができます、比較的簡単な- 。
TNE

3
別名ZeroconfまたはBonjour。avahiパッケージによって提供されます。avahi-browse -alrたとえば、ネットワークを照会できます。
ダンマン

4
vi /etc/dhcp3/dhclient.conf

send host-name "ubuntu-laptop";

そして

/etc/init.d/networking restart

クライアントまたはホストでこれを実行する必要がありますか?
-tshepang

最初のビットはdhcpサーバーで実行されます(実行することもできますservice restart dhcpd)。2番目の部分はクライアントで実行され、ほとんどのディストリビューションではとして実行する必要がありますservice networking restart
カレブ

私が覚えているとして、私は唯一のクライアント側でこれを実行する必要があります...
LanceBaynes

3

コンピューターは、どのホスト名がどのIPアドレスに属しているのかを魔法のように知るだけではありません。ローカルホストでさえ、何らかの種類のルックアップが関係しています。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.