このトピックでは、Qt WebEngine アプリケーションで DNS over HTTPS (DoH) を使用するための主要なコードスニペットと設定詳細について説明します。
1. はじめに
バージョン 6.6 以降、Qt WebEngine は DNS over HTTPS (DoH) をサポートしています。この機能により、開発者は暗号化された HTTPS プロトコルを介して DNS 名前解決を実行し、Web アプリケーションにおける DNS ハイジャックを防止できます。HTTPDNS は、モバイルアプリやモノのインターネット (IoT) デバイス向けに設計された Alibaba Cloud サービスです。安定性、安全性、精度の高いパブリック再帰解決を提供します。このトピックでは、HTTPDNS の DoH サービスを Qt WebEngine アプリケーションに統合する方法について説明します。
2. 前提条件
Qt WebEngine と DoH を統合する前に、DoH サービスの設定が完了していることを確認してください。
3. 設定
HTTPDNS の DoH サービスとの統合は、主に QWebEngineGlobalSettings::DnsMode API を通じて設定します。
設定は、次の 2 つの部分で構成されます。
セーフモード (
secureMode):DoH とローカル DNS の使用優先度を決定し、さまざまなネットワーク環境における DNS 名前解決ポリシーとバックオフメカニズムを制御します。サーバーテンプレート (
serverTemplates):DNS over HTTPS (DoH) サービスのリストを指定し、利用可能な DoH サーバーのエンドポイントを定義し、高可用性を提供するために複数のサーバーをサポートします。
以下にコード例を示します。
// DoH 設定
QWebEngineGlobalSettings::DnsMode dnsMode;
dnsMode.secureMode = QWebEngineGlobalSettings::SecureDnsMode::SecureWithFallback;
dnsMode.serverTemplates = QStringList{
"https://xxxx.com/dns-query{?dns}"
};
QWebEngineGlobalSettings::setDnsMode(dnsMode);
// DoH を設定した後、WebEngineView を作成して Web ページをロードします
QWebEngineView *webView = new QWebEngineView();
webView->load(QUrl("https://www.example.com"));
webView->show();4. 設定に関する注意事項
DoH 統合テンプレートのフォーマット:テンプレートには
{?dns}パラメーターを含める必要があります。正しい例:
"https://xxxx.aliyunhttpdns.com/dns-query{?dns}"誤った例:
"https://dns.xxxx/dns-query"({?dns}パラメーターがありません。)誤った例:
"https://1.1.X.X/dns-query?dns="(パラメーターのフォーマットが正しくありません。)
DoH 設定はグローバル
QWebEngineGlobalSettingsを介して設定できます。設定は、
QWebEngineViewインスタンスを作成する前に完了する必要があります。設定が完了すると、後続のすべての WebEngineView インスタンスは自動的に DoH 設定を使用します。
高可用性設定
SecureWithFallbackパターンを使用することを推奨します。これにより、極端なシナリオで DoH が利用できなくなった場合のビジネスへの影響を防ぐことができます。フォールバックソリューションとして複数の DoH サーバーを設定します。プライマリ DoH サービスとして HTTPDNS を使用し、ディザスタリカバリのために無料のパブリック DoH サービスなどの他のバックアップ DoH サービスを使用します。
5. まとめ
このトピックでは、Qt WebEngine アプリケーションに DNS over HTTPS (DoH) を統合する方法の概要を説明しました。これには、基本設定、セーフモードの選択、高可用性デプロイメント戦略が含まれます。設定後、パケットキャプチャによる HTTPS リクエストの表示、DNS ログの確認、またはネットワーク障害テストを実行して、DoH の統合を検証します。本番環境での安定性を確保するために、SecureWithFallback モードを使用し、複数の DoH サーバーを設定してください。