chrome system resolver と async resolver

これのつづき

momoka0122y.hatenablog.com

 

上のブログで下のchromeの名前解決の仕方に3つの種類があるって言った。

そして今回は一旦DoHを無視してsystem resolver と async resolverが使われるときのえnetlogを確認する。

 

system resolver 

実装は net::HostResolverManager::ProcTask にある。OSのリゾルバを使用する。

async resolver がうまくできないときに使われる。

async resolver (not DoH)

実装は net::HostResolverManager::DnsTask にある。

chrome自らDNSキャッシュサーバにパケットを送る。OSのリゾルバをそのまま使わないが、DNS configurationは読み込むため、同じDNSキャッシュサーバにアクセスする。(もし 8.8.8.8 に設定されていたらそれに聞くし、ISPの提供するDNSキャッシュサーバが設定されていたらそれを使う。

async resolver (DoH)

あまりよくわかっていないけど、DoHを使う。DoHなので tcpdump port 53 で出てこないし、さらに、tcpdump host [設定されてるDNSキャッシュサーバ] をしてもパケットが表示されなかった。

 

netlog を確認してい

https://netlog-viewer.appspot.com

でnetlogを入れた後eventsに行くがDNS関連のみに絞り込みたかったため&q=type:HOST_RESOLVER_IMPL_JOBで絞り込んだ。

https://netlog-viewer.appspot.com/#events&q=type:HOST_RESOLVER_IMPL_JOB

 

kiwifarms を名前解決できる時とできない時

 

ddd

1181666: HOST_RESOLVER_IMPL_JOB
https://kiwifarms.net
Start Time: 2023-06-28 00:10:37.313

t=12418 [st=   0] +HOST_RESOLVER_MANAGER_JOB  [dt=4586+]
                   --> dns_query_types = [
                         "A",
                         "AAAA",
                         "HTTPS"
                       ]
                   --> host = "https://kiwifarms.net"
                   --> network_anonymization_key = "https://kiwifarms.net same_site"
                   --> secure_dns_mode = 1
                   --> source_dependency = 1181665 (NETWORK_SERVICE_HOST_RESOLVER)
t=12418 [st=   0]    HOST_RESOLVER_MANAGER_JOB_REQUEST_ATTACH
                     --> priority = "IDLE"
                     --> source_dependency = 1181665 (NETWORK_SERVICE_HOST_RESOLVER)
t=12418 [st=   0]    HOST_RESOLVER_MANAGER_JOB_STARTED
t=12418 [st=   0]   +HOST_RESOLVER_MANAGER_DNS_TASK  [dt=3391]
                     --> secure = false
                     --> transactions_needed = [
                           {
                             "dns_query_type": "AAAA"
                           },
                           {
                             "dns_query_type": "A"
                           },
                           {
                             "dns_query_type": "HTTPS"
                           }
                         ]
t=12418 [st=   0]     +DNS_TRANSACTION  [dt=3391]
                       --> hostname = "kiwifarms.net"
                       --> query_type = 28
t=12418 [st=   0]       +DNS_TRANSACTION_QUERY  [dt=3391]
                         --> qname = "kiwifarms.net"
t=12418 [st=   0]          DNS_TRANSACTION_ATTEMPT
                           --> source_dependency = 1181667 (UDP_SOCKET)
t=12418 [st=   0]         +DNS_TRANSACTION  [dt=3391]
                           --> hostname = "kiwifarms.net"
                           --> query_type = 1
t=12418 [st=   0]           +DNS_TRANSACTION_QUERY  [dt=3391]
                             --> qname = "kiwifarms.net"
t=12418 [st=   0]              DNS_TRANSACTION_ATTEMPT
                               --> source_dependency = 1181668 (UDP_SOCKET)
t=12418 [st=   0]             +DNS_TRANSACTION  [dt=3391]
                               --> hostname = "kiwifarms.net"
                               --> query_type = 65
t=12418 [st=   0]               +DNS_TRANSACTION_QUERY  [dt=3391]
                                 --> qname = "kiwifarms.net"
t=12418 [st=   0]                  DNS_TRANSACTION_ATTEMPT
                                   --> source_dependency = 1181669 (UDP_SOCKET)
t=12424 [st=   6]                  HOST_RESOLVER_MANAGER_JOB_REQUEST_ATTACH
                                   --> priority = "HIGHEST"
                                   --> source_dependency = 1181675 (SSL_CONNECT_JOB)
t=14445 [st=2027]                  DNS_TRANSACTION_RESPONSE
                                   --> source_dependency = 1181667 (UDP_SOCKET)
t=14445 [st=2027]                  DNS_TRANSACTION_ATTEMPT
                                   --> source_dependency = 1181692 (UDP_SOCKET)
t=14445 [st=2027]                  DNS_TRANSACTION_RESPONSE
                                   --> source_dependency = 1181668 (UDP_SOCKET)
t=14445 [st=2027]                  DNS_TRANSACTION_ATTEMPT
                                   --> source_dependency = 1181693 (UDP_SOCKET)
t=14445 [st=2027]                  DNS_TRANSACTION_RESPONSE
                                   --> source_dependency = 1181669 (UDP_SOCKET)
t=14445 [st=2027]                  DNS_TRANSACTION_ATTEMPT
                                   --> source_dependency = 1181694 (UDP_SOCKET)
t=14451 [st=2033]                  DNS_TRANSACTION_RESPONSE
                                   --> source_dependency = 1181693 (UDP_SOCKET)
t=14451 [st=2033]                  DNS_TRANSACTION_ATTEMPT
                                   --> source_dependency = 1181695 (UDP_SOCKET)
t=14451 [st=2033]                  DNS_TRANSACTION_RESPONSE
                                   --> source_dependency = 1181694 (UDP_SOCKET)
t=14451 [st=2033]                  DNS_TRANSACTION_ATTEMPT
                                   --> source_dependency = 1181696 (UDP_SOCKET)
t=15804 [st=3386]                  DNS_TRANSACTION_RESPONSE
                                   --> additional_answer_count = 0
                                   --> answer_count = 0
                                   --> rcode = 2
                                   --> source_dependency = 1181695 (UDP_SOCKET)
t=15804 [st=3386]                  DNS_TRANSACTION_ATTEMPT
                                   --> source_dependency = 1181719 (UDP_SOCKET)
t=15809 [st=3391]                  DNS_TRANSACTION_RESPONSE
                                   --> source_dependency = 1181719 (UDP_SOCKET)
t=15809 [st=3391]             -DNS_TRANSACTION
                               --> net_error = -102 (ERR_CONNECTION_REFUSED)
t=15809 [st=3391]   -HOST_RESOLVER_MANAGER_DNS_TASK
                     --> dns_query_type = "A"
                     --> net_error = -102 (ERR_CONNECTION_REFUSED)
t=15809 [st=3391]   -DNS_TRANSACTION
                     --> net_error = -3 (ERR_ABORTED)
t=15809 [st=3391]   -DNS_TRANSACTION
                     --> net_error = -3 (ERR_ABORTED)
t=15809 [st=3391]   +HOST_RESOLVER_SYSTEM_TASK  [dt=1195+]
t=15809 [st=3391]      HOST_RESOLVER_MANAGER_ATTEMPT_STARTED
                       --> attempt_number = 1
t=17004 [st=4586] 

このログはChromeでのDNS解決プロセスを表示しています。プロセスはホスト"https://kiwifarms.net"の`HOST_RESOLVER_MANAGER_JOB`から始まり、"A"(IPv4アドレス)、"AAAA"(IPv6アドレス)、"HTTPS"といったさまざまなタイプのDNSクエリを解決しようと試みます。

プロセスの開始時点で、非同期(組み込み)リゾルバをDNS_TRANSACTIONを用いて使用しようと試みています。このログには、それぞれのDNSクエリタイプに対してホスト名を解決しようと試みる一連のトランザクションが見られます。これらのトランザクションには、ATTEMPTとその後のRESPONSEが含まれます。

DNS_TRANSACTION_RESPONSEとERR_CONNECTION_REFUSEDの行は、DNSサーバーが接続を拒否していることを示しています。

非同期DNS解決がnet_error = -102 (ERR_CONNECTION_REFUSED)で失敗すると、ブラウザはシステムリゾルバを使用するHOST_RESOLVER_SYSTEM_TASKにフォールバックします。

こちらも失敗してます。

 

成功する例 (kiwifarmoの名前解決をブロックしてないネットワークから)

1182579: HOST_RESOLVER_IMPL_JOB
https://kiwifarms.net
Start Time: 2023-06-28 00:13:15.029

t=2136 [st= 0] +HOST_RESOLVER_MANAGER_JOB  [dt=14]
                --> dns_query_types = [
                      "A",
                      "HTTPS"
                    ]
                --> host = "https://kiwifarms.net"
                --> network_anonymization_key = "https://kiwifarms.net same_site"
                --> secure_dns_mode = 1
                --> source_dependency = 1182577 (NETWORK_SERVICE_HOST_RESOLVER)
t=2136 [st= 0]    HOST_RESOLVER_MANAGER_JOB_REQUEST_ATTACH
                  --> priority = "IDLE"
                  --> source_dependency = 1182577 (NETWORK_SERVICE_HOST_RESOLVER)
t=2136 [st= 0]    HOST_RESOLVER_MANAGER_JOB_STARTED
t=2136 [st= 0]   +HOST_RESOLVER_MANAGER_DNS_TASK  [dt=13]
                  --> secure = false
                  --> transactions_needed = [
                        {
                          "dns_query_type": "A"
                        },
                        {
                          "dns_query_type": "HTTPS"
                        }
                      ]
t=2136 [st= 0]     +DNS_TRANSACTION  [dt=13]
                    --> hostname = "kiwifarms.net"
                    --> query_type = 1
t=2136 [st= 0]       +DNS_TRANSACTION_QUERY  [dt=13]
                      --> qname = "kiwifarms.net"
t=2136 [st= 0]          DNS_TRANSACTION_ATTEMPT
                        --> source_dependency = 1182580 (UDP_SOCKET)
t=2136 [st= 0]         +DNS_TRANSACTION  [dt=5]
                        --> hostname = "kiwifarms.net"
                        --> query_type = 65
t=2136 [st= 0]           +DNS_TRANSACTION_QUERY  [dt=5]
                          --> qname = "kiwifarms.net"
t=2136 [st= 0]              DNS_TRANSACTION_ATTEMPT
                            --> source_dependency = 1182581 (UDP_SOCKET)
t=2140 [st= 4]              HOST_RESOLVER_MANAGER_JOB_REQUEST_ATTACH
                            --> priority = "HIGHEST"
                            --> source_dependency = 1182586 (SSL_CONNECT_JOB)
t=2141 [st= 5]              DNS_TRANSACTION_RESPONSE
                            --> additional_answer_count = 3
                            --> answer_count = 1
                            --> rcode = 0
                            --> source_dependency = 1182580 (UDP_SOCKET)
t=2141 [st= 5]           -DNS_TRANSACTION_QUERY
t=2141 [st= 5]         -DNS_TRANSACTION
t=2149 [st=13]          HOST_RESOLVER_MANAGER_DNS_TASK_TIMEOUT
                        --> started_transactions = [
                              {
                                "dns_query_type": "HTTPS"
                              }
                            ]
t=2149 [st=13]     -DNS_TRANSACTION
                    --> net_error = -3 (ERR_ABORTED)
t=2149 [st=13]   -HOST_RESOLVER_MANAGER_DNS_TASK
                  --> results = {
                        "aliases": [
                          "kiwifarms.net"
                        ],
                        "canonical_names": [
                          "kiwifarms.net"
                        ],
                        "expiration": "13332247175890592",
                        "ip_endpoints": [
                          {
                            "endpoint_address": "103.114.191.1",
                            "endpoint_port": 0
                          }
                        ]
                      }
t=2150 [st=14] -HOST_RESOLVER_MANAGER_JOB