Chuyển đổi IPv4 sang IPv6

Nhập một địa chỉ IPv4 để chuyển IPv4 sang IPv6 và xem mọi địa chỉ IPv6 mang nó, từ dạng ánh xạ IPv4 trong log của bạn đến NAT64 và 6to4, viết theo RFC 5952 và ở dạng đầy đủ, mỗi dạng được đánh dấu đang dùng, nay hiếm gặp hay đã lỗi thời.

Bố cục bit theo RFC 4291, 6052, 8215 và 3056 · văn bản theo RFC 5952 · chạy ngay trong trình duyệt của bạn

Đọc theo dạng thập phân có dấu chấm

Các địa chỉ IPv6 mang 192.0.2.33
Địa chỉ dành cho tài liệu (RFC 5737)Thập phân 3221226017Hex 0xC0000221
Ánh xạ IPv4 Đang dùngSocket, log và cơ sở dữ liệu · RFC 4291
NAT64, prefix well-known Đang dùngMạng chỉ có IPv6 truy cập IPv4 · RFC 6052Địa chỉ ví dụ: dùng thật cần một IPv4 toàn cầu
Prefix NAT64 của mạng bạn Đang dùngPrefix và độ dài, như mạng công bố · RFC 6052
Thêm prefix NAT64 của mạng
NAT64, khối dùng cục bộ Đang dùnghiển thị /96; độ dài do mạng chọn · RFC 8215
6to4 Nay hiếm gặp/48 của site · RFC 3056Địa chỉ ví dụ: dùng thật cần một IPv4 toàn cầu
ISATAP Nay hiếm gặpdưới fe80::/64 (/64 nào cũng được) · RFC 5214
IPv4-translated Nay hiếm gặpChuyển đổi stateless kiểu cũ (SIIT) · RFC 2765
Tương thích IPv4 Đã lỗi thờiKhông dùng nữa: đã loại bỏ · RFC 4291
Ví dụ

Dạng có dấu chấm, một số (3221225985), hex hoặc một URL. Chuyển đổi ngay trong trình duyệt của bạn; không gửi gì đi.

Làm sao chuyển IPv4 sang IPv6?

Viết 32 bit của địa chỉ IPv4 thành hai nhóm hex và đặt chúng vào chỗ mà một định dạng IPv6 dành cho chúng: với dạng ánh xạ IPv4 thông dụng, đó là sau ::ffff:, nên 192.0.2.33 trở thành ::ffff:c000:221, viết là ::ffff:192.0.2.33.

Mỗi phần thập phân thành hai chữ số hex (192 = c0, 0 = 00, 2 = 02, 33 = 21), và bốn cặp đó tạo thành hai nhóm 16 bit. RFC 5952 khuyến nghị giữ dạng có dấu chấm sau ::ffff: vì nó cho thấy các bit mang ý nghĩa gì.

Việc này chỉ thay đổi cách viết địa chỉ. Nó không cấp cho thiết bị một địa chỉ IPv6 hay kết nối IPv6; những thứ đó đến từ mạng.

1Mỗi phần sang hex192c00002023321
2Hai nhóm 16 bitc000 : 221c0 00 → c000 · 02 21 → 0221 → 221
3Đặt sau prefix::ffff:192.0.2.33= ::ffff:c000:221
192.0.2.33 sang dạng ánh xạ IPv4, từng bước một.
Công cụ chuyển đổi IPv4 sang IPv6 liệt kê mọi dạng IPv6 của 192.0.2.33 và vị trí 32 bit của nóCông cụ chuyển đổi IPv4 sang IPv6 liệt kê mọi dạng IPv6 của 192.0.2.33 và vị trí 32 bit của nóIPv4 của bạn ở dạng hex192.0.2.33 là c0 00 02 21: 8 chữ số mà mọi dạng IPv6 đều mang.Các bit đi đâuCùng 8 chữ số đó chuyển tới bit 96–127 với ánh xạ và NAT64, và tới bit 16–47 với 6to4.Còn được dùng không?Đang dùng, nay hiếm gặp hay đã lỗi thời, theo các RFC và dữ liệu lưu lượng.Prefix của mạng bạnNhập prefix NAT64 và độ dài để có địa chỉ mà bộ chuyển đổi của bạn dùng.Nén hay đầy đủVăn bản RFC 5952, cách viết còn lại bên dưới, và đủ 32 chữ số chỉ với một nút gạt.
Một địa chỉ IPv4 ở mọi định dạng IPv6, kèm vị trí 32 bit của nó và việc định dạng đó còn được dùng hay không.

