Webサービス, 軽量プログラミング言語のIPv6対応Perl編



Similar documents
Microsoft Word - CiNii看護大

ユーザーガイド

VPS では 通 常 はインスタンスが 1 個 です 停 止 と 再 起 動 を 選 択 できます CloudStack では インスタンスの 追 加 と 破 棄 の 機 能 を 利 用 することにより お 客 様 が 契 約 されているインスタンス 数 分 の 仮 想 サーバを 自 由 に 追 加

1

V-CUBE One

3. システム 要 件 IM- 社 内 便 Ver.7.2 は 以 下 の 製 品 上 で 動 作 します サーバ 要 件 Windows Server 2003 R2 Windows Server 2008 Windows Server 2008 R2 Red Hat Enterprise Lin

研究者情報データベース

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

CENTNET 導 入 の 手 引 き 変 更 履 歴 No. 変 更 日 変 更 番 号 変 更 枚 数 備 考 /07/ 版 発 行 - システムリプレースにより 全 面 刷 新 //07/ 版 発 行 3 誤 字 等 の 修 正 /

2 役 員 の 報 酬 等 の 支 給 状 況 役 名 法 人 の 長 理 事 理 事 ( 非 常 勤 ) 平 成 25 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 16,936 10,654 4,36

あいち電子調達共同システム

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

<4D F736F F D208DE3905F8D8291AC8B5A8CA48A948EAE89EF8ED0208BC696B18BA492CA8E64976C8F BD90AC E378C8E89FC92F994C5816A>

質 問 票 ( 様 式 3) 質 問 番 号 62-1 質 問 内 容 鑑 定 評 価 依 頼 先 は 千 葉 県 などは 入 札 制 度 にしているが 神 奈 川 県 は 入 札 なのか?または 随 契 なのか?その 理 由 は? 地 価 調 査 業 務 は 単 にそれぞれの 地 点 の 鑑 定

ファイルサーバー(NFS) 構築ガイド

目 次 1 インストール 手 順 プログラム データファイルのインストール Microsoft Access2013Runtime SP1(32bit) 版 のインストール 基 本 操 作 ログイン メニュー...

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

計算式の取り扱い

ログイン ブラウザから TDPOST へアクセス ログイン GC-(お 客 様 名 )フォルダを 選 択 各 作 業 へ ブラウザを 起 動 します (Internet Explorer Safari Firefox など) 下 記 アドレスをブラウザのアドレス 入 力 欄 に 入 力 します ht

2 出 願 資 格 審 査 前 記 1の 出 願 資 格 (5) 又 は(6) により 出 願 を 希 望 する 者 には, 出 願 に 先 立 ち 出 願 資 格 審 査 を 行 いますので, 次 の 書 類 を 以 下 の 期 間 に 岡 山 大 学 大 学 院 自 然 科 学 研 究 科 等

スライド 1

XML形式の電子報告書作成に当たっての留意事項

Office365 ProPlus 利用方法について

Microsoft Word - サンプル _データベースアクセス_.doc

Microsoft Word - CiNii&RefWorks doc

HDC-EDI BaseのAny変換における閏年の取り扱いに関する重要なお知らせ

Untitled

03_主要処理画面.xlsx

ていることから それに 先 行 する 形 で 下 請 業 者 についても 対 策 を 講 じることとしまし た 本 県 としましては それまでの 間 に 未 加 入 の 建 設 業 者 に 加 入 していただきますよう 28 年 4 月 から 実 施 することとしました 問 6 公 共 工 事 の

4 調 査 の 対 話 内 容 (1) 調 査 対 象 財 産 の 土 地 建 物 等 を 活 用 して 展 開 できる 事 業 のアイディアをお 聞 かせく ださい 事 業 アイディアには, 次 の 可 能 性 も 含 めて 提 案 をお 願 いします ア 地 域 の 活 性 化 と 様 々な 世

Tohtech Career Navi

スライド 1

Transcription:

Internet Week 2013 T2 アプリケーション サービスのIPv6 対 応 軽 量 プログラミング 言 語 のIPv6 対 応 Perl 編 2013 年 11 月 26 日 技 術 本 部 技 術 開 発 部 渡 辺 露 文

1. Perlの 概 要 - 1 -

1.1. Perlの 概 要 Perl のバージョン 最 新 版 (Perl5): 5.18.1 (2013/8/12リリース) Perl とネットワークプログラミング 標 準 ライブラリ (コアモジュール) で 基 本 的 なネットワークプログラ ミングが 可 能 (ソケット, HTTP クライアント, SMTP クライアント) その 他 の 機 能 が 欲 しい 場 合 は, CPAN*1 のモジュール 等 を 使 用 する *1 Comprehensive Perl Archive Network http://www.cpan.org/ Perl と IPv6 Perl 5.14 から 本 格 的 に IPv6 をサポート Perl and IPv6 Perl supports IPv6 http://www.perl.org/about/whitepapers/perl-ipv6.html それより 前 のバージョンでも, CPAN モジュールを 利 用 すれば IPv6 を 使 うことは 可 能 - 2 -

