dns proxyがいるというので立ててみる
今回はより軽いdnsproxyにしようと思ったが、名前解決先として、resolv.confを自動で見てくれないようなのでステ。dnsmasqを選択した。
dnsmasq:http://www.thekelleys.org.uk/dnsmasq/
だーいぶ前に使ったことある。なつかしー感じ。
DNS proxyだけでなく、名前解決のキャッシュ、ローカルの名前解決、DHCPサーバーの機能がある。
しかし、機能が多いだけにマニュアルの設定項目が多い。
http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
マシン側の設定。
マシンはVIA EPIA。C3 600MHz。いまさら感があるけど、このくらいで十分。
メモリは256M。オンボードビデオと共有。
PCIにIntelのNICが刺さっている。HDDは7GBくらいの骨董品。遅い。
lennyでtaskselになにも指定しないミニマムインストール環境。vimとdropbearを追加。
NICの設定。オンボードのvia-rhineとPCIのe100がいる。VIAをLAN側で。
proxy:~# vi /etc/network/interfaces auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug eth1 iface eth1 inet dhcp
と、今回は、どちらも固定IPオーダーなのだった。
auto lo iface lo inet loopback allow-hotplug eth0 allow-hotplug eth1 iface eth0 inet static address 192.168.2.45 network 192.168.2.0 netmask 255.255.255.0 broadcast 192.168.0.255 #gateway 192.168.2.1 auto eth0 iface eth1 inet static address 192.168.0.30 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 auto eth1
インストール。
proxy:~# apt-get install dnsmasq The following NEW packages will be installed: dbus dbus-x11 dnsmasq dnsmasq-base libdbus-1-3 libx11-6 libx11-data libxau6 libxcb-xlib0 libxcb1 libxdmcp6 Starting DNS forwarder and DHCP server: dnsmasq.
依存パッケージが結構ある。
名前検索は/etc/hostsが優先。なので、外部DNS情報のオーバーライド可能。
なければ/etc/resolv.confのDNSに問い合わせ。データのキャッシュも行う。
設定。
proxy:~# vi /etc/dnsmasq.conf
デフォルトの設定ファイルは解説が細かいのでかなり長い。
名前解決用のサーバーをどこから見つけるか設定。指定しなくてもデフォルトでこれを見る。
resolv-file=/etc/resolv.conf
名前解決を受けるNICの指定。指定しないとどこからでも受けるのかな?
interface=eth0
DHCPサーバーは、今回は不要。
使わないことはできないようなので、アナウンスを流さないよう指定。
キャッシュサイズの変更。面白いことに容量ではなく解決する名前数になっている。デフォルトは150かな?
cache-size=500
使う場合は、こんな感じだったような。
DHCPのレンジ設定。開始アドレス、終了アドレス、リリース時間の順。
dhcp-range=192.168.0.200,192.168.0.254,12h
domain設定。ローカルネット内でのドメインを設定。
domain=example.com
通知情報の設定。最初の3がgw設定を表す。6が通知DNSサーバー。番号はRFC2132のコード番号。
固定アドレスの割り当て。MAC、割り当てIP、名前。
dchp-host=00:A0:B0:xx:xx:xx,192.168.0.199,mymac
syslogに割り当てログを吐く。
log-dhcp
動作確認。
再起動して設定を反映。
proxy:~# /etc/init.d/dnsmasq restart Restarting DNS forwarder and DHCP server: dnsmasq.
ミニマム環境なので、digすらいないので入れる。
proxy:~# apt-get install dnsutils The following NEW packages will be installed: bind9-host dnsutils libbind9-40 libcap2 libdns45 libisc45 libisccc40 libisccfg40 liblwres40 libxml2 sgml-base xml-core
引いてみる。
proxy:~# dig @127.0.0.1 www.debian.org ; <<>> DiG 9.5.1-P3 <<>> @127.0.0.1 www.debian.org ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56197 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.debian.org. IN A ;; ANSWER SECTION: www.debian.org. 20 IN A 128.31.0.51 www.debian.org. 20 IN A 194.109.137.218 ;; AUTHORITY SECTION: debian.org. 1653 IN NS klecker.debian.org. debian.org. 1653 IN NS raff.debian.org. debian.org. 1653 IN NS rietz.debian.org. ;; ADDITIONAL SECTION: klecker.debian.org. 1653 IN AAAA 2001:888:2000:12::2 ;; Query time: 383 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Aug 19 11:08:50 2009 ;; MSG SIZE rcvd: 153
ちゃんと引けている。
マシンローカルでも使用する場合は/etc/resolv.conf先頭に
nameserver 127.0.0.1
を追記。
キャッシュを強制クリアするには。
proxy:~# /etc/init.d/dnsmasq force-reload Restarting DNS forwarder and DHCP server: dnsmasq.
DHCPでresolv.confが書き換えられたとき、決め打ちのDNSサーバーが上書きで消えないよう設定。OpenDNSなどをデフォルトで使いたい時。
proxy:~# vi /etc/dhcp3/dhclient.conf prepend domain-name-servers 192.168.0.1;