Meraki MX FQDNを使ったFirewallルール 基本設定、動作編

Firewallルールといえば一般的にはSource IP、Source Port#、Dest IP、Dest Port#を中心にTCPUDP、ICMP等を設定しPermit or DenyでACL設定を行います。
いわゆる5tuple(タプル)と呼ばれています。
Internetとの境界線に設置するFirewallではアウトバンド・ルールにてDest IPを設定するのは難しく多くの場合はDest IPはAnyにしてDest Port#でACL設定していると思います。
Meraki MXではアウトバンドルールにおいてFQDNを使った設定が可能になりますので、その設定方法と制限についてまとめておきます。

ただ、いざ設定を行ってみると興味深い内容となりましたので何回かに分けさせていただきます。

試験で使用するInternet上のHP

世の中には星の数ほどのHPが存在しますが、今回は最もシンプルで最も有名なHPを使って検証を行いました。
俳優の阿部寛さんのHPはクラッシックな作りになっているのが有名でInternetアクセスを測定するためにもベンチマーク的に使われていたりします。
私もThousandEyesで定期的にこのHPにアクセスして測定したります。。

abehiroshi.la.coocan.jp

このHPをnslookupもしくはpingをおこないIPアドレスを確認しておきます。

IPアドレスは222.158.205.72であることがわかります。

通常時のパケットキャプチャ

まずはACL設定無しの状態でHPにアクセスしパケットキャプチャを行います。
最初にDNSで"abehiroshi.la.coocan.jp"の名前解決を行っていることが確認できます。

ちなみに今回は訳あってMXのDHCP設定としてDNSサーバを「上位DNSへプロキシ」に設定しています。
ですのでクライアントから見たDNSサーバはMXのIPアドレスである"192.168.2.1"となっています。
実態としてはその上流にはGoogleDNSサーバ(8.8.8.8 or 8.8.4.4)にて名前解決を行なっていることになります。

そしてその後HTTP(暗号化されていない!)にて通常の通信が開始されます。

著作権(肖像権?)の問題もあるのでHPの表示画面のキャプチャは割愛します。

FQDN設定

正常時の通信確認が無事行えたのでMeraki MXにFQDNを使ってFirewallルールを設定を行います。
阿部さんのHPのFQDNである「abehiroshi.la.coocan.jp」を記述し、拒否(Deny)で設定します。

FQDNルールの動作フロー

通信確認を行う前にFQDNにてFirewallルールを設定した場合の動作フローをまとめておきます。
FQDNルールはクライアントからのDNSクエリ・レスポンスからFQDNと実際のIPアドレスとのマッピングを行います。

この仕組みから分かる通り、DNSクエリ・レスポンスは必ずMeraki MXを通過する必要があります。
クライアントとDNSサーバ間の通信がMXを通過しない場合、MXは設定されたFQDNから実際のIPアドレスを知る術が無いことになりますのでこの機能は動作しないことになります。

通信確認

念の為通信確認用PCのブラウザのキャッシュを消去し、端末自体も再起動させてから試験を行います。
いざブラウザを立ち上げHPにアクセスしてみると、見事HPが表示されないことが確認できました。
パケットキャプチャにて確認を行います。
通常時と同様にDNSにてIPアドレス(222.158.205.72)の取得が行えていることが確認できます。

その後、222.158.205.72への通信はSYNによる3wayハンドシェイクが完了せず、通信ができていないことが確認できました。

念の為222.158.205.72宛にpingで通信確認を行います。

タイムアウトとなり通信不可となっていることが確認できました。

まとめ

FQDNを使った基本的な動作フローに関してまとめてみました。
動作としてはシンプルでDNSからFQDNIPアドレスマッピングをMXが行い、通常のFirewallルールと同様にIPアドレスベースでACLが動作するという仕組みです。
しかし、シンプルな動作であるが故に実際のユースケースにあった設定をしてみると色々とわかってくることもありましたので次の回ではMeraki Documentに書かれていない制限等をまとめてみたいと思います。

documentation.meraki.com