Nên dùng dạng IPv6 nào?

Dùng dạng ánh xạ IPv4 trong phần mềm (socket, log, cơ sở dữ liệu) và prefix NAT64 của mạng bạn trên mạng chỉ có IPv6; các dạng khác nay hiếm gặp hoặc đã bị loại bỏ.

Địa chỉ ánh xạ không bao giờ xuất hiện trên đường truyền. Địa chỉ NAT64 thì có, và prefix well-known 64:ff9b::/96 chỉ được mang địa chỉ IPv4 toàn cầu (RFC 6052). 6to4 cũng cần một địa chỉ IPv4 công cộng.

Địa chỉ tương thích IPv4 đã lỗi thời, và prefix IPv4-translated của SIIT đã nhường chỗ cho các prefix theo RFC 6052.

Định dạngDùng choTrạng thái192.0.2.33 trở thành
Ánh xạ IPv4RFC 4291Socket, log và cơ sở dữ liệuĐang dùng::ffff:192.0.2.33
NAT64, prefix well-knownRFC 6052Mạng chỉ có IPv6 truy cập IPv4Đang dùng64:ff9b::c000:221
NAT64, khối dùng cục bộRFC 8215NAT64 riêng của một mạng, trong 64:ff9b:1::/48Đang dùng64:ff9b:1::c000:221
6to4RFC 3056Đường hầm tự động, nay hiếm gặpNay hiếm gặp2002:c000:221::/48
ISATAPRFC 5214Đường hầm trong một site, nay hiếm gặpNay hiếm gặpfe80::5efe:c000:221
IPv4-translatedRFC 2765Chuyển đổi stateless kiểu cũ (SIIT)Nay hiếm gặp::ffff:0:192.0.2.33
Tương thích IPv4RFC 4291Không dùng nữa: đã loại bỏĐã lỗi thời::c000:221
Mọi dạng IPv6 chuẩn của một địa chỉ IPv4, kèm công dụng và việc nó còn được dùng hay không.

Địa chỉ IPv6 ánh xạ IPv4 là gì?

Đó là một địa chỉ IPv4 được viết như một địa chỉ IPv6: 80 bit 0, 16 bit 1, rồi địa chỉ IPv4 32 bit (::ffff:0:0/96), để phần mềm chỉ có một socket IPv6 vẫn xử lý được các đầu kết nối IPv4.

Địa chỉ ánh xạ chỉ tồn tại bên trong phần mềm; IANA đánh dấu khối này là không được chuyển tiếp. Điều đó có khía cạnh bảo mật: một gói tin từ ::ffff:127.0.0.1 có thể vượt qua các kiểm tra vốn chỉ dành cho chính máy đó, nên bộ lọc phải bỏ ánh xạ trước khi so sánh (RFC 4942).

Cơ sở dữ liệu nhận ra chúng: IS_IPV4_MAPPED() của MySQL chấp nhận đuôi có dấu chấm lẫn đuôi hex, và PostgreSQL in chúng ở dạng ký hiệu hỗn hợp.

80 bit 00000:0000:0000:0000:000016 bit 1ffffđịa chỉ IPv4, 32 bit192.0.2.33
bên trong phần mềm accept() → ::ffff:192.0.2.33
trên đường truyền không bao giờ được gửi IANA: không được chuyển tiếp
128 bit của ::ffff:192.0.2.33, vẽ đúng tỷ lệ, và nơi dạng này tồn tại.

Quá trình chuyển từ IPv4 sang IPv6 diễn ra thế nào?

Các mạng chạy song song cả hai giao thức (dual-stack), còn mạng chỉ có IPv6 truy cập internet IPv4 qua chuyển đổi: NAT64 cùng DNS64, hoặc 464XLAT trên điện thoại.

Với NAT64, DNS64 tạo bản ghi AAAA từ bản ghi A của một host, và bộ chuyển đổi đưa lưu lượng sang IPv4. Với 464XLAT, bộ chuyển đổi trên điện thoại (CLAT) biến các gói tin IPv4 của ứng dụng thành IPv6, và NAT64 của nhà mạng (PLAT) biến chúng trở lại thành IPv4 trên các địa chỉ công cộng dùng chung.

Quá trình này đã đi được khoảng một nửa: ngày 22 tháng 10 năm 2026, 47,13% người dùng truy cập Google qua IPv6 (Google), và APNIC Labs ghi nhận 43,8% người dùng trên toàn thế giới có khả năng dùng IPv6.

Ba cách IPv6 và IPv4 gặp nhau hiện nay, và mức độ triển khai đã tới đâu (22 tháng 10 năm 2026).