1.2. 各 OSでのPerlバージョン OS ディストリ ビューション バージョ ン Perl IPv6 対 応 状 況 Perlバージョン Linux CentOS 5.10 distribution, updatesとも5.8.8 6.4 distribution, updatesとも5.10.1 Fedora 18 distribution:5.16.2, updates:5.16.3 19 distribution, updatesとも5.16.3 Debian 6.0.8 5.10.1 7.2 5.14.2 Ubuntu 12.04 LTS distribution, updatesとも5.14.2 13.10 5.14.2 FreeBSD 9.2 5.18.1 Mac OS X 10.9 5.16.2 主 要 OS LinuxディストリビューションのパッケージでインストールされるPerlの バージョンから 対 応 状 況 を 判 定 (2013/11/11 現 在 ) - 3 -

2. PerlのIPv6 対 応 - 4 -

2.1. PerlのIPv6 対 応 状 況 概 略 考 慮 すべき 要 素 対 応 状 況 備 考 名 前 解 決 Socket::getaddrinfo() Socket::getnameinfo() CPAN Net::DNS ソケット コアモジュールの Socketは 5.10 か ら 部 分 的 に 対 応 5.14でフル 対 応 CPANモジュールにも 対 応 しているも のがある 各 種 (L7) プロトコル その 他 HTTP 標 準 では 非 対 応 (コアモジュール クライアント HTTP::Tiny, LWP 等 のメジャーなモ ジュールも 非 対 応 ) SMTP 標 準 では 非 対 応 (コアモジュール クライアント Net::SMTP) IPv6アドレス CPANモジュール Net::IPにより 対 応 の 処 理 - 5 -

2.2. 名 前 解 決 Net::DNS DNS リゾルバ (CPAN モジュール) http://search.cpan.org/dist/net-dns/ IPv6 関 連 RR の 検 索 に 対 応 IPv6 関 連 の RR (AAAA, IPv6 アドレスの PTR) は 問 題 なく 引 ける AAAA を 引 いた 結 果 の 文 字 列 表 現 は :: による 省 略 がされない (Net::DNS::RR の print() 等 ) IP アドレスはそのままの 形 式 で 逆 引 きできる (in-addr.arpa. / ip6.arpa. 形 式 にする 必 要 がない) IPv6 アドレスを 逆 引 きするときは :: で 省 略 したアドレスを 渡 すことも 可 能 - 6 -

2.3. ソケット(1) TMTOWTDI のフレーズ 通 り, ソケットに 関 しても 色 々 なモジュールが 存 在 し, 他 の 言 語 に 比 べて 複 雑 な 状 況 TMTOWTDI; There s more than one way to do it : 同 じことをするのに 何 通 りものやり 方 があるという Perl のモットー IPv6 非 対 応 IPv6 対 応 CPANモジュール IO::Socket::IP IO::Socket::INET6 Socket6 コアモジュール IO::Socket::INET Socket バージョンにより 対 応 状 況 が 異 なる - 7 -

2.3. ソケット(2) Socket IO::Socket::INET IO::Socket::IP コア/CPAN コアモジュール コアモジュール CPANモジュール IPv6 対 応 備 考 (Perl 5.14 付 属 の Socket 1.94 以 降 ) IPv6 関 連 のものは ほとんどが 明 示 的 にインポートする 必 要 あり 多 くのネットワーク 系 モジュールが IO::Socket::INET を 使 用 しているが, それらのモジュール も 当 然 ながら IPv6 非 対 応 となっている ( 対 応 方 法 は 後 述 ) IO::Socket::INET の 置 き 換 えとして 設 計 されており コン ストラクタやメソッ ドは 互 換 性 がある ( 一 部 例 外 あり) IO::Socket::INET でやっていたことを やりたい 場 合 には このモジュールを 使 うのが 良 い - 8 -

2.3. ソケット(3) IO::Socket::INETとIO::Socket::IPの 比 較 IO::Socket::INET と IO::Socket::IP による TCP クライアントの 例 ($host の $port に TCP で 接 続 ) IO::Socket::INET use IO::Socket::INET; : my $sock = IO::Socket::INET->new( PeerAddr => $host, PeerPort => $port, Proto => 'tcp' ) or die Error: $! n ; : IO::Socket::IP use IO::Socket::IP; : my $sock = IO::Socket::IP->new( PeerAddr => $host, PeerPort => $port, Proto => 'tcp' ) or die Error: $! n ; : 赤 字 の 部 分 (use およびコンストラクタ) を 変 更 するだけで IPv4 専 用 だったコードが IPv4 / IPv6 両 対 応 になる (はず) ( 変 更 後 のプロトコルの 優 先 順 位 はポリシーテーブルの 設 定 に 従 う) もちろん, IPv4 アドレスが 直 書 きしてあるような 部 分 については, 別 途 対 応 する 必 要 あり - 9 -

