前回はMeraki MXにおけるFQDN Firewallルール設定についてまとめました。
通信確認としては恐らく世界で最もシンプルな阿部寛さんのHPを使わせていただきましたが、実際の通信はそんなに簡単ではありません。
今回はYahoo.co.jpを使って試験を行ってみたいと思います。
Yahoo.co.jpの通信確認
まずはyahoo.co.jpをブロックする設定を行います。
まずはnslookupでyahoo.co.jpのIPアドレスを確認してみます。
183.79.219.124を初めとした幾つかのIPアドレスが返ってきていることが確認できます。
まずは一番上の183.79.219.124に対してPingを行ってみます。
Pingは成立しないことが確認できました。
続いて2番手以降の183.79.250.123に対してPingを行います。
こちらもPingは成立しませんでした。
この試験から複数のIPアドレスが返されるような場合においても全てのIPアドレスがACLの対象としてマッピングされることが確認できました。
www.yahoo.co.jpに対する確認
この状態でwww.yahoo.co.jpに対してPingを行います。
Pingは成立しました。名前解決されたIPアドレスは182.22.25.252となります。
このIPアドレスはyahoo.co.jpにて名前解決されているため通信は不可となるはずなのですが、何故か通信が可能でした。
この試験結果によりDNSにより名前解決されたIPアドレスだけがACLの対象になっていないのかもしれません。
Firewallルールにてwww.yahoo.co.jpも拒否(Deny)にする設定を追記してみます。
改めてwww.yahoo.co.jpにpingを行います。
無事Pingが成立しないことが確認できました。
この試験により、ドメイン名だけの記述ではなくホスト名(www等)を含めた記述が必要だということになります。
ワイルドカードの記述
いちいちホスト名を含めたFQDNの記載はやってられないのでワイルドカード(*)を使った記述が可能か確認します。
www.yahoo.co.jpにpingを行い通信が成立しないことが確認できました。
ついでにnews.yahoo.co.jpに対しても通信確認しておきます。
もちろん通信不可となりました。
この試験により、ワイルドカードによる記述も可能であることが確認できました。
DNSクエリ毎に異なるIPアドレスを返信する場合の動作
www.yahoo.co.jp等大量のアクセスが行われるサイトはサイト側にてロードバランスが行われDNSクエリの度に異なるIPアドレスが返されることは多くあります。
www.yahoo.co.jpに2回nslookupをしてみると、
上のスクリーンショットのように"182.22.25.252"、"183.22.16.251"と異なるIPが返ってきていることがわかります。
まずは後から取得した"182.22.16.251"に対してpingを行います。
ACLに設定した通りPingは成立しませんでした。
次に"182.22.25.252"に対してPingを行います。
こちらはPingは成立しました。
この試験結果により、DNSクエリ毎にIPアドレスのマッピングは更新され古いIPアドレスはマッピングから消されていくことになるのが分かりました。
まとめ
今回の試験をまとめると、
- 複数のIPアドレスのレスポンスがある場合は全てのIPアドレスが対象となる。
- FQDN記載はホスト名を含めた記述かワイルドカードの記述が必要
- DNSクエリ毎にテーブルは更新され古いIPアドレスは破棄される
ことが分かりました。
"3"の結果は結構致命的で複数のクライアントからのDNSクエリが発生した場合には各クエリがキャッシュしたIPアドレスとMX上のテーブルとの間に不整合が発生することになりますので設定した意図とは異なる通信結果になる場合がありえます。