IPv4 và IPv6 có giao tiếp được với nhau không?

Không trực tiếp: một host chỉ có IPv6 và một host chỉ có IPv4 cần một bộ chuyển đổi ở giữa, chẳng hạn NAT64 cho máy khách IPv6 truy cập máy chủ IPv4, còn các host dual-stack chỉ đơn giản dùng giao thức mà phía bên kia có.

Hai giao thức có định dạng gói tin khác nhau, nên phải có thứ gì đó viết lại từng gói. Bộ chuyển đổi stateless (SIIT, RFC 7915) ánh xạ địa chỉ một-một bằng các prefix theo RFC 6052; NAT64 chia sẻ địa chỉ IPv4 cho nhiều máy khách IPv6.

Đó là lý do hầu hết các mạng vẫn chạy cả hai giao thức: một thiết bị dual-stack không cần chuyển đổi gì cả.

Máy khách ↓ · Máy chủ →Chỉ IPv4Chỉ IPv6Dual-stack
Chỉ IPv4IPv4bộ chuyển đổi (SIIT)IPv4
Chỉ IPv6NAT64 + DNS64IPv6IPv6
Dual-stackIPv4IPv6cái nào cũng được
Ai kết nối được tới ai, và thứ gì nằm ở giữa.

Làm sao chuyển IPv4 sang IPv6 trong code?

Hầu hết ngôn ngữ làm việc này trong một lệnh gọi: IPv4Address.ipv6_mapped của Python, netip của Go với Is4In6 và Unmap, INET6_ATON của MySQL với IS_IPV4_MAPPED, và kiểu inet của PostgreSQL.

Python 3.13 đã thêm ipv6_mapped và in địa chỉ ánh xạ ở dạng có dấu chấm. Addr.String của Go in ra ::ffff:192.0.2.33 và Unmap trả về địa chỉ IPv4 thuần. net.isIP() của Node trả về 6 với một địa chỉ ánh xạ, và net.BlockList so khớp các quy tắc IPv4 với nó.

› import ipaddress
ipaddress.IPv4Address('192.0.2.33').ipv6_mapped
IPv6Address('::ffff:192.0.2.33')

Python 3.13+

› a := netip.MustParseAddr("::ffff:192.0.2.33")
fmt.Println(a.Is4In6(), a.Unmap())
true 192.0.2.33

Go net/netip

› SELECT IS_IPV4_MAPPED(INET6_ATON('::ffff:192.0.2.33'));
1

MySQL 8.4

› SELECT inet '::ffff:192.0.2.33';
::ffff:192.0.2.33

PostgreSQL 16

› net.isIP('::ffff:192.0.2.33')
6

Node.js net

Cùng một địa chỉ ánh xạ IPv4 trong năm ngôn ngữ và cơ sở dữ liệu, kèm kết quả mỗi nơi in ra.

Câu hỏi thường gặp

192.168.1.1 ở dạng IPv6 là gì?

Viết dưới dạng địa chỉ ánh xạ IPv4, nó là ::ffff:192.168.1.1, hoặc ::ffff:c0a8:101 khi viết 32 bit cuối ở dạng hex. Dạng này chỉ tồn tại bên trong phần mềm; nó không cấp cho router một địa chỉ IPv6. Vì 192.168.1.1 là địa chỉ riêng, nó không được dùng sau prefix well-known 64:ff9b::/96 của NAT64, và một prefix 6to4 cần địa chỉ IPv4 công cộng.

Chuyển IPv4 sang IPv6 có cấp cho thiết bị của tôi một địa chỉ IPv6 không?

Không. Viết một địa chỉ IPv4 ở dạng IPv6 chỉ thay đổi cách ghi cùng 32 bit đó; thiết bị của bạn vẫn không có kết nối IPv6. Địa chỉ IPv6 đến từ mạng của bạn: router hoặc nhà mạng cấp một prefix, và thiết bị tự tạo địa chỉ từ prefix đó. Công cụ Kiểm tra IPv6 cho biết kết nối của bạn có IPv6 hoạt động hay không.

Nên lưu dạng IPv6 nào trong cơ sở dữ liệu?

Hãy lưu địa chỉ ở dạng nhị phân, không phải văn bản. INET6_ATON của MySQL trả về 16 byte cho IPv6 và 4 byte cho IPv4, và IS_IPV4_MAPPED cho biết giá trị IPv6 nào là địa chỉ ánh xạ IPv4. Nếu một cột phải chứa cả hai họ địa chỉ trong 16 byte, dạng ánh xạ IPv4 ::ffff:a.b.c.d là cách chuẩn để viết IPv4 thành IPv6. Kiểu inet của PostgreSQL lưu trực tiếp cả hai họ địa chỉ.