2.4. サービス(HTTP, SMTP) HTTPクライアントのメジャーどころ:IPv6 非 対 応 HTTP::Tiny HTTP::Lite [CPAN] LWP::UserAgent [CPAN] IO::Socket::INETを 使 用 しているため socket()にpf_inetを 渡 しているため 内 部 で 使 用 している Net::HTTP が IO::Socket::INET のサブクラスのため SMTPクライアント(Net::SMTP):IPv6 非 対 応 IO::Socket::INETのサブクラスのため IO::Socket::INETに 由 来 するものが 多 い - 10 -

2.5. アドレス 処 理 Net::IP IPv4 / IPv6 アドレス 処 理 のための 様 々な 機 能 を 提 供 する CPANモジュール http://search.cpan.org/dist/net-ip/ 次 のようなメソッドを 提 供 する version() :IP のバージョンを 返 す (4 or 6) ip() :IPv6 アドレスの 場 合, 最 も 冗 長 な 表 現 を 返 す short() :できるだけ 省 略 された 表 記 を 返 す reverse_ip() : 逆 引 き 用 の 表 記 (PTR レコードの 形 式 ) を 返 す - 11 -

2.6. Net::INET6GlueによるIPv6 対 応 (1) IO::Socket::INETを 使 用 するモジュールは 標 準 ではIPv6 非 対 応 IO::Socket::INETはIPv6 非 対 応 ( 先 述 ) IO::Socket::INETを 直 接 使 用 するコードは IO::Socket::IPを 使 用 することで 対 応 可 能 既 存 のコード 依 存 CPANモジュール 等 依 存 IO::Socket::INET IPv6 非 対 応 IO::Socket::INETを 使 用 するモジュールをIPv6に 対 応 させる には Net::INET6Glueを 使 用 する IO::Socket::INETを 使 用 するモジュールをIPv6に 対 応 させる には Net::INET6Glueを 使 用 する Net::INET6Glue IO::Socket::INET6 からシンボルテーブルを IO::Socket::INET にコピー することで, IO::Socket::INET を IO::Socket::INET6 のように 動 作 させ る CPAN モジュール 詳 細 は Net::INET6Glue::INET_is_INET6.pm を 参 照 http://search.cpan.org/dist/net-inet6glue/ LWP や Net::SMTP 等 の IO::Socket::INET 依 存 モジュールを 使 用 し たプログラムで, Net::INET6Glue により IPv6 での 通 信 ができるよう になったことが 確 認 されている - 12 -

2.6. Net::INET6GlueによるIPv6 対 応 (2) 使 い 方 : IO::Socket::INET に 依 存 した CPAN モジュール 等 を 使 用 している 既 存 のコードの 先 頭 で, use Net::INET6Glue; するだけ HTTP::Tiny (IO::Socket::INET 依 存 = IPv4 専 用 ) を 使 用 したコードを Net::INET6Glue によって IPv6 に 対 応 させる 例 use Net::INET6Glue; これを 追 加 するだけ use HTTP::Tiny; : 既 存 のコード my $http = HTTP::Tiny->new; my $response = $http->get($url); print $response->{content}; 注 意 点 Net::INET6Glue を 使 用 した 場 合 のプロトコルの 優 先 順 位 は システムのポリ シーテーブルの 設 定 に 従 う もちろん, IPv4 アドレスが 直 書 きしてあるような 部 分 については 別 途 対 応 す る 必 要 あり - 13 -

3. まとめ - 14 -

Perlまとめ Perl 本 体 (コアモジュール Socket) の IPv6 (フル) 対 応 は Perl 5.14 から IO::Socket::INET および IO::Socket::INET 依 存 モジ ュール/コードは IPv6 非 対 応 今 後 は IO::Socket::INET ではなく IO::Socket::IP を 使 うようにする IO::Socket::INET 依 存 のプログラムを 手 っ 取 り 早 く IPv6 に 対 応 させたい 場 合 は Net::INET6Glue が 便 利 - 15 -

参 考 文 献 Internet Week 2012 講 演 スクリプト 言 語 とIPv6-2012- / 関 根 佳 直 氏 https://www.nic.ad.jp/ja/materials/iw/2012/pro ceedings/t7/t7-sekine.pdf - 16 -