ローカルネットワークの名前解決
ローカルネットワーク内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)でアクセスできることも確認しておきます。
これでローカルネットワーク内では名前だけでアクセスすることが可能となりました。