LWP で IPv6 サポートを有効にするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2215049

  •  19-09-2019
  •  | 
  •  

質問

次のコードは...

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 よりも優先」の設定を構成するにはどうすればよいですか (AAAAA) / "IPv4 よりも IPv6 を優先" (AAAAA)?

他のヒント

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 アドレスが必要ない場合は、問題ありません。:(

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top