ipv6ベースのループバックでcurlを:: 1で使用するにはどうすればよいですか?


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
回答を選択したことは知っていますが、ここでは2つの回答に類似点があるので、どの特定のコマンドが機能したかを明確にしてください。
-JakeGould

1
早く答えてくれてありがとう!彼らはとても簡潔で何でもないので、私は本当に受け入れるのが大変でしたが、そのユーザーはあなたと比較して始めたばかりで、最初に答えたのでもう一方を選びました。とにかく、-gオプションを使用するだけで十分でした。
hak8または

回答:


45

このブログ投稿で提案と一般的なエラーの内訳を見て、おそらくこれを試してみてください。

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

これ-gが機能するための魔法の鍵のようです。curlmanページで説明されているように:

このオプションは、「URL globbing parser」をオフにします。このオプションを設定すると、curl自体によって解釈されることなく、文字{} []を含むURLを指定できます。これらの文字は通常の正当なURLコンテンツではありませんが、URI標準に従ってエンコードする必要があることに注意してください。

そして、-6IPv6のみを使用する手段:

libcurlがアドレスを複数のIPバージョンに解決できる場合(IPv6対応の場合)、このオプションは名前をIPv6アドレスのみに解決するようlibcurlに指示します。

しかし、その機能の説明を読むと-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機能(カール7.58.0)として。私の/etc/hostsファイルリスト:::1 localhost
7stud

ねえ、私のサーバーについてのヒントをありがとう!これで、サーバーがipv6アドレスにバインドされた0.0.0.0.0.0.0.1ので、を実行できますcurl "http://[::1]:50710/file1.txt"-v詳細出力のオプションを追加すると、出力に次のように表示されます:Trying :: 1 ... * TCP_NODELAY set * Connected to :: 1(:: 1)port 52489(#0) -何らかの理由で、-gオプションは必要ありません。
7スタッド

詳細:サーバーをipv6ホストにバインドしても、curl:を使用してipv4 get要求を作成できます curl -v "http://localhost:52489/file1.txt"。出力には次のように表示されます:Trying :: 1 ... * TCP_NODELAY set * localhost(:: 1)port 52489(#0)に接続 -ああ、それは私の/etc/hostsファイルが「localhost」という名前を両方のipv4およびipv6アドレス。そして、私が試してみるとcurl -v "http://127.0.0.1:52489/file1.txt"、接続拒否エラーが発生します。
7

1
@ 7stud「これで、サーバーがipv6アドレスにバインドされました0.0.0.0.0.0.0.1。」これらのコメントで説明するすべてを説明し、誰かがあなたを助けることができるかどうかを確認する新しい質問を書くことをお勧めします。必要に応じてこの回答を参照してください。しかし0.0.0.0.0.0.0.1、有効なIPv6アドレスであると思われる場合は、すでに足元が悪くなっています。
JakeGould

8

「カール-マニュアル」から、私はこれを見つけました:

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

または

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

だから、あなたが尋ねているアドレスについては、試してみてください:

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

ただし、実行することもできます。

curl -V

「機能」という行にIPv6が表示されるかどうかを確認します(3行目、ワードラッピングの余分な行はカウントされません)。私のバージョンはそうではないことがわかりました。 cURLダウンロードページには、Microsoft Windows用のcurl 7.41.0ダウンロードサイト(現在は最新バージョン)など、オペレーティングシステムのさまざまなリンクがあります。そのページには複数の実行可能ファイルがあります(Microsoft Windowsで使用可能)。最初に見つけたのはIPv6をサポートしていませんでした。しかし、「ipv6-sspi-spnego-winssl」(x86用とx64用)として記述された2つはそうでした:curl -VはIPv6を示しました。そのため、ダウンロードするパッケージに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.