::ffff:192.0.2.1 có giống ::ffff:c000:201 không?

Có. Cả hai viết cùng 128 bit; cách đầu viết 32 bit cuối thành một địa chỉ IPv4 có dấu chấm, cách sau thành hai nhóm hex. RFC 5952 khuyến nghị dạng có dấu chấm cho địa chỉ ánh xạ IPv4, trong khi trình duyệt in dạng hex trong URL. Hãy so sánh địa chỉ dưới dạng số, không bao giờ dưới dạng văn bản, để những cách viết như thế này khớp với nhau.

Vì sao 64:ff9b::10.1.1.1 không hợp lệ?

Vì prefix well-known của NAT64 chỉ được mang địa chỉ IPv4 toàn cầu. RFC 6052 nói rằng một địa chỉ như 64:ff9b::10.1.1.1, vốn nhúng một địa chỉ IPv4 riêng, là không hợp lệ, và bộ chuyển đổi phải loại bỏ các gói tin gửi tới nó. Công cụ đánh dấu dòng NAT64 mỗi khi bạn nhập một địa chỉ IPv4 riêng hoặc không toàn cầu khác, và cả dòng 6to4, vì 6to4 cần địa chỉ công cộng.

Địa chỉ 6to4 của một địa chỉ IPv4 là gì?

Đó là prefix /48 gồm 2002: và địa chỉ IPv4 ở dạng hex: 192.0.2.33 cho ra 2002:c000:221::/48, và site đó đánh số các subnet và host của mình bên trong prefix này. 6to4 cần một địa chỉ IPv4 công cộng, nên địa chỉ riêng không có prefix 6to4 hợp lệ. RFC 7526 đã loại bỏ các relay công cộng giúp 6to4 hoạt động, và ngày nay định dạng này rất hiếm gặp.

Có bao nhiêu người dùng IPv6?

Gần một nửa. Ngày 22 tháng 10 năm 2026, 47,13% người dùng truy cập Google qua IPv6, và APNIC Labs đo được 43,8% người dùng trên toàn thế giới có khả năng dùng IPv6 trong 30 ngày tính đến 21 tháng 10 năm 2026, với 40,9% ưu tiên IPv6. Số còn lại vẫn chỉ dùng IPv4, đó là lý do các mạng vẫn chạy song song cả hai giao thức hoặc chuyển đổi giữa chúng.

Điện thoại chỉ có IPv6 truy cập website IPv4 bằng cách nào?

Qua 464XLAT. Một bộ chuyển đổi trên điện thoại, CLAT, biến các gói tin IPv4 của ứng dụng thành IPv6 theo kiểu stateless, và NAT64 của nhà mạng, PLAT, biến chúng trở lại thành IPv4 trên các địa chỉ công cộng dùng chung. Với tên miền, DNS64 tạo bản ghi AAAA từ bản ghi A, nên bạn thấy những địa chỉ như 64:ff9b::c000:221. Điện thoại tìm prefix của mạng bằng cách tra ipv4only.arpa.

Làm sao chuyển IPv4 sang IPv6 bằng Python?

Từ Python 3.13, ipaddress.IPv4Address('192.0.2.33').ipv6_mapped trả về IPv6Address('::ffff:192.0.2.33'). Với các phiên bản cũ hơn, hãy tạo từ văn bản: ipaddress.IPv6Address('::ffff:192.0.2.33'). Python in địa chỉ ánh xạ ở dạng có dấu chấm từ 3.13 và 3.12.11; các bản cũ hơn in ::ffff:c000:221. Cả hai cách viết là cùng một địa chỉ, nên hãy so sánh các đối tượng, không so sánh chuỗi.

Những gì tôi nhập có được gửi tới máy chủ của bạn không?

Không. Mọi dạng trên trang này được tính trong trình duyệt của bạn, nên kết quả hiện ra ngay khi bạn gõ. Khi sao chép liên kết, địa chỉ và mọi prefix NAT64 bạn đã nhập được đặt sau dấu # trong URL, phần mà trình duyệt không bao giờ gửi tới máy chủ, nên ai mở liên kết cũng thấy cùng kết quả. Chỉ khi script của trang không tải được, nút Chuyển đổi mới gửi một yêu cầu trang thông thường.

Còn thiếu điều gì?Đề xuất tính năng hoặc công cụ mới