momoka0122y.hatenablog.com Open in urlscan Pro
35.75.255.9  Public Scan

URL: https://momoka0122y.hatenablog.com/entry/2022/09/12/024202
Submission: On January 18 via manual from US — Scanned from US

Form analysis 1 forms found in the DOM

GET https://momoka0122y.hatenablog.com/search

<form class="search-form" role="search" action="https://momoka0122y.hatenablog.com/search" method="get">
  <input type="text" name="q" class="search-module-input" value="" placeholder="記事を検索" required="">
  <input type="submit" value="検索" class="search-module-button">
</form>

Text Content

読者になる



MOMOKAのブログ

2022-09-12


GSOC CHROMIUM: IP ADDRESS SYNTHESIS FOR AN IPV6 ONLY NETWORK TO CONNECT TO AN
IPV4 ADDRESS LITERAL.

Written in English GSoC chromium


TLDR;

When a client is in an IPv6 only environment it utilises the NAT64 and DNS64 in
the network to connect to IPv4 only servers. However, when chrome tries to
connect to an IPv4 literal (such as when an IPv4 address is directly written in
the search bar) it doesn't use the DNS64 and fails to connect to the address.

With this change Chrome will now append the IPv4 to IPv6 translation prefix
(Pref64::/n) to the IPv4 address, in order for the packet to use the NAT64 in
the network.

 

Code: 

chromium.googlesource.com


HOW THE NAT64 AND DNS64 WORKS




There is a translation technology called NAT64/DNS64 which enables IPv6-only
clients to access IPv4-only servers. 

This is great but it does not work for IP address literals because DNS will not
be used.


HOW MY IMPLEMENTATION WORKS



First, when chrome tries to access a IPv4 literal it checks if it is on an
IPv6-only network.

If it is, it resolves the AAAA record of domain ipv4-only.arpa. This is a
special domain that only contains an A record.  If this name is resolved inside
an IPv6-only network that has a DNS64, the DNS64 will return an answer to the
AAAA request that contains the synthesized IPv6 address(in many cases
64:ff9b::192.0.0.170). (Step1)

With this answer received chrome now knows that there is a DNS64 in the network,
which means by using the translation prefix we can utilize the NAT64. Chrome
will now synthesise an IPv6 address by combining the translation prefix obtained
in Step 1 and the original IPv4 address literal. (Step 2)

chrome will now be able to utilize the NAT64 and access the server via a IPv4
address literal even on a IPv6-only network.


CODEBASE

Made changes in the below files in chromium.

>  * net/base/ip_address.c
>    
>    net/base/ip_address.h
>    
>    net/base/ip_address_unittest.cc
>    
>    net/dns/host_resolver_manager.cc
>    
>    net/dns/host_resolver_manager.h
>    
>    net/dns/host_resolver_manager_unittest.cc
>    
>    net/dns/host_resolver_nat64_task.cc [Added]
>    
>    net/dns/host_resolver_nat64_task.h [Added]

In host_resolver_manager, when an IP literal is passed it checks if the network
is IPv6 only, and if so calls the HostResolverNat64Task that I have created.

In the HostResolverNat64Task it does 3 things. 

 * Resolve the IPv6 address of ipv4only.arpa
 * Extract the IPv4 to IPv6 translation prefix (Pref64::/n) from the returned
   address
 * Synthesise the IPv4 literal address to IPv6 using the Pref64::/n

 

Actual Code: 

https://chromium-review.googlesource.com/c/chromium/src/+/3691238

 

Releases from chrome 108. (Tue, Nov 29, 2022)

 

Before, accessing 1.1.1.1 from an IPv6-only network.



Can't access server when using IPv4 address literal.

after

 



Can successfully access the server by using IPv4 address literal.

 

momokamy6 128日前




