2016-06-15 17 views
0

IPv6をサポートするLinuxマシン、ローカルループバックインターフェイス:::1があります。HTTP :: RequestはIPv6インターフェイスを使用しています

私はローカルの仮想ホストにHTTPリクエストを送信したPerlスクリプト作成:

#!/usr/bin/perl 

use strict; 
use warnings; 

use Net::INET6Glue::INET_is_INET6; 
use LWP; 

my $user_agent = LWP::UserAgent->new; 
my $url = 'http://lwt/docs/info.php'; 
my $request = HTTP::Request->new(GET => $url); 
my $response = $user_agent->request($request); 
if ($response->is_success) { 
    print $response->decoded_content; 
} 
else { 
    die($response->status_line); 
} 

info.phpファイル:

<?php 
print $_SERVER['REMOTE_ADDR']; 

lwtエイリアスは、/ etcに書かれている/ホストは次のようにファイルをこれは:

127.0.0.1  lwt 

現在、出力は「127.0.0.1」です。したがって、要求はIPv4経由で送信されます。

代わりにIPv6インターフェイスを使用するようにPerlに指示することはできますか?

+0

'lwt'が正しく解決するなら、それはうまくいくはずです。どのように提供されていますか? DNS?ホストファイルですか? 'IO :: Socket :: IP'、' IO :: Socket :: INET6'、あるいはその両方がインストールされていますか? – hobbs

+0

@hobbsそれは1台のマシンです:私はループバックインターフェイスを使用します。 lwtは/ etc/hostsファイルにあり、 '127.0.0.1 \t \t lwt' – user4035

+1

というように書かれているので、' lwt'のために提供した唯一のアドレスはIPv4アドレスです。もちろんIPv4を使用します。代わりに ':: 1'のエントリを作ります。 – hobbs

答えて

1

IPv6接続を行うために、LWPはホスト名にIPv6 アドレスを見つけなければなりません。/etc/hosts経由で提供しているアドレス127.0.0.1はIPv4アドレスなので、これは起こりません。 ::1 lwtのようなホストエントリが必要です。そのため、ホスト名はIPv6ループバックアドレスに解決されます。

関連する問題