ローカルネットワークの名前解決

ローカルネットワーク内PCにアクセスするときIPアドレスでアクセスするのがめんどくさいので
URLみたいに名前でアクセスできるようにしてみました。


方法としてはローカルDNSに各PCのIPアドレス登録、登録したIPアドレスDHCPで配布するようにしました。
このやり方ならローカル内PCをそれぞれ固定IPアドレスで設定する必要がなくなりサーバで一元管理ができるので
楽できるのではないかと思っています。

インストール

DNSといえばbindが有名ですが今回はローカルキャッシュがメインのお仕事となりますのでunboundを使用します。
DHCPに関してはISC DHCPを使用します。

$ sudo aptitude install unbound dhcp3-server

設定

unboud

シビアな運用は考えていないのでほぼデフォルトです。
主にローカルネットワーク内のプライベート用コンテンツサーバの設定を追記しています。

$ sudo vi /etc/uncound/unbound.conf

server:
    verbosity: 1                                    #デフォルト
    interface: 0.0.0.0                              #DNS問い合わせを受け付けるのに使うIPアドレス
    access-control: 127.0.0.1/32 allow              #自身のアクセス許可
    access-control: 192.168.0.0/24 allow            #ローカル内PCのアクセス許可
    access-control: 0.0.0.0/0 deny                  #許可以外全て受け付けない
    local-zone: "local.net." static                 #ドメイン名
    local-data: "hoge.local.net. IN A 192.168.0.20" #正引き用PC名設定(管理化のIPアドレスを持つ機器全て設定)
    local-data-ptr: "192.168.0.20 hoge.local.net."  #逆引き用IPアドレス設定(管理化のIPアドレスを持つ機器全て設定)
    local-data: "fuga.local.net. IN A 192.168.0.21"
    local-data-ptr: "192.168.0.21 fuga.local.net."
    :
dhcp

unboundで設定したPCにIPアドレスを配布する設定を行います。
必要そうなところを抜粋します。

$ sudo vi /etc/dhcp/dhcpd.conf

#192.168.0.0/24のネットワークに対するDHCPサーバの定義です
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.100 192.168.0.110;       #192.168.0.100〜110の間でIPアドレスを配布
    option domain-name "local.net";          #ドメイン名(DNSサフィックス)
    option domain-name-servers 192.168.0.10; #DNSサーバ(=自分)のIPアドレス
    option roters 192.168.0.1;               #デフォルトゲートウェイ(=ルータ)のIPアドレス

    #unboundの正引き、逆引き設定をIPアドレスが変わるたびに変更するのがめんどくさいので
    #それぞれの機器(MACアドレス)に対して設定したIPアドレスを配布するようにします
    #rangeで指定したIPアドレス以外でも配布してくれるみたいです。
    host hoge1 {                             #hostは一意の名前
        hardware ethernet XX:XX:XX:XX:XX:XX; #MACアドレス
        fixed-address 192.168.0.20;          #unboundで設定したIPアドレス
    }
    host hoge2 {
        hardware ethernet XX:XX:XX:XX:XX:XX;
        fixed-address 192.168.0.xx;
    }
}

サーバ再起動

$ sudo /etc/init.d/unbound restart
$ sudo /etc/init.d/isc-dhcp-server restart

確認

DNSが有効か確認します

#正引き確認(ANSWER SECTIONに登録IPアドレスが表示されてればOK)
$ dig hoge.local.net
;; ANSWER SECTION
hoge.local.net.    xxxx    IN      A       192.168.0.20

#逆引き確認(ANSWER SECTIONに名前が表示されていればOK)
$ dig -x 192.168.0.20
20.0.168.192.in-addr.arpa. xxxx IN      PTR     hoge.local.net.

IPアドレスが配布されるか確認します
クライアントがwindowsなのでコマンドプロンプトから「ipconfig /renew」を打って
IPアドレスが取得できればOKです
また、DHCPサーバ設定でドメイン名(DNSサフィックス)を配布するようにしているので
正式名(\\hoge.local.net)とドメイン省略名(\\hoge)でアクセスできることも確認しておきます。


これでローカルネットワーク内では名前だけでアクセスすることが可能となりました。