Linux(Ubuntu)サーバーを自宅のLAN内にインストールしました。最初は、DHCPインターフェイスを使用するように自動的に構成されています。そのサーバーのホスト名を使用して、別のコンピューターからこのサーバーに接続しています。了解しました。ルーターはホームネットワーク内でDHCPを使用するように構成されており、各コンピューターにIPを自動的に提供します。しかし、SSHを使用してこのホストに接続すると、サーバーの新しく割り当てられた各IPからフィンガープリントを受け入れる必要があるという警告が表示され、少し面倒です。そこで、静的IPアドレスを使用して/etc/network/interfaces
ファイルを次のように編集するように構成しました。
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1
ホスト名を使用してこのサーバーに接続できないことを除いて、すべて正常に機能します。 ping
ingすると、DHCPによって動的に指定された最後に割り当てられたIPアドレス、そしてもちろんDestination Host is Unreachable
にルーティングされていることがわかります。 /etc/hosts
ファイルにハードコーディングできることは知っていますが、DHCPでうまく機能し、静的では機能しない理由を知りたいのです。
どうやら、私は何かを理解していません。前もって感謝します!
Static ipを使用する場合は、インターフェイス構成で最初のDNSサーバーとしてルーターを割り当てる必要があります。したがって、ubuntu 12.04を使用している場合は、たとえば次のように追加します。
dns-nameservers 192.168.1.1
次に、ネットワークを再起動します。
/etc/init.d/networking restart
DNS構成の詳細については、 インターフェイスで静的DNSを構成するにはどうすればよいですか? を確認してください。
サーバーにDHCPを使用していた場合、サーバーは新しいIPアドレスを取得するたびにそのホスト名をDNSサーバーに登録していました。 IPは静的であるため、DHCPサーバーと相互作用しないため、DHCPサーバーはホスト名をDNSに渡すことができません。
これを直接行う必要があります。ルーター(DNSサーバーであると想定)がWeb GUIでサポートしている場合は、ルーターのhostsファイルをサーバーのホスト名で更新できる可能性があります。
そうでないが、ルーター上のDNSサーバーが(DHCPサーバーだけでなく)ローカルネットワークからの更新を受け入れる場合は、次のようにすることができます。
Sudo apt-get install dnsutils
nsupdate
> update add hostname.domainame 86400 a 192.168.1.101
> send
「ドメイン名」は、ローカルDNSサフィックスが何であれです。このアプローチの欠点は、再起動するとルーターの設定が失われることです。そのため、サーバーがスクリプトとcronを介してこの更新を定期的に送信する必要があります。
DNSサーバーがローカル更新を受け入れない場合(おそらくそれは最善の策ではなく、より良い長期的な解決策は、ルーターからではなくサーバーからDNSを実行することです。
bind は、Linuxで最も一般的に使用されているDNSサーバーですが、より軽量な代替手段もあります。
おそらく、より簡単な代替手段は、サーバーをDHCPの使用に戻すことですが、毎回同じIPアドレスを割り当てるようにルーターを構成します。多くのルーターはこの機能をサポートしており、ホスト名は毎回登録に戻る必要があることを意味します。