Soracom

Users

ドキュメント
Home ドキュメント Virtual Private Gateway (VPG) トラフィックフィルタリング (オプション機能)

ドメインルールの仕様

ドメインフィルタリングの仕組みと評価順序について説明します。トラフィックフィルタリングを有効化する手順やルールを追加・編集する手順については、トラフィックフィルタリングを設定する を参照してください。

ドメインフィルタリングの仕組み

ドメインフィルタリング (FQDN フィルタリング) は、デバイスと DNS サーバーの間でやり取りされる 標準的な DNS ポート (UDP/TCP 53) の平文の DNS クエリと応答 から、SORACOM が ドメイン名と解決された IP アドレスを参照 し、その IP アドレスをもとに 動的に IP ルールを生成 することで実現されます。生成されたルールはデバイスからの通信パケットの評価に利用されます。

サポートする DNS サーバー

ドメインフィルタリングは、以下のいずれの DNS サーバーを利用する場合でも動作します。

DNS サーバーサポート
SORACOM が提供する DNS サーバー (100.127.0.53 / 100.127.1.53)
グループ設定で指定したカスタム DNS サーバー
デバイスに直接設定された任意の DNS サーバー
ドメインフィルタリングは標準的な DNS ポート (UDP/TCP 53) の平文通信が必要です

ドメインフィルタリングは、UDP/TCP 53 番ポートでやり取りされる平文の DNS クエリと応答に含まれるドメイン名と IP アドレスを SORACOM が参照することで動作します。そのため、以下のような名前解決はドメインフィルタリングの対象にならず、正しく動作しません。

  • DoH (DNS over HTTPS) や DoT (DNS over TLS) などの暗号化された DNS: 通信が暗号化されており、内容を参照できません。
  • 53 番以外のポートを使用する DNS: 標準的な DNS ポート (UDP/TCP 53) の通信のみを参照するためです。

デバイスやアプリケーションは、標準的な DNS ポート (UDP/TCP 53) で平文の名前解決を行うように構成してください。

動的に生成される IP ルール

1 つのドメインルールは、DNS 応答に含まれる IP アドレスごとに 1 つの動的な /32 IP ルール として展開されます。たとえば、www.example.com の名前解決で 2 つの IP アドレス (例: 163.139.174.40163.139.174.48) が返された場合、それぞれの IP アドレスに対して /32 の IP ルールが 1 つずつ生成されます。

動的に生成される IP ルールのフィールドは、元のドメインルールから以下のように引き継がれます。

フィールド
cidrDNS で解決した IP アドレス + /32
protocolドメインルールの値
fromPort / toPortドメインルールの値
actionドメインルールの値 (allow のみ)
動的に生成される IP ルールは IP ルールの上限にカウントされません

ドメインフィルタリングから動的に生成された IP ルールは、IP ルールの上限 (VPG ごとに 500 件) にはカウントされません。ドメインルールから多数の IP アドレスが解決されても、IP ルールの上限を消費しません。

ドメインフィルタリングで制御できない通信

ドメインフィルタリングは DNS の名前解決の結果に基づいて動作するため、HTTP のような上位レイヤーの情報 (URL のパスやクエリパラメーターなど) に基づく制御はできません。

制御の単位対応補足
ドメイン名 (例: api.example.com)DNS の名前解決時に判定されます。
URL のパス (例: /foo/bar)-URL のパスは DNS レイヤーでは確認できません。
URL のクエリパラメーター (例: ?id=123)-クエリパラメーターは DNS レイヤーでは確認できません。

たとえば、https://api.example.com/foo への通信を許可しつつ https://api.example.com/bar への通信を拒否するような設定はできません。いずれも DNS の名前解決ではドメイン (api.example.com) として扱われるため、同じルールが適用されます。

ドメインルールの評価順序

ルールの並び順は評価に影響しません

ドメインルールでは、IP ルールと同様に、一覧や CSV の並び順ではなく、最も詳細に一致するルール (ロンゲストマッチ) が適用されます。評価結果を変えるためにルールを並べ替える必要はありません。

判定基準優先される条件
ドメイン名より具体的なパターンが、ワイルドカードを含むパターンに優先します (例: api.example.com*.example.com に優先します)。
プロトコルプロトコルを指定したルールが、ALL (255) を指定したルールに優先します。
ポートポートを指定したルールが、ポート未指定のルールに優先します。
ポート範囲より狭いポート範囲が、より広いポート範囲に優先します。

例: IP ルールで広く拒否し、ドメインルールで個別に許可する

ドメインフィルタリングは IP フィルタリングと組み合わせて、「特定のサービスへの通信のみを許可する」という構成が典型的なユースケースです。以下では、IP フィルタリングですべての通信を拒否し、ドメインフィルタリングで *.example.com への HTTPS (TCP 443) 通信のみを許可します。

IP ルール (すべての通信を拒否):

# cidr, protocol, fromPort, toPort, action
0.0.0.0/0, ALL, any, any, deny

ドメインルール (*.example.com の HTTPS のみ許可):

# fqdnPattern, protocol, fromPort, toPort
*.example.com, TCP, 443, 443

この設定では、デバイスが www.example.com などを名前解決すると、その応答に含まれる IP アドレスに対して、TCP 443 を許可する動的な /32 の IP ルールが生成されます。デバイスからその IP アドレスへの HTTPS 通信は、生成された /32 の IP ルールが 0.0.0.0/0 の拒否する IP ルールよりも詳細なため、許可されます。それ以外の宛先 (*.example.com 以外のドメインなど) への通信は、0.0.0.0/0 の拒否する IP ルールが適用されて拒否されます。

ワイルドカードがマッチするサブドメインの階層について

*.example.comwww.example.comapi.example.com のように example.com の 1 階層下のサブドメイン にのみマッチします。example.com 自体や sub.www.example.com のような 2 階層以上下のサブドメインにはマッチしません。複数階層を許可する場合は、必要なパターンを個別に登録してください。