web-dev-qa-db-ja.com

curlは、SSL以外のすべてのURLを127.0.0.1およびポート8080に解決します

私はcurlを実行していて、どのURLを指していても、常に127.0.0.1とポート8080に接続しようとします。

$ curl -v http://asdfsafzsdfsdf/
*   Trying 127.0.0.1...
* connect to 127.0.0.1 port 8080 failed: Connection refused
* Failed to connect to localhost port 8080: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 8080: Connection refused

上記の例では、存在しないドメイン 'asdfsafzsdfsdf'を使用していますが、google.comなどの既存のドメインでも同じことが起こります。

しかし、 https://google.com のようなSSL URLをポイントすると、リクエストは解決され、正常に実行されます。また、それを https:// asfasdfasdfdasfd にポイントすると、それを解決しようとして失敗します(奇妙な127.0.0.1:8080の解決はありません):

$ curl -v https://asdfsadfsafsdf
* Rebuilt URL to: https://asdfsadfsafsdf/
* Could not resolve Host: asdfsadfsafsdf
* Closing connection 0
curl: (6) Could not resolve Host: asdfsadfsafsdf

これは、SSL接続を確立するときに「何らかの」形式の干渉が発生しない可能性があることを示唆しています(これを引き起こしているものなどによって、干渉をキャッシュできない可能性があります)。

「Hostasdfsadfsadf」または「Digasdfasfsafa」を実行すると、予想どおりに失敗します。ただし、「wget」は「curl」と同じように動作します(DNSの解決方法が異なることはわかっているので、これが手がかりになるかもしれません)。

私はこれを何時間も調査してきました。/etc/hostsにエントリがなく、DNSキャッシュを実行しておらず、/ etc/nsswitch.confを確認し、「files、dns」の解像度があるだけで、特別なものはありません。 iptables構成など。

さらに重要なのは、問題のDNS部分を脇に置いて...なぜポート8080なのか?

これは非常に奇妙です、なぜこれが起こっているのでしょうか?何か案は?

Ubuntu16.04を実行しています。

ありがとう!

1
jotadepicas

ご使用の環境でプロキシサーバーが定義されているようです。 http_proxy環境変数内。

シェル環境を確認し、シェル起動スクリプトで定義されている変数から変数を削除するか、プロキシサーバーを起動します。

または、-x ""を渡すことで、curlにプロキシ環境変数を無視するように依頼できます。

curl -x "" https://www.google.com/
4
Michael Hampton