オレンジのトップページ

2012年6月20日水曜日

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.1dnsmasq経由



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非対応だった。





0 件のコメント:

コメントを投稿