DNSについては、極力既存の環境を生かすという観点から、すでに構築されているサーバでIPv6アドレスを解決させる方法を紹介します。
DNSサーバでIPv6アドレスを扱うに当たって、新しい種類のレコードが増えているという点以外は何ら変わりません。BIND 9で構築されたDNSサーバをIPv6ホストの名前解決に使うのであれば、特に不自由はありません。
筆者はBIND 9.2.1を用いてDNSサーバを構築していますが、ゾーンファイルにIPv6アドレスを解決するためのレコードを追加し、namedを再起動するだけで作業は完了します。
■ゾーンファイルの編集と動作確認
IPv6では、FQDNからIPアドレスを解決するためにA6レコードもしくはAAAAレコードを用います。通常のAレコードによってFQDNからIPv4アドレスが導き出されるのに対し、A6もしくはAAAAレコードはFQDNからIPv6アドレスが導き出されます。
このレコードをゾーンファイルに追加するわけですが、通常使用しているゾーンファイルに以下のような項目を追加します。
v6sample IN AAAA 2001:2c0:418::1 |
これで、AAAAレコードの解決が実施されるようになります(注)。
注:ゾーンファイル変更後は、シリアル番号を増やすことを忘れずに。
アドレス解決の例を以下に示します。なお、使用しているBIND 9は、特にIPv6を意識したコンパイルを実施しているわけではありません。
$ nslookup |
BIND 8から、DNSのレコードをクライアントから更新できる仕組み(Dynamic Update:動的更新)が用意されています。
という点において、ダイナミックアップデートは優れていますが、セキュリティや管理上の問題も発生しやすいことから、本稿では取り上げません。
筆者が今回使用したRed Hat Linux 7.3はもともとIPv6に対応しており、Apache 2.0もIPv6に対応しています。これより、すでにApache 2.0をインストールしている場合は、USAGIカーネルをインストールするだけでWebもIPv6対応となります。新規にApache 2.0をインストールする場合も、基本的にはconfigureからmake installまで、特に手順を変更することはありません。
これだけでは面白くないので、KAME Project(http://www.kame.net/)のように、IPv4でアクセスした場合とIPv6でアクセスした場合で表示されるページが異なるサイトにしてみましょう。そのために実施することは、httpd.confにVirtualHostの指定を加えることです。
■IPv4とIPv6で表示が異なるページに
VirtualHostの指定例を以下に示します。61.197.226.210および2001:2c0:418::1の2つのアドレスを割り当て、それぞれのアドレスについてServerName、ServerAdmin、DocumentRoot、ErrorLog、TransferLogを指定しています。
<VirtualHost [::ffff:61.197.226.210]:80> |
httpd.confを編集したらApache 2.0を再起動して、telnetクライアントでそれぞれのアドレスに対してHTTPアクセスを実施してみましょう。なお、例では/home/apache/v4および/home/apache/v6配下に、以下のようにしてindex.htmlを作成してあります。
$ echo IPv4 > /home/apache/v4/index.html |
$ telnet 61.197.226.210 80 |
IPv4アドレスへアクセス |
$ telnet 2001:2c0:418::1 80 |
IPv6アドレスへアクセス |
■Apache 1.3系は?
Apache 1.3はIPv6に対応していないため、IPv6対応パッチを適用する必要があります。http://orange.kame.net/dev/cvsweb.cgi/kame/FAQ?rev=1.76でIPv6対応パッチの所在を調べることができます。しかし、最新のパッチでもApache 1.3.22向けであり、Apacheのバージョンが若干古めです。
IPv6対応のWebサーバを構築するのであれば、Apache 2.0ベースにすることをお勧めします。
Postfixは2002年12月現在で1.1.12がリリースされていますが、残念ながらこのバージョンに適合するパッチは見つけられませんでした(注)。1.1.11-20021115に対するパッチはDean Strik's Postfix Page(http://www.ipnet6.org/postfix.html)で公開されているので、そちらを用いることにします。
注:原稿執筆時点では存在しませんでしたが、2002年12月6日現在ではpostfix-1.1.12-20021124に対応するパッチが取得できます。
■PostfixとIPv6パッチのインストール
Postfix本体は、Postfix Download Siteの一覧(http://www.postfix.org/ftp-sites.html)から、Postfix-1.1.11-20021115のアーカイブをダウンロードします。
IPv6パッチは、Dean Strik's Postfix Page(http://www.ipnet6.org/postfix.html)からPatch for TLS and IPv6 support, 1.1.11-20021101(tls+ipv6-1.8-pf-1.1.11-20021115.patch)をダウンロードします。
Postfixとパッチをダウンロードしたら、以下の手順でPostfixのアーカイブを展開してパッチを適用します。
$ gzip -dc postfix-1.1.11-20021115.tar.gz | tar xvf - |
パッチを当てたら、Postfixのmakeおよびインストールを実施します。インストール前に、Postfixの動作に必要なユーザーおよびグループを作成しておきます。
$ make |
最後のmake installの時点でいろいろと質問されますが、すべてデフォルト値で問題ありません(すべて[Enter]キーで答える)。
■/etc/postfix/main.cfの設定と動作チェック
Postfixの設定は、/etc/postfix/main.cfに格納されます。/etc/postfix配下にサンプルファイルがあるので、自分の用途に合ったサンプルを選んで適宜編集してください。
すでに使用実績がある設定ファイルを持っているのであれば、それを利用します。追加設定はほとんど不要ですが、mynetworksなどの指定においてIPv6アドレスを指定するには、例えば以下のように記述します。
mynetworks = 61.197.226.208/29, 127.0.0.1/8, [2001:2c0:418::]/48
|
上記の例のように、IPv6アドレスは前後を「[]」で囲い、ネットワークの指定が必要な場合はアドレスマスクのビット長を「/」の後に記述します。
ここまで完了したら、Postfixを起動させてみましょう。
$ su root |
Postfixのチェックは、telnetでSMTPポートに対するコネクションを開設することで実施可能です。
$ telnet v6sample 25 |
これで、ちゃんとメールが届けば問題ありません。
■Postfix-1.1.12の場合
2002年11月24日にPostfix-1.1.12がリリースされましたが、実はこれに対応するIPv6パッチが存在します。高山啓介氏が作成された非公式パッチ(注)ですが、このパッチはKAMEを対象にしていることもあり、USAGI環境ではそのままコンパイルして動作するというわけにはいきませんでした。
そこで、1.1.11-20021115に対するパッチと高山氏のパッチを比較して、取りあえずUSAGI環境で動くパッチを作成しました。興味がある方は試してみてください。
http://www.todo.gr.jp/~wakatono/ipv6/postfix-1.1.12+ipv6-usagi.patch.gz
から取得可能です。
注:KAME Projectから配布されているPostfix IPv6対応パッチpostfix-20010228pl04-v6-20010913a.diff.gzを基に作ったとのことです。
http://www.uinet.or.jp/~taka/network/postfix.html
で配布されています。
qmailのインストールについては、実用qmailサーバ運用・管理術があるので割愛します。ここではIPv6対応のパッチを中心に解説します。
qmailはtcpserverとともに使われることが多いので、qmailのパッチおよびtcpserverのパッチを準備します。
よりそれぞれ入手可能です。
一応紹介しておくと、ucspi-tcp-0.88およびqmail-1.03のオリジナルアーカイブは、
でダウンロードできます。
それぞれのパッチは特にエラーもなく適用可能であり、パッチ施行→コンパイル→インストールも問題なく行えます。
$ gzip -dc ucspi-tcp-0.88.tar.gz | tar xvf
- |
tcpserverへのパッチ適用例 |
$ gzip -dc qmail-1.03.tar.gz | tar xvf - |
qmailへのパッチ適用例 |
コンパイルおよびインストールの手順は、実用qmailサーバ運用・管理術 第1回で紹介されている方法で問題ありません。
以上の作業が完了した時点で、tcpserverで使用するデータベースファイル(cdb)もIPv6アドレスからのアクセスを制御できるようになります。例えば、特定のIPv6ネットワークからのアクセスについて、以下のような形でcdbの基になるファイルに記述できます。
2001:2c0:418:::allow,RELAYCLIENT="" |
最初の「2001:2c0:418::」がIPv6のネットワークアドレス表記ですが、「:allow」以降は従来と変わりません。
恒例の動作確認用telnetの結果を以下に示します。
# telnet v6sample smtp |
ここまでできれば、後はqmailの基本的な設定を済ませ、Postfixと同様に配送試験を実施すればOKです。
SMTPサーバとして紹介したPostfixおよびqmailは、Maildir形式のメールスプールをサポートしています。Maildir形式をサポートしているPOP/IMAPサーバとしてはcourier-imapがあります。courier-imapはIPv6にも対応しており、2002年12月現在の最新版はcourier-imap-1.6.1です。
インストールや設定の方法は、実用qmailサーバ運用・管理術 第2回と同じです。コンパイルから設定まで、IPv4と手順がまったく変わらないため、詳細は割愛します。筆者の場合、/usr/local/courier-imap/libexec/authlib/配下にauthdaemond.ldapが存在したために認証を受け付けてもらえなかったという経験があります。このように拡張モジュールが存在した場合の対処方法も同記事に記載されています。
USAGIのユーザーランドを構築/インストールした時点で、IPv6対応のinetdとFTPサーバがインストールされます。しかし、ここではFTPサーバの定番ともいえるProFTPDを使ってみましょう。ただし、ProFTPDがIPv6対応を実施するのは1.3からであり、現在リリースされている1.2.xではIPv6に対応していません。従って、IPv6環境でProFTPDを使う場合はパッチが必要になります。
2002年12月現在、ProFTPDの最新版は1.2.7rc3ですが、IPv6対応パッチがリリースされている範囲の最新版は1.2.5です。そこで、今回はProFTPD 1.2.5を使います。
■ProFTPDのソースコードおよびパッチの入手
ProFTPDのオリジナル・アーカイブは、ProFTPDの本家サイトおよびミラーサイトからも入手が可能です。ただし、今回利用する1.2.5は最新版ではないため、
ftp://ftp.middle-earth.it/proftpd/historic/v1.2/proftpd-1.2.5.tar.bz2
のようにhistoricディレクトリ配下に移動しています。探すときには気を付けてください。
IPv6パッチは、proftpd-1.2.5-ipv6.diff.gzという名前で公開されています。例えば、以下のところから入手可能です。
http://kebo.vlsm.org/debian-ipv6/patch/proftpd/1.2.5/
■パッチの適用とコンパイル/インストール
入手したソースにパッチを適用します。
$ bzip2 -dc proftpd-1.2.5.tar.bz2 | tar xvf - |
ここで問題が1つ発生します。Make.rules.inというファイルに対してパッチを適用する際にrejectされてしまいます。rejectされた内容をチェックしてMake.rules.inを修正するか、以下のものに差し替える必要があります。
この後は、普通にconfigure+make+make installを実施すれば問題ありません。
インストールできたら、動作確認してみましょう。FTPサーバのIPv6アドレスに対してFTP接続してみます。FTPクライアントもIPv6に対応している必要がありますが、USAGIのコマンドインストール時にインストールされています。動作の様子を以下に示します。
$ /usr/local/v6/bin/ftp v6sample |
Copyright © ITmedia, Inc. All Rights Reserved.