環境
- arch: amd64(xen DomU)
- OS(userland): NetBSD 5.1
- kernel: NetBSD 5.99.47
- nginx: 1.0.8
OSの設定
/etc/rc.confに以下を追加します。
ip6mode="autohost"
rtsol="YES"
rtsol_flags="xennet0"
/etc/ifconfig.xennet0
up 192.168.1.2 netmask 255.255.255.0
inet6 2001:XXXX:YYYY:ZZZZ::2 prefixlen 64 alias
リブートして、IPv6グローバルアドレスがついていることを確認します。
上記の設定でstaticなグローバルアドレスに加えてアドレス自動設定によって設定されたアドレスの2つのIPv6アドレスがつきます。
ちなみにip6mode="host"にすると自動設定のアドレスがつかなくなりますが、RAを受信しなくなりデフォルト経路を自動設定できなくなってしまいます。
今回は各種デーモン側の設定で特定のIPv6アドレスのみでlistenするようにします。
nginxコンパイル
nginxでIPv6対応するにはバイナリ自体が対応するようにコンパイルされている必要があります。
# nginx -V
として--with-ipv6が表示されていれば対応済でコンパイルされています。
これまでコンパイルしたものは未対応だったので以下で再生成します。
$ tar zxvf somewhere/nginx-1.0.8.tar.gz
$ cd nginx-1.0.8
$ ./configure --prefix=/usr/local/nginx \
--with-ld-opt="-R/usr/pkg/lib -lm" \
--add-module=/usr/pkg/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/nginx \
--with-http_stub_status_module \
--with-ipv6
$ make
$ su
# make install
nginxの設定
Linuxと*BSDで設定の方法が違うようです。
NetBSDでは
nginx.confおよびincludeされている*.confについて、
listen 80;
となっている部分を
listen 80;
listen [2001:XXXX:YYYY:ZZZZ::3]:80;
のように変更します。IPv4はすべてのv4アドレス、IPv6は特定のアドレスのみ。
ちなみにIPv6が有効なインターフェイスすべてについてlistenする場合はlisten [::]:80;とします。
IPアドレスでallowなどでACLしている部分があれば、その部分も修正します。
allow 192.168.1.0/24;
allow 2001:XXXX:YYYY:ZZZZ::/64;
deny all;
nginxをrestartしてIPv6でアクセスできることを確認して完了です。
yellowback's blog 日時 : nsd(name server)のIPv6設定