NetBSD 1.6Z〜 net.inet6.ip6.v6only

NetBSD 1.6Zにしたら、net.inet6.ip6.v6only=0 にしていると、 IPv4アドレスでrpcbindに繋ぎに行ったときにも ipv4-mapped IPv6 アドレスで 解釈されてしまう。結局、名前解決できず不明なホストとして リクエストに答えられずにおしまい。困り。

かといって、net.inet6.ip6.v6only=1 にすると、tcpserver で ホストアドレスを0にしても、IPv6アドレスしかLISTENしなくなってしまう。

悲しい。

結局、tcpserver を起動するスクリプトで一時的に net.inet6.ip6.v6only を書き換えることで対処。

/service/smtpd/run

#!/bin/sh
v6only=`sysctl -n net.inet6.ip6.v6only`
csh -c "(sleep 10; sysctl -w net.inet6.ip6.v6only=$v6only)&"
sysctl -w net.inet6.ip6.v6only=0
exec env - \
PATH=/var/qmail/bin:/var/qmail/smtpd:/bin:/usr/bin:/usr/sbin:/usr/local/bin/DJBdns:/usr/local/bin/UCSPI:/usr/local/bin/Daemontools \
envuidgid qmaild softlimit -d250000 \
tcpserver -vR -c40 -U -x smtp.cdb 0 smtp qmail-smtpd 2>&1

て感じ。うーん、なんか違うような…


Generated with mkdiary.rb
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]