ipv6 기반 루프백에 :: 1과 함께 curl을 사용하려면 어떻게해야합니까?


29

몇 가지 방법을 시도했지만 혼란스러워하는 것 같습니다.

root@testt:~# curl localhost:8080
<h1>Hello world!</h1>

<p>Boom Bam Splat</p>
root@testt:~# curl ::1:8080
curl: (3) IPv6 numerical address used in URL without brackets
root@testt:~# curl [::1]:8080
curl: (3) [globbing] bad range specification in column 2

1
나는 당신이 답을 선택했다는 것을 알고 있지만 여기 두 대답 사이에 유사점이 있기 때문에 어떤 구체적인 명령이 당신에게 도움이 되었습니까?
JakeGould

1
앞서 답변을 주셔서 감사합니다! 나는 그들이 간결하고 아무것도 아니기 때문에 받아 들일 수있는 진지한 압박을 받았지만, 그 사용자가 당신과 비교하여 시작하여 먼저 대답했기 때문에 다른 것을 선택했지만. 어쨌든 -g 옵션 만 사용하면 충분합니다.
hak8or

답변:


45

이 블로그 게시물 의 제안 및 일반적인 오류 분석을 살펴보면 이 방법 을 시도해 볼 수 있습니다.

curl -g -6 "http://[::1]:8080/" 

-g이 작업을 얻을 수있는 마법의 열쇠가 될 것으로 보인다. curl매뉴얼 페이지 에 설명 된대로 :

이 옵션은 "URL globbing 구문 분석기"를 끕니다. 이 옵션을 설정하면 컬 자체로 해석하지 않고 {} [] 문자를 포함하는 URL을 지정할 수 있습니다. 이 문자는 정상적인 법적 URL 내용이 아니지만 URI 표준에 따라 인코딩되어야합니다.

그리고 -6IPv6 만 사용 하는 방법 :

libcurl이 여러 IP 버전으로 주소를 해석 할 수있는 경우 (IPv6 가능 인 경우)이 옵션은 libcurl에게 이름을 IPv6 주소로만 해석하도록 지시합니다.

그러나 기능 설명을 읽으면 -6순수한 IPv6 주소에는 실제로 필요하지 않은 것 같습니다 . curlIPv4 및 IPv6 주소가 연결된 호스트 이름을 사용 하는 경우에만 IPv6을 선호합니다. 주목할 점이 있습니다.


OSX 10.13.3: 이것은 작동 $ curl "http://localhost:50710/file1.txt"하며 $ curl -g -6 "http://[::1]:50710/file1.txt" 되지 않습니다 : (7) :: 1 포트 50710에 연결하지 못했습니다 : 연결이 거부되었습니다 . 그리고 기능으로 $ curl -V표시 IPv6합니다 (curl 7.58.0). 내 /etc/hosts파일 목록 :::1 localhost
7stud

이봐, 내 서버에 대한 팁 감사합니다! 이제 서버를 ipv6 주소에 바인딩했습니다 . 0.0.0.0.0.0.0.1간단히 할 수 있습니다 curl "http://[::1]:50710/file1.txt". 내가 추가하면 -v출력 자세한에 대한 옵션을, 나는 출력을 참조하십시오 시도 : 1 ... * TCP_NODELAY 세트가 *에 :: 1 (:: 1) 포트 52489 (# 0) 연결 - 어떤 이유로, I을하셨습니까 -g옵션이 필요 없습니다 .
7stud

추가 정보 : 내 서버가 ipv6 호스트에 바인딩 된 상태에서 curl :을 사용하여 ipv4 요청을 계속 만들 수 있습니다 curl -v "http://localhost:52489/file1.txt". 출력에서 다음을 참조하십시오 : 시도 :: 1 ... * TCP_NODELAY set * localhost (:: 1) 포트 52489 (# 0)에 연결됨 -아, 내 /etc/hosts파일이 "localhost"라는 이름을 모두 ipv4 및 ipv6 주소 그리고 시도 curl -v "http://127.0.0.1:52489/file1.txt"하면 연결 거부 오류가 발생합니다.
7stud

1
@ 7stud“이제 ipv6 주소에 서버를 연결했습니다 0.0.0.0.0.0.0.1.”당신은 당신이 무엇을 말하는지 진지하게 모릅니다. 이 의견에서 설명하는 모든 것을 설명하고 누군가 당신을 도울 수 있는지 설명하는 새로운 질문을 작성하는 것이 좋습니다. 원하는 경우이 답변을 참조하십시오. 그러나 당신 0.0.0.0.0.0.0.1이 유효한 IPv6 주소 라고 생각 하면 이미 발판이 좋지 않은 것입니다.
JakeGould

8

"curl --manual"에서 나는 이것을 발견했다.

curl -g "http://[2001:1890:1112:1::20]/"

또는

curl "http://[2001:1890:1112:1::20]/"

따라서 요청한 주소에 대해 다음을 시도하십시오.

curl -g "http://[::1]:8080/"

그러나 다음을 실행할 수 있습니다.

curl -V

"기능"이라고 표시된 줄에 IPv6이 나타나는지 확인하십시오 (세 번째 줄은 줄 바꿈에서 추가 줄을 세지 않음). 내 버전이 그렇지 않다는 것을 알았습니다. cURL 다운로드 페이지 에는 Microsoft Windows 용 curl 7.41.0 다운로드 사이트 (현재 최신 버전)를 포함하여 운영 체제에 대한 다양한 링크 가 있습니다. 해당 페이지에는 여러 개의 실행 파일이 있습니다 (Microsoft Windows에서 사용 가능). 내가 찾은 첫 번째는 IPv6을 지원하지 않았습니다. 그러나 "ipv6-sspi-spnego-winssl"(x86의 경우 하나와 x64의 경우)로 설명 된 두 가지는 다음과 같습니다. curl -V는 IPv6을 표시했습니다. 따라서 다운로드 할 패키지에주의하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.