IPv6などたくさんのアドレスがついているとき、全てのIPでサービスがLISTEN(BIND)するが、明示的に固定する方法を紹介 *1
proftpd.conf に次のように記載するだけ。
SocketBindTight on DefaultAddress 192.0.0.235 2001:db8:564::2000
実はこの設定に随分はまり、当初は次のように書いていました。
SocketBindTight on DefaultAddress 192.0.0.235 DefaultAddress 2001:db8:564::2000
その場合、次のようにメッセージが表示され、最初に見つけたIPアドレスのみLISTENされ、他のアドレスは正しく設定されません。
# /usr/local/sbin/proftpd -t Checking syntax of configuration file - setting default address to 192.0.0.235 - setting default address to 2001:db8:564::2000 bsd.gyojya.jp - SocketBindTight in effect, ignoring DefaultServer Syntax check complete.
# netstat -an |grep LISTEN |grep 21 tcp4 0 0 192.0.0.235.21 *.* LISTEN
また、DefaultAddress にFQDNを記載しても同様でした。
しばらく悩み続け、 DefaultAddress にアドレスをスペース区切りで複数個記載すると正しく動作しました。
# /usr/local/sbin/proftpd -t Checking syntax of configuration file - setting default addresses to 192.0.0.235, 2001:db8:564::2000 bsd.gyojya.jp - SocketBindTight in effect, ignoring DefaultServer Syntax check complete.
# netstat -an |grep LISTEN |grep 21 tcp6 0 0 2001:db8:564::20.21 *.* LISTEN tcp4 0 0 192.0.0.235.21 *.* LISTEN
*1:
ServerType は inetd ではなく、standalone で動作している場合の設定方法で、inetd の場合は無効になります。