広告を非表示にする
関連記事
 * 2023-01-04
   IETF115現地参加記 〜 一週間の全て 〜
   IETF115 London 現地参加記 備忘録を込めてわかりやすさより、…
 * 2022-10-09
   internet draft の書き方。テンプレートを使ってマークダウンで
   TLDR; Internet DraftをIETFへ提出してみました。提出が楽だっ…
 * 2022-07-21
   IETF-114, Philadelphia 見たいやつ
   気になったやつ 気になったやつ 23:00-01:00 Tuesday Session I…
 * 2022-05-26
   GSoC (Google Summer of Code)で chromiumに採択された。
   GSoC (Google Summer of Code) は 参加しているoraganization …
 * 2022-05-09
   rfc826 An Ethernet Address Resolution Protocol (AR…
   rfc826 An Ethernet Address Resolution Protocol (ARP) リンク…

 * もっと読む

コメントを書く
« chromium DNSTask めも (overriding the D… QUIC の initial鍵生成に使用する initial… »

プロフィール
momokamy6
読者です 読者をやめる 読者になる 読者になる
13

このブログについて
検索

注目記事
 * 2023-01-04
   IETF115現地参加記 〜 一週間の全て 〜
 * 2023-01-06
   2022年振り返り
 * 2022-05-20
   東京大学 情報理工学系研究科 創造情報学専攻 院試 プログラミング問題 2022年
 * 2022-09-12
   GSoC chromium: IP address synthesis for an IPv6 only network to connect to an
   IPv4 address literal.
 * 2022-05-26
   GSoC (Google Summer of Code)で chromiumに採択された。
 * 2022-06-09
   RFC9218: Extensible Prioritization Scheme for HTTP をまとめてみた。
 * 2022-10-09
   internet draft の書き方。テンプレートを使ってマークダウンで
 * 2022-03-15
   ネットワーク系で最近調べたこと
 * 2022-08-06
   HTTPS DNS レコードのalpn情報からHTTP/3に繋げに行くchromiumのUseDnsHttpsSvcbAlpn feature
 * 2022-06-24
   マルチパスQUICのdraft-ma-quic-mpqoe とその論文 XLINK: QoE-Driven Multi-Path QUIC
   Transport in Large-scale Video Services を読んだ。

カテゴリー
 * network (13)
 * internet-draft (7)
 * DNS (6)
 * chromium (5)
 * QUIC (5)
 * IETF (4)
 * RFC (4)
 * not 技術 (3)
 * GSoC (2)
 * Written in English (2)
 * 論文読んだ (2)
 * WebSockets (1)

最新記事
 * 2023-01-06
   2022年振り返り
 * 2023-01-04
   IETF115現地参加記 〜 一週間の全て 〜
 * 2022-12-25
   SETTINGS_ENABLE_WEBSOCKETS settings parameter がwebsockets over HTTP/2, HTTP/3
   にほしいからinternet draft 書いて提案する
 * 2022-12-16
   10/23 にDNS-OARC39 に参加してIPv6 only recursive resolvers という題で発表してきた。
 * 2022-10-09
   internet draft の書き方。テンプレートを使ってマークダウンで

月別アーカイブ
 * ▼ ▶
   2023 (2)
   * 2023 / 1 (2)
 * ▼ ▶
   2022 (18)
   * 2022 / 12 (2)
   * 2022 / 10 (1)
   * 2022 / 9 (3)
   * 2022 / 8 (2)
   * 2022 / 7 (1)
   * 2022 / 6 (3)
   * 2022 / 5 (4)
   * 2022 / 4 (1)
   * 2022 / 3 (1)


はてなブログをはじめよう!

momokamy6さんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?

はてなブログをはじめる(無料)
はてなブログとは
momokaのブログ

Powered by Hatena Blog | ブログを報告する




引用をストックしました

ストック一覧を見る 閉じる

引用するにはまずログインしてください

ログイン 閉じる

引用をストックできませんでした。再度お試しください

閉じる

限定公開記事のため引用できません。

読者です 読者をやめる 読者になる 読者になる
13