IPv4 to IPv6 변환기
IPv4 주소를 입력하면 그 주소를 담은 모든 IPv6 주소를 보여 줍니다. 로그에서 보는 IPv4 매핑 형식부터 NAT64, 6to4까지 RFC 5952 표기와 전체 표기로 적고, 각각을 사용 중, 지금은 드묾, 사용 중단으로 표시합니다.
읽은 형식: 점으로 구분한 10진수
점으로 구분한 10진수, 숫자 하나(3221225985), 16진수, URL 모두 됩니다. 변환은 브라우저에서 이루어지며 아무것도 전송되지 않습니다.
IPv4를 IPv6로 변환하는 방법은 무엇인가요?
IPv4 주소의 32비트를 16진수 그룹 두 개로 쓰고, IPv6 형식이 그 비트를 두는 자리에 넣습니다: 흔히 쓰는 IPv4 매핑 형식에서는 ::ffff: 뒤이므로, 192.0.2.33은 ::ffff:c000:221이 되고 ::ffff:192.0.2.33으로 씁니다.
10진수의 각 부분이 16진수 두 자리가 되고(192 = c0, 0 = 00, 2 = 02, 33 = 21), 이 네 쌍이 16비트 그룹 두 개를 이룹니다. RFC 5952는 비트의 의미가 드러나도록 ::ffff: 뒤에서는 점 표기를 유지하라고 권장합니다.
바뀌는 것은 주소를 적는 방식뿐입니다. 이것으로 기기가 IPv6 주소나 IPv6 연결을 얻지는 않으며, 그런 것은 네트워크에서 옵니다.
c00002023321
16진수로 바꾼 IPv4192.0.2.33은 c0 00 02 21: 모든 IPv6 형식에 들어가는 8자리입니다.비트가 가는 곳같은 8자리가 매핑과 NAT64에서는 비트 96–127로, 6to4에서는 비트 16–47로 갑니다.아직 쓰이나요?사용 중, 지금은 드묾, 사용 중단 중 하나이며, RFC와 트래픽 데이터에 근거합니다.내 네트워크의 프리픽스NAT64 프리픽스와 길이를 입력하면 변환 장치가 쓰는 주소를 얻습니다.압축 또는 전체RFC 5952 표기와 그 아래의 다른 표기, 스위치 하나로 32자리 전체도 볼 수 있습니다.어떤 IPv6 형식을 써야 하나요?
소프트웨어 안(소켓, 로그, 데이터베이스)에서는 IPv4 매핑 형식을, IPv6 전용 네트워크에서는 네트워크의 NAT64 프리픽스를 쓰세요. 나머지 형식은 지금은 드물거나 폐기되었습니다.
매핑 주소는 네트워크 위에 나타나지 않습니다. NAT64 주소는 나타나며, 잘 알려진 프리픽스 64:ff9b::/96에는 전역 IPv4 주소만 담아야 합니다(RFC 6052). 6to4에도 공인 IPv4 주소가 필요합니다.
IPv4 호환 주소는 사용 중단되었고, SIIT의 IPv4-translated 프리픽스는 RFC 6052 프리픽스로 대체되었습니다.
| 형식 | 용도 | 상태 | 192.0.2.33의 변환 결과 |
|---|---|---|---|
| IPv4 매핑 주소RFC 4291 | 소켓, 로그, 데이터베이스 | 사용 중 | ::ffff:192.0.2.33 |
| NAT64, 잘 알려진 프리픽스RFC 6052 | IPv6 전용 네트워크에서 IPv4로 연결 | 사용 중 | 64:ff9b::c000:221 |
| NAT64, 로컬 용도 블록RFC 8215 | 64:ff9b:1::/48 안에서 운영하는 자체 NAT64 | 사용 중 | 64:ff9b:1::c000:221 |
| 6to4RFC 3056 | 자동 터널, 지금은 드묾 | 지금은 드묾 | 2002:c000:221::/48 |
| ISATAPRFC 5214 | 한 사이트 안의 터널, 지금은 드묾 | 지금은 드묾 | fe80::5efe:c000:221 |
| IPv4-translatedRFC 2765 | 예전의 스테이트리스 변환(SIIT) | 지금은 드묾 | ::ffff:0:192.0.2.33 |
| IPv4 호환 주소RFC 4291 | 용도 없음: 폐기됨 | 사용 중단 | ::c000:221 |
IPv4 매핑 IPv6 주소란 무엇인가요?
IPv4 주소를 IPv6 주소로 쓴 것으로, 0 비트 80개, 1 비트 16개, 그리고 32비트 IPv4 주소로 이루어집니다(::ffff:0:0/96). 덕분에 IPv6 소켓 하나로 동작하는 소프트웨어도 IPv4 상대를 처리할 수 있습니다.
매핑 주소는 소프트웨어 안에만 존재하며, IANA는 이 블록을 전달 불가로 지정합니다. 여기에는 보안 측면도 있습니다: ::ffff:127.0.0.1에서 온 패킷이 그 컴퓨터 자신에게서 온 통신만 허용하려는 검사를 통과할 수 있으므로, 필터는 비교하기 전에 매핑을 풀어야 합니다(RFC 4942).
데이터베이스도 이 주소를 알아봅니다: MySQL의 IS_IPV4_MAPPED()는 점 표기와 16진수 끝부분을 모두 받아들이고, PostgreSQL은 혼합 표기로 출력합니다.
0000:0000:0000:0000:00001 비트 16개ffffIPv4 주소, 32비트192.0.2.33accept() → ::ffff:192.0.2.33IPv4에서 IPv6로의 전환은 어떻게 이루어지나요?
네트워크는 두 프로토콜을 나란히 운영하고(듀얼 스택), IPv6 전용 네트워크는 변환을 통해 IPv4 인터넷에 닿습니다: DNS64와 함께 쓰는 NAT64, 또는 휴대폰에서는 464XLAT입니다.
NAT64에서는 DNS64가 호스트의 A 레코드로 AAAA 레코드를 만들고, 변환 장치가 트래픽을 IPv4로 전달합니다. 464XLAT에서는 휴대폰의 변환 장치(CLAT)가 앱의 IPv4 패킷을 IPv6로 바꾸고, 제공업체의 NAT64(PLAT)가 공유 공인 주소에서 이를 다시 IPv4로 바꿉니다.
전환은 절반쯤 진행되었습니다: 2026년 10월 22일 사용자의 47.13%가 IPv6로 Google에 접속했고(Google), APNIC Labs는 전 세계 사용자의 43.8%를 IPv6 지원으로 집계했습니다.
듀얼 스택
IPv4 + IPv6IPv4 · IPv6서버192.0.2.33 · 2001:db8::33NAT64 + DNS64
IPv6IPv6DNS64AAAA 64:ff9b::c000:221IPv6NAT6464:ff9b::/96IPv4IPv4 서버192.0.2.33464XLAT
IPv4IPv4CLAT휴대폰IPv6PLATNAT64IPv4IPv4 서버192.0.2.33
의 사용자가 IPv6 지원(APNIC Labs)IPv4와 IPv6는 서로 통신할 수 있나요?
직접은 안 됩니다: IPv6 전용 호스트와 IPv4 전용 호스트 사이에는 IPv6 클라이언트가 IPv4 서버에 닿게 해 주는 NAT64 같은 변환 장치가 필요합니다. 반면 듀얼 스택 호스트는 상대가 가진 프로토콜을 그대로 씁니다.
두 프로토콜은 패킷 형식이 달라서 무언가가 패킷을 하나하나 다시 써야 합니다. 스테이트리스 변환 장치(SIIT, RFC 7915)는 RFC 6052 프리픽스를 써서 주소를 일대일로 대응시키고, NAT64는 여러 IPv6 클라이언트가 IPv4 주소를 함께 쓰게 합니다.
그래서 대부분의 네트워크가 두 프로토콜을 계속 운영합니다: 듀얼 스택 기기에는 변환이 전혀 필요 없습니다.
| 클라이언트 ↓ · 서버 → | IPv4만 | IPv6만 | 듀얼 스택 |
|---|---|---|---|
| IPv4만 | IPv4 | 변환 장치(SIIT) | IPv4 |
| IPv6만 | NAT64 + DNS64 | IPv6 | IPv6 |
| 듀얼 스택 | IPv4 | IPv6 | 둘 다 가능 |
코드에서 IPv4를 IPv6로 변환하려면 어떻게 하나요?
대부분의 언어에서는 호출 한 번이면 됩니다: Python의 IPv4Address.ipv6_mapped, Go netip의 Is4In6과 Unmap, MySQL의 INET6_ATON과 IS_IPV4_MAPPED, PostgreSQL의 inet 타입입니다.
Python 3.13에서 ipv6_mapped가 추가되었고, 매핑 주소를 점 표기로 출력합니다. Go의 Addr.String은 ::ffff:192.0.2.33을 출력하고, Unmap은 일반 IPv4 주소를 돌려줍니다. Node의 net.isIP()는 매핑 주소에 6을 돌려주고, net.BlockList는 IPv4 규칙을 매핑 주소에도 적용합니다.
› 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
자주 묻는 질문
192.168.1.1은 IPv6로 무엇인가요?
IPv4를 IPv6로 변환하면 내 기기에 IPv6 주소가 생기나요?
데이터베이스에는 어떤 IPv6 형식으로 저장해야 하나요?
::ffff:192.0.2.1과 ::ffff:c000:201은 같은 주소인가요?
64:ff9b::10.1.1.1이 무효인 이유는 무엇인가요?
IPv4 주소의 6to4 주소는 무엇인가요?
IPv6를 쓰는 사람은 얼마나 되나요?
IPv6 전용 휴대폰은 IPv4 웹사이트에 어떻게 접속하나요?
Python에서 IPv4를 IPv6로 변환하려면 어떻게 하나요?
입력한 내용이 서버로 전송되나요?
부족한 점이 있습니까?기능 또는 새 도구 제안하기
관련 도구
IPv6에서 IPv4로
IPv6 속 IPv4 추출: 매핑·NAT64·6to4·Teredo·ISATAP, 비트 단위로
IPv6 압축
RFC 5952 방식의 IPv6 주소 압축·확장, 각 0을 지운 규칙까지 표시
IP를 10진수로 변환
IP 주소와 10진수·16진수·2진수·8진수 상호 변환, 옥텟별 자릿값 표시
내 IP 주소 확인
공인 IP의 IPv4와 IPv6를 한 번에 확인하고 네트워크, 위치, VPN 여부까지 확인
IPv6 테스트
IPv6 작동 여부, 브라우저가 고르는 주소 체계, 사이트의 IPv6 지원을 확인합니다
서브넷 계산기
IPv4·IPv6 블록의 네트워크, 브로드캐스트, 사용 가능한 호스트, 마스크 계산과 VLSM, 분할, 클라우드 서브넷
역방향 DNS 조회
PTR 레코드로 IP 주소에 연결된 호스트 이름 검색
DNS 조회
도메인 자체 네임서버의 모든 DNS 레코드를 Google·Cloudflare 캐시와 나란히 확인