LoginSignup
8

More than 5 years have passed since last update.

はじめてのxinetd

Last updated at Posted at 2018-06-11

LPIC 102試験の勉強中。

ftpをsystemdでなくxinetdで起動してみる。

install ftp

一番ハマったのがftp側の設定。

適当に触ったときに hoge=NOhoge=NO と後ろにスペースを入れたら起動しなくて起動しなくて....

古いライブラリはそういう気持ちで付き合いましょう。

(通信チェックだけなら別にftp loginできなくてもいいので、サービス起動さえしてればよかったりする。悔しかったので。)

まずftpサービスを起動する

# install
yum install -y vsftpd ftp

# ftpサーバの設定
vim /etc/vsftpd/vsftpd.conf

# listenを有効にする
listen=YES
#listen=NO

# ipv6コメントアウト
#listen_ipv6=YES

# 一番下にこれを追加
userlist_deny=NO

ログインユーザの設定

# rootで使えるようにする
vim /etc/vsftpd/ftpusers

root の行をコメントアウトする

#root

# 起動して試す
systemctl start vsftpd && systemctl status vsftpd

ここで起動中のport, processの関係を見ておく

# port状況を確認
[root@cent70 vsftpd]# netstat -na  | grep 21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     

# processのリレーションを確認
[root@cent70 vsftpd]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        └─vsftpd

systemdの下にvsftpdが起動しているのがわかる。ここがxinetdでは変わるはず。

次に、ここにftp接続されるとpstreeがどう変わるか見ていく。systemdなftpに接続してみる。

# ftp 接続してみる
ftp localhost
Name: root            # ここで Name: と来ていればftp通信はできてることになる
Password: ***        # rootの普通のpassword, sshで使ったりするやつ

ftp> dir        # ファイル一覧出ればok

この接続中のpstreeを別terminalから確認する。

[root@cent70 vsftpd]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        └─vsftpd───vsftpd───vsftpd

systemdの下にvsftpdが連なって何個も起動している。

xinetdを設定していく

こちらを参考にした

http://d.hatena.ne.jp/sin-j/20080812/1218512584

まずvsftpdを止める

systemctl stop vsftpd

# port が消えたか確認
[root@cent70 vsftpd]# netstat -na  | grep 21
なし

vsftpdのlistenを無効にしておく

vim /etc/vsftpd/vsftpd.conf
#listen=YES
listen=NO

xinetdにvsftpd用の設定を作る

vim /etc/xinetd.d/vsftpd 

# default: off
# description: The vsftpd FTP server serves FTP connections. It uses \
#       normal, unencrypted usernames and passwords for authentication.
service ftp
{
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/vsftpd
        server_args             = /etc/vsftpd/vsftpd.conf
        nice                    = 10
        disable                 = no
        flags                   = IPv4
}

xinetdを起動

systemctl start xinetd && systemctl status xinetd

ポートとプロセスをチェク!

[root@cent70 vsftpd]# netstat -na  | grep 21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     

[root@cent70 vsftpd]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        └─xinetd

ポートが空いてる & xinetd がプロセスに変わっています!

ではftp接続してftpをxinetd経由で起動してみよう

# ftp 接続してみる
ftp localhost
Name: root            # ここで Name: と来ていればftp通信はできてることになる
Password: ***        # rootの普通のpassword, sshで使ったりするやつ

ftp> dir        # ファイル一覧出ればok

接続したままの状態で pstree を見てみよう!

[root@cent70 xinetd.d]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        └─xinetd───vsftpd───vsftpd

キタ━━━━(゚∀゚)━━━━!! xinetd が親の形でvsftpdが連なっています!

まとめ

xinetdを使うと vsftpc が単体でlistenしなくてよくなった

でも結局xinetdがport開けっぱなしでlistenするのね。その瞬間だけ開く、とかじゃないのか...

サービス起動なんて大した負荷じゃないし今のサーバだとほんと意味なさそう。。。

inetdをインストールしようとしたらxinetdが入ったのでこれをやった。inetdはどうやってcent7で試すんだろう。。。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8