
我需要向沒有 ipv6 位址的伺服器發出一些 cURL 請求,但我的機器似乎只能在 1) 使用 https 和 2) 使用 ipv6 時才能連線。在 DNS 解析之後、建立任何連線之前,其他請求會無限期掛起。
如果您能提供有關如何解決此問題的指導,我們將不勝感激。
該機器運行的是帶有curl 7.58.0和ufw 0.36的Ubuntu 18.04.4。
任何網域都會發生這種情況,但以下是 google.com 的一些範例:
me@myserver:/$ curl -I4 http://www.google.com --trace-ascii /dev/stdout --no-tcp-nodelay
== Info: Rebuilt URL to: http://www.google.com/
== Info: Trying 142.251.40.100...
*hangs*
me@myserver:/$ curl -I4 https://www.google.com --trace-ascii /dev/stdout --no-tcp-nodelay
== Info: Rebuilt URL to: https://www.google.com/
== Info: Trying 142.251.40.100...
*hangs*
me@myserver:/$ curl -I6 http://www.google.com --trace-ascii /dev/stdout --no-tcp-nodelay
== Info: Rebuilt URL to: http://www.google.com/
== Info: Trying 2607:f8b0:4006:81f::2004...
*hangs*
me@myserver:/$ curl -I6 https://www.google.com --trace-ascii /dev/stdout --no-tcp-nodelay
== Info: Rebuilt URL to: https://www.google.com/
== Info: Trying 2607:f8b0:4006:81f::2004...
== Info: Connected to www.google.com (2607:f8b0:4006:81f::2004) port 443 (#0)
*no problems*
我已經在 UFW 中嘗試過 IP 白名單,但沒有幫助:
me@myserver:/$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN Anywhere
80 ALLOW IN Anywhere
443 ALLOW IN Anywhere
Anywhere ALLOW IN 142.251.40.100
22 (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
443 (v6) ALLOW IN Anywhere (v6)
該機器運行的是 Ubuntu 18.04.4。
這是(稍微重新格式化的)輸出curl -V
:
curl 7.58.0 (x86_64-pc-linux-gnu)
libcurl/7.58.0
OpenSSL/1.1.1d
zlib/1.2.11
libidn2/2.3.0
libpsl/0.19.1 (+libidn2/2.0.4)
nghttp2/1.30.0
librtmp/2.3
Release-Date: 2018-01-24
Protocols:
dict file ftp ftps gopher http https
imap imaps ldap ldaps pop3 pop3s
rtmp rtsp smb smbs smtp smtps telnet tftp
Features:
AsynchDNS GSS-API HTTP2 HTTPS-proxy
IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets