tftpd-hpa の設定について
ハマった場所をメモ。
環境: Ubuntu で tftp-hpa を起動(させているつもり)
症状: tftp-hpa の設定が反映されない
普通に使うなら
/etc/default/tftpd-hpa
を編集して
# /etc/init.d/tftpd-hpa start
で良いはず。
ところが、inetdでtftpのサービスが動いていると上の方法では上手くいかない。
というのも、inetdがすでにポートを握っているので、後からtftpd-hpaを起動しようとしてもポートがバインドできず起動に失敗する。
実際に
/var/log/syslog
を見れば
(前略)in.tftpd[0000]: cannot bind to local socket: Address already in use
とかでている。*1
で、何が問題の原因かというと
/etc/inetd.conf
のなかにある
tftp dgram udp wait 云々
という一行。*2
こいつが inetd に tftpd のポート (UDP port 69) をリッスンさせてしまうためにデーモンがバインドできなくなってしまう。
確認方法としては
なんてのがある。
これをやって、
udp 0 0 0.0.0.0:69 0.0.0.0:* XXXX/inetd
と出ていたらアウト。*3
対処法は明確
/etc/inetd.conf
の該当行をコメントアウトして inetd を再起動。
今回はイライラしていたので
pkill inetd
で殺してしまった。*4