728x90

IPv6 주소가 사용되는 곳이 많아지면서 curl 등으로 시험할 일도 종종 발생합니다.
curl은 오래전부터 IPv6에 대한 지원을 하고 있기 때문에 
왠만한 curl 버전을 사용중이라면 특별히 문제 없이 IPv6로 요청을 보낼 수 있습니다. 


브라켓을 이용하자

IPv4를 사용할때는 주소를 그대로 사용하는 것이 일반적입니다. 
다만 IPv6는 주소의 각 컴포넌트를 콜론(:)으로 구분하기 때문에 
명시적으로 IPv6 주소의 일부라는 것을 알려줄 필요가 있습니다. 

% curl 'https://[2404:6800:4004:80f::2004]' -v -k
*   Trying 2404:6800:4004:80f::2004:443...
* Connected to 2404:6800:4004:80f::2004 (2404:6800:4004:80f::2004) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/cert.pem
*  CApath: none

가령 위의 예시는 www.google.com  에 대한 IPv6 주소로 curl 요청을 보내는 예시입니다.
브라켓으로 IPv6 주소를 감싸고 있으며, 다시 전체 URL을 따옴표로 묶고 있는 것을 볼 수 있습니다.
따옴표를 쓰지 않으면 파싱에 문제가 생기니, IPv6 주소로 요청을 보낼때는 전체를 감싼다고 인식하시면 되겠습니다. 

 

resolve 에서 IPv6 활용하기

IPv6 주소를 직접 curl 대상 주소로 사용할 때는 위와 같습니다. 
간혹 IP Spoofing 을 해야 하는 경우 --resolve를 쓰고 계실텐데요, 
이때도 다음과 같은 형태로 IPv6 주소를 활용할 수 있습니다. 

% curl https://www.google.com --resolve www.google.com:443:'[2404:6800:4004:80f::2004]' -I
HTTP/2 200
content-type: text/html; charset=ISO-8859-1
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Thu, 03 Feb 2022 08:37:37 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Thu, 03 Feb 2022 08:37:37 GMT
...

--resolve를 사용할 때도 IPv6 주소를 브라켓으로 감싸고 따옴표를 넣어 주시면 되겠습니다. 
역시나 콜론이 많이 사용되고 있기 때문에 필요한 작업이라고 인식하면 되겠습니다. 

 

728x90

+ Recent posts