Ubuntu 12.04/16.04デスクトップでdnsmasqの動作確認と、IPv6と、インターネットサイトのDNSSEC検証
1.Ubuntu16.04デスクトップでRFC3041の一時IPv6アドレス
ネットワークマネージャでデフォルト無効ですが、有効(一時アドレス優先)にすると一時IPv6アドレスが実際のアクセスに使われる。
この操作でIPv6設定のsysctlの設定値が変わる。詳しくはこことかここ。
http://dr.slump.jp/IPv6/rfc3041/
https://news.mynavi.jp/article/ipv6-6/
有効(一時アドレス優先)のときuse_tempaddrには2が設定される。次のコマンドで確認できる。
hoge$ sysctl -a| grep use_tempaddr
・
・
net.ipv6.conf.[インタフェース名].use_tempaddr = 数字
<= 0 無効
==1 有効 ただし通常アドレス優先
>1 有効 匿名アドレス優先
割り当てられた匿名アドレスが使われる時間は次のパラメータにより設定されていて、標準では1日。翌日新しいアドレスに変わる。
sysctl -a |grep temp_valid_lft 604800=7日
sysctl -a |temp_prefered_lft 86400=1日
2.dnsmasqがNetworkManager経由で動いているから/etc/resolv.confを手修正してはいけないのと、実際に使っているDNSサーバを調べる手順。
dnsmasqが使われるようになったUbuntu12.04の変更点が技術評論社のWEB解説にある。
Ubuntu Weekly Topics 2012年3月2日号 「DNSレゾルバの変更・・・」
http://gihyo.jp/admin/clip/01/ubuntu-topics/201203/02
/etc/resolv.confは常に127.0.0.1で編集しない。実際にPCのdnsmasqが使うDNSサーバは次のコマンドでわかる。
Ubuntu12.04では
cat /run/nm-dns-dnsmasq.conf
server=163.x.x.x.x
server=163.y.y.y.y
server=z:z:z::z
Ubuntu16.04では該当ファイルが見つからないので、ネットワークマネージャのCLIコマンドで確認すると良いと思う。
hoge$ nmcli dev show
3.うちのデスクトップ機ではdnsmasqを停止するか?
dnsmasqの意義はレスポンスの無いDNSサーバを使わず耐障害性を確保できる。ことにあるらしい。やっぱ停止しよう。
先の技術評論社の記事に、
>名前解決の失敗時,これまでのresolv.confに直接nameserver指定を行う方式に比べ,他のDNSサーバーへの問い合わせまでの待ち時間が短くなります。
さらに「NetworkManager+dnsmasqで名前解決の耐障害性を向上 」というBLOG
http://blog.father.gedow.net/2016/02/12/networkmanager-dnsmasq/
によると
>(従来の/etc/resolvでは)上の nameserver から順に利用され、使えない場合は毎回
options timeout:M 秒 attempts:N 回
を経て次の nameserver を試行する、という流れになります。この例のように nameserver が1つしかない場合はワンパンで即死する可能性がありますし、複数あっても名前解決のたびに処理が数秒停止するというのは、結構な致命傷になりえます。
dnsmasqを使って耐障害性を確保するには複数のDNSサーバを記述しておくことが必要で、DNS=8.8.8.8の一個だけ指定しているのでは意味ないので、複数指定すべきですね。それもプロバイダーとGoogleDNSといったように、提供元を分けるのが良さそう。
dnsmasqのもうひとつのメリットのDNSキャッシュは、実効プロセスを見るとUbuntu 16.04 desktopでもcache-size=0と無効になってることを確認。
hoge$ ps ax| grep dnsmasq
1468 ? S 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 ・・・・
うちの作業開発用デスクトップ機で、ネットワークプロファイルを切り替えて検証しているとき、dnsmasqは/etc/resolv.confのDNSがわかりにくくなるというデメリットだけかも。
dnsmasqを無効にして/etc/resolv.conf を使う昔ながらの方法に戻す手順はこれ。
/etc/NetworkManager/NetworkManager.conf を編集して
dns=dnsmasq の行を無効にします。
4.dnsmasqのキャッシュが無効になっているのを、憩いの場方式でキャッシュを有効にしてみるテスト。
(以下のテストはUbuntuデスクトップ標準のdnsmasqを有効のまま行っています。)
憩いの場 dnsmasqのDNSキャッシュを有効にしたい(Ubuntu 12.04)
http://linux.ikoinoba.net/index.php?UID=1337088204
1. /etc/NetworkManager/NetworkManager.conf の dns=dnsmasq を消す。
*もともと入っているdnsmasqはサブセットなのでフルパッケージのdnsmasqを入れる
2. sudo apt-get install dnsmasq*憩いの場では無効にしていたが、dnssecも有効にする。
3. /etc/dnsmasq.d/hoge に
listen-address=127.0.0.1
cache-size=500
proxy-dnssec
4. sudo service network-manager restart
5. sudo service dnsmasq restart
6. /etc/resolv.conf の上部に「nameserver 127.0.0.1」があるか確認する。作業は以上。
dig hogehoge
で2回目が0msと表示されればキャッシュが効いてる。
dig +dnssec hogehoge
では2回目以降も毎回DNSSEC検証をするので時間は変わらなかった。
この標準dnsmasqパッケージの導入後は、実際にPCのdnsmasqが使うDNSサーバを調べるファイルの位置が変わる。
cat /run/dnsmasq/resolv.conf
インターネットサイトのDNSSEC検証テストしてみる。
digコマンドでflagsに「ad」と表示されればDNSSEC検証に対応している。このように。;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1
どの場合もDNSSECに対応していた。
dig +dnssec iij.ad.jp @x.x.x.x(PPPoEで自動取得したIPV4のDNSサーバ)
dig +dnssec iij.ad.jp @2001:a7ff:5f01::a(ネクスト網内のIPv6のDNSサーバ)dig +dnssec iij.ad.jp @127.0.0.1(dnsmasq経由)
dnsmasqで速度テストもしてみる。
DNSSEC検証を付けるとキャッシュは効かない。
dig www.yahoo.co.jp @127.0.0.1
テスト1回目 12ms
テスト2回目 0ms よく効いている。
dig +dnssec www.jprs.jp @127.0.0.1
テスト1回目 13ms
テスト2回目 12ms 変わりない。
5.FirefoxのプラグインDNSSECでサイトを検証してみる
システムで使用しているDNSサーバがDNSSECに対応していない場合でもプラグインによるDNSSEC検証は個別に行われているので、苦労してDNSSEC対応DNSサーバを作ったり探さなくても大丈夫。
いくつか見てみたが、iijは対応しているが、Yahoo.co.jpやYahoo.com、googleもDNSSEC非対応だった。
コメント
コメントを投稿