サーバー上wget-1.16
完了までに8分かかります:
$ wget http://http.debian.net/debian/dists/stable/Release -O -
--2017-06-12 23:44:40-- http://http.debian.net/debian/dists/stable/Release [4693/5569]
Resolving http.debian.net (http.debian.net)... 2001:4f8:1:c::15, 2605:bc80:3010:b00:0:deb:166:202, 2001:610:1908:b000::148:14, ...
Connecting to http.debian.net (http.debian.net)|2001:4f8:1:c::15|:80... failed: Connection timed out.
Connecting to http.debian.net (http.debian.net)|2605:bc80:3010:b00:0:deb:166:202|:80... failed: Connection timed out.
Connecting to http.debian.net (http.debian.net)|2001:610:1908:b000::148:14|:80... failed: Connection timed out.
Connecting to http.debian.net (http.debian.net)|140.211.166.202|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://cdn-fastly.deb.debian.org/debian/dists/stable/Release [following]
--2017-06-12 23:51:02-- http://cdn-fastly.deb.debian.org/debian/dists/stable/Release
Resolving cdn-fastly.deb.debian.org (cdn-fastly.deb.debian.org)... 2a04:4e42:3::204, 151.101.12.204
Connecting to cdn-fastly.deb.debian.org (cdn-fastly.deb.debian.org)|2a04:4e42:3::204|:80... failed: Connection timed out.
Connecting to cdn-fastly.deb.debian.org (cdn-fastly.deb.debian.org)|151.101.12.204|:80... connected.
...
IPv6アドレスで接続しようとしているからです。 curl-7.38.0
同じマシン上で即座に応答します。 IPv4アドレスを使用しているため。ドメインの解決方法は異なりますか?どうやってやっているの? wget
でIPv4アドレスを使用するにはどうすればよいですか?
[〜#〜]更新[〜#〜]
$ ip a
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether d8:cb:8a:37:cf:57 brd ff:ff:ff:ff:ff:ff
inet 188.40.99.4/26 brd 188.40.99.63 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a01:4f8:100:738b::2/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::dacb:8aff:fe37:cf57/64 scope link valid_lft forever preferred_lft forever
$ ip route
default via 188.40.99.1 dev eth0
10.0.0.0/24 dev br0 proto kernel scope link src 10.0.0.1
188.40.99.0/26 via 188.40.99.1 dev eth0
188.40.99.0/26 dev eth0 proto kernel scope link src 188.40.99.4
curl
とwget
は、ドメインの解決に異なるメカニズムを使用しません(getaddrinfo()
を使用しています)。ただし、curl
は高速フォールバックアルゴリズムを実装して、IPv6接続が良好でない場合のユーザーエクスペリエンスを向上させます。
このアルゴリズムはRFC 6555(Happy Eyeballs)で詳細に説明されています: https://tools.ietf.org/html/rfc6555
curl/lib/connect.h
によると、このタイムアウトは200ミリ秒に設定されています。 https://github.com/curl/curl/blob/a8e523f086c12e7bb9acb18d1ac84d92dde0605b/lib/connect.h#L4
curl
とwget
はどちらも-4
/-6
オプションをサポートしており、それぞれIPv4またはIPv6への接続を強制します。