- ベストアンサー
debian 2.6 inetd から xinetd へ
スーパーサーバーを inetd から xinetd に変更しようとしています。 その際、 #aptitude install xinetd としましたが、/etc/xinetd.conf や /etc/xinetd.d は作成されませんでした。 エラーは検出されませんでしたが、インストールが正常に行われなかったと思い、http://www.xinetd.org からソースファイルをダウンロードして、 #./configure #make #make install として、正常にインストールされたようですが、結果は同じでした。 何がいけないのか、ご教授していただけませんでしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>ただ、reboot 後 >#ps ax | grep xinetd >とすると、xinetd の確認が出来ないのですが、これはこれでいいのでしょうか。 いいえ。reboot後 psで確認できないといけません。 確か、 # /etc/init.d/xinetd start でもうまく起動できなかったのですよね。 Starting internet superserver: xinetd は表示されていたのだから、もう障害はないはずなのですが… xjdさんの手順のままだとすると、/usr/local/sbinへのinstallになりますがそれに合わせて、/etc/init.d/xinetdは書き換えてありますか? telnetがつながらないのも妙ですね。 xjdさんの only_from = 221.999.999.999 は、環境にあわせて書き換えてありますよね? daytime, echo, timeなどはどうでしょう? サンプルのままだと、 service daytime { disable = yes type = INTERNAL id = daytime-stream socket_type = stream protocol = tcp user = root wait = no } となっているので、disable = noにして、xinetdを再起動し、telnet localhost daytime のように確認してみてください。
その他の回答 (6)
- xjd
- ベストアンサー率63% (1021/1612)
こんにちは。#1です。 パッケージではなくソース版の xinetd-2.3.14.tar.gz をDebian/GNU Linuxにインストールしてみましたが、 特に問題なく動きましたので参考にしてください。 (設定ファイルの見本は見易い様に全角の空白を使ってますのでコピペするときは注意してください) (1) inetdを停止 # /etc/init.d/inetd stop Stopping internet superserver: inetd. # (2) inetdが起動しないようにシンボリックリンクを削除 # update-rc.d -f inetd remove update-rc.d: /etc/init.d/inetd exists during rc.d purge (continuing) Removing any system startup links for /etc/init.d/inetd ... /etc/rc0.d/K20inetd /etc/rc1.d/K20inetd /etc/rc2.d/S20inetd /etc/rc3.d/S20inetd /etc/rc4.d/S20inetd /etc/rc5.d/S20inetd /etc/rc6.d/K20inetd # (3) xinetd-2.3.14をソースからコンパイル・インストール # tar xvzf xinetd-2.3.14.tar.gz # cd xinetd-2.3.14/ # ./configure --with-libwrap=/usr/lib/libwrap.so # make # make install # (4) /etc/xinetd.confを作成 (xinetd/sample.confの見本から) # cat /etc/xinetd.conf defaults { instancesnstances = 25 log_type = FILE /var/log/xinetd.log log_on_success = HOST PID log_on_failure = HOST } includedir /etc/xinetd.d # (5) /etc/xinetd.d/telnet を作成 (xinetd/sample.confの見本から) # cat /etc/xinetd.d/telnet # default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd only_from = 221.999.999.999 log_on_failure += USERID } # (6) コマンドラインからxinetdを起動 # /usr/local/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive # ps ax | grep inet 2109 ? Ss 0:00 /usr/local/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive (7) telnetでログインしたときの/var/log/xinetd.log # cat /var/log/xinetd.log 06/5/2@00:54:38: START: telnet pid=2062 from=221.999.999.999 (telnetが成功したとき) 06/5/2@01:13:13: FAIL: telnet libwrap from=221.999.999.111 (only_fromで拒否されたとき) # (8) /etc/init.d/xinetd の作成(/etc/init.d/inetd を改造) # cat /etc/init.d/xinetd #!/bin/sh # # start/stop xinetd super server. if ! [ -x /usr/local/sbin/xinetd ]; then exit 0 fi case "$1" in start) echo -n "Starting internet superserver:" echo -n " xinetd" ; /usr/local/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive echo "." ;; stop) echo -n "Stopping internet superserver:" echo -n " xinetd" ; kill -9 `cat /var/run/xinetd.pid` echo "." ;; restart) echo -n "Restarting internet superserver:" echo -n " xinetd" ; kill -9 `cat /var/run/xinetd.pid` echo -n " xinetd" ; /usr/local/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive echo "." ;; *) echo "Usage: /etc/init.d/xinetd {start|stop|restart}" exit 1 ;; esac exit 0 # (9) /etc/init.d/xinetdのシンボリックリンクを作成。 # update-rc.d xinetd defaults Adding system startup for /etc/init.d/xinetd ... /etc/rc0.d/K20xinetd -> ../init.d/xinetd /etc/rc1.d/K20xinetd -> ../init.d/xinetd /etc/rc6.d/K20xinetd -> ../init.d/xinetd /etc/rc2.d/S20xinetd -> ../init.d/xinetd /etc/rc3.d/S20xinetd -> ../init.d/xinetd /etc/rc4.d/S20xinetd -> ../init.d/xinetd /etc/rc5.d/S20xinetd -> ../init.d/xinetd # 以上です。ソース版xinetdを導入する場合の参考にしてください。
お礼
丁寧に解説してくださりありがとうございます。 おかげさまで、xinetd を起動できました。 ただ、reboot 後 #ps ax | grep xinetd とすると、xinetd の確認が出来ないのですが、これはこれでいいのでしょうか。 気になるのは、手動で起動した場合、 telnet で自分自身に接続すると、/etc/hosts.allow ALL : 192.168.1. 127.0.0.1 と、LANからの接続を許可をしているのに接続が拒否されてしまい、起動は動作をしているのか確認できないので、おかげで起動は出来ているようなのですが、機能しているのかどうかということです。 せっかく、ご丁寧に解説してくださったのに、返事が遅れ不愉快な思いをさせてしまい申し訳ありませんでした。
- mac_res
- ベストアンサー率36% (568/1571)
>問題は、/etc/init.d/xinetd の中身に問題があるようです。 再確認しましたが、source treeのdebian/xinetd.initは、稼動中の/etc/init.d/xinetdと同じものです。 #./configure --prefix=/usr #make #make install としてinstallされたのでしょうか? あるいは、/usr/local/sbinにinstallして/etc/init.d/xinetdを編集したのでしょうか? /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive と端末から直接起動したときはどうでしょうか?
お礼
回答をくださりありがとうございます。 私事で大変申し訳ありませんが、しばらくPCから離れた環境におりましたので、コメント出来ませんでした。mac_resさんには、御親切にしていただいているので、不快な思いをさせてしまったかもしれません。 >/usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive >と端末から直接起動したときはどうでしょうか? 順番が逆になってしまいましたが、x.jdさんの解説を参考に 端末からは直接起動することが出来ました。 ただ、一旦reboot してから #ps ax | grep xinetd とすると、反応が無いことから、今のところ手動でのみ起動出来ております。
- mac_res
- ベストアンサー率36% (568/1571)
/etc/rc*.dの設定を忘れていました。 cd /etc/rc0.d ln -s ../init.d/xinetd K20xinetd cd /etc/rc1.d ln -s ../init.d/xinetd K20xinetd cd /etc/rc2.d ln -s ../init.d/xinetd S20xinetd cd /etc/rc3.d ln -s ../init.d/xinetd S20xinetd cd /etc/rc4.d ln -s ../init.d/xinetd S20xinetd cd /etc/rc5.d ln -s ../init.d/xinetd S20xinetd cd /etc/rc6.d ln -s ../init.d/xinetd K20xinetd
お礼
丁寧に解説してくださり、本当にありがとうございます。 /etc/init.d/xinetd を作成し、 /etc/xinetd.conf 及び /etc/xinetd.d/以下のファイルも作成しました。 /etc/init.d/xinetd に実行アクセス権限を与え、 この段階で再起動し、 #ps ax | grep xinetd により、起動しているかどうかを確認しました。 起動してないいようでしたので、 #/etc/init.d/xinetd start Starting internet superserver: xinetd. # を確認してから、 #ps ax | grep xinetd として、再度起動を確認しました。が、起動していませんでした(運が足りませんでした)。 /etc/xinetd.conf や /etc/xinetd.d/以下の設定ファイルは、正常にxinetdが稼働しているLinux のファイルと比較してもマズい所は見当たりませんでしたので、問題は、/etc/init.d/xinetd の中身に問題があるようです。 ここまでくると、自分のレベルでは手の打ちようがありません。 お手間ばかりとらせて申し訳ありませんが、今一度知恵をかしてください。
- mac_res
- ベストアンサー率36% (568/1571)
>/etc/init.d/xinetd も作成されず 自動的には作成されません。 ./configure --prefix=/usr make make install した場合 cp debian/xinetd.init /etc/init.d/xinetd するだけです。 /usr/local/sbinにinstallした場合は適当に編集が必要です。 >inetd のあらゆる機能を xinetd に移行する術がわかりません。 xinetdにitox, xconv.pl, xconv-new.plなどの移行ツールがあります。 まず、 itox -daemon_dir /usr/sbin < /etc/inetd.conf > /tmp/xinetd.conf として、xinetd.confの大元を作ります。このまま使ってしまっても動きますが、せっかくxinetdに移行するのでついでに、これをサービスごとに分割し、/etc/xinitd.dに収納します。 たとえば、/etc/xinetd.d/identには、/tmp/xinetd.confから、 service ident { socket_type = stream protocol = tcp wait = yes user = identd server = /usr/sbin/identd } を切り取っておけばよいですし、/etc/xinetd.d/tftpは、変換されたものをさらに編集し、 service tftp { socket_type = dgram protocol = udp wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftp only_from = 192.168.0.0/24 } のようにします。 全て分割すると/tmp/xinetd.confは空になるので、debian/conffiles/xinetd.confそのものを/etc/xinetd.confにコピーします。 # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { } includedir /etc/xinetd.d 続いてinetdを無効化します。 /etc/init.d/inetdを #!/bin/sh # /etc/init.d/inetd has been diverted by the xinetd package. # The inetd service is provided by xinetd, which means inetd # doesn't need to be run. # # See /etc/init.d/xinetd, or /etc/init.d/inetd.real. exit 0 と書き換えます。 rebootすれば、「運がよければ」xinetdに移行完了でしょう (^^;
- mac_res
- ベストアンサー率36% (568/1571)
SH-4のxinetdは確かに用意されてないようですね。 でも、 http://packages.debian.org/stable/source/xinetd から、xinetd_2.3.13.orig.tar.gzを取って展開し、xinetd_2.3.13-3.diff.gzのパッチを適用すると展開したソーストリーにdebianというdirができ、どうすればdebianで使えるか詳細に説明があります。 debian/conffilesには、/etc/xinetd.confのサンプルと/etc/xindtd.d/におくファイルがありますし、debian/xinetd.initは、/etc/init.d/xinetdのサンプルです。 ./configure;make;make installでは、コマンドとmanしかinstallされませんが、debian/にあるファイルを手動でinstallすれば動くようにできると思います。
お礼
詳しく教えてくださり、ありがとうございます。 多少苦労する点がありましたが、パッチを当ててインストールし、 debian/ の README.update-inetd や xinetd の INSTALL などのマニュアルを長時間かけて自分で訳し、 /etc/inetd.conf の内容を xinetd の構文に従い /etc/xinetd.conf を作成するまで至りました。 しかし、inetd は健在で、/etc/init.d/xinetd も作成されず。 未だinetd のあらゆる機能を xinetd に移行する術がわかりません。 これに関しては、xinetd や debian のマニュアルを探しても見つからず、万事解決するまでには至りませんでした。 解決策をネットで探しておりますが、解決策やヒントを御存じでしたら是非、ご教授ください。
- xjd
- ベストアンサー率63% (1021/1612)
inetdが起動しているDebianにxinetdをインストールしてみましたが、 勝手にxinetdに切り替わりました。特に問題ありませんでした。 ・inetd 起動中を確認 # ps ax | grep inet 1948 ? Ss 0:00 /usr/sbin/inetd 2075 pts/0 S+ 0:00 grep inet ・xinetd インストール # apt-get install xinetd Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: xinetd 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 135kB of archives. After unpacking 299kB of additional disk space will be used. Get:1 http://ftp2.jp.debian.org stable/main xinetd 1:2.3.13-3 [135kB] Fetched 135kB in 0s (483kB/s) Selecting previously deselected package xinetd. (Reading database ... 25619 files and directories currently installed.) Unpacking xinetd (from .../xinetd_1%3a2.3.13-3_i386.deb) ... Setting up xinetd (2.3.13-3) ... Stopping internet superserver: xinetd. Adding `diversion of /etc/init.d/inetd to /etc/init.d/inetd.real by xinetd' Starting internet superserver: xinetd. ・xinetd 起動を確認 # ps ax | grep xinet 2132 ? Ss 0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive 2134 pts/0 S+ 0:00 grep xinet ・xinetd.confが作成された # ls /etc/xinetd.conf /etc/xinetd.conf ・xinetd.d が起動された # ls /etc/xinetd.d chargen daytime echo time どうしても、xinetdに切り替わらないようであれば、xientdパッケージを再設定(dpkg-reconfigure) してみてはいかがでしょう。 http://linux.webseason.net/security/index2.html
お礼
回答くださりありがとうございます。 #apt-get install xinetd を実行したら以下のようなメッセージが出てインストールが実行されませんでした。 Reading Package Lists... Done Building Dependency Tree... Done Package xinetd is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package xinetd has no installation candidate 工学英語は得意ではないのですが、自分なりに訳してみると、 xinetdは利用できないんじゃなくて、他のパッケージから参照されているよ。 多分、パッケージが合っていないか、既に廃れているか、もしくは他のソースからのみ利用できるのかもしれないな。 のような内容なのですが、自分なりに解釈すると that package is missing は アーキテクチャが合っていない事を意味しているのかもしれないと思いました。 こちらのアーキテクチャは SH-4 でして、 http://www.debian.org/destrib/package でも、SH-4 の xinetd のパッケージを見付けることは出来ませんでした。 八方塞がりの状況で打開策が見えて来ない実状です。 どうか御知恵を貸してください。
お礼
回答くださり、ありがとうございます。 通常以下、回答してくださった方法で間違いがないのであれば、自分が手順を間違えた可能性がありますので、もう一度じっくりやってみます。 成功するのは、だいぶ後になってしまうかも知れませんので、先にお礼の言葉を申し上げさせていただきます。 今まで丁寧に解説してくださり、ありがとうございました。 mac_resさんの解説を保存版として記録に残しておこうと思います。 成功致しましたら、捕捉として報告させていただきます。
補足
再インストールし、最初から順を追って設定した結果。期待通りの動作をしてくれました。 丁寧に解説してくださり、本当にありがとうございました。