LWP で IPv6 サポートを有効にするにはどうすればよいですか?
質問
次のコードは...
my $user_agent = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
print "OK\n";
} else {
die($response->status_line);
}
.... で失敗します。
500 Can't connect to <hostname> (Bad hostname '<hostname>')
..$url のホスト名が IPv6 のみのアドレスの場合 (つまり:の存在 AAAA
記録しますが、いいえ A
記録)。
私の質問は次のとおりです。
- LWP で IPv6 サポートを有効にするにはどうすればよいですか?
- LWP の「IPv4 よりも優先」の設定を構成するにはどうすればよいですか (
A
対AAAA
) / "IPv4 よりも IPv6 を優先" (AAAA
対A
)?
他のヒント
私はあなたがIPV6ネットモジュールを使用するモジュールを変更する必要があります信じています。 ます。http:デフォルトでは、これが有効になっていません。 ://eintr.blogspot.com/2009/03/bad-state-of-ipv6-in-perl.htmlする。私は
「-好むのIPv6」のような単純なものがあると信じていません。Debian Wheezy (perl 5.14)
うまくいきます:
use LWP::Simple;
print get( 'http://ip6-localhost:80' );
動作しない (1)
use LWP::Simple;
print get( 'http://[::1]:80' );
動作しない (2) [戻る: 不正なホスト名]
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
動作しない (3) [戻る: 接続拒否]
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
つまり、http リクエストに IPv6 アドレスが必要ない場合は、問題ありません。:(
所属していません StackOverflow