2013年02月15日

/etc/services

/etc/の中身を見ていて思った

/etc/servicesって何なのだろうかと

主な用途


ポート番号とそれに対応するサービスが書かれたテーブルっぽい。

中身を見ると

$cat /etc/services
.
.
ftp 21/tcp
.
.
www 80/tcp http
www 80/udp
.
.
pop3 110/tcp pop-3
pop3 110/udp pop-3
.
.


こんな感じになってる。

これは、この/etc/servicesを持っているシステム (PC)に

21番のTCPで接続があればFTP、80番で接続があればwww (http)、110番で接続があればPOP3

と、このシステムがみなすという意味らしい。

サービス名 ポート番号とトランスポートの種類 サービスの別名

というテーブル行になっている。

xinetdとの深い関係


上までの話では、みなしたところでどうするのという話。

一つ前の記事でxinetdについて書いた。

xinetdはネットワークのアクセスを受けたときの処理を司るやつだと知った。

httpでアクセスを受けたら、ftpでアクセスを受けたら、pop3でアクセスを受けたら...

それぞれの処理が/etc/xinetd.dに入っている。

$cat /etc/xinetd.d/(ファイル名1)
service http
{
...
}

$cat /etc/xinetd.d/(ファイル名2)
service ftp
{
...
}

$cat /etc/xinetd.d/(ファイル名3)
service pop3
{
...
}


こんな感じ?

どうやって、「アクセスがあった。これはhttpのアクセスだ」、とか知るのか。

その役割が/etc/servicesのようだ。

システムがアクセスを受ける (そのときある情報はポート番号とTCP or UDP。例えば80/tcp)

/etc/servicesがポート番号の情報から何のサービスのアクセスか判断 (例えば、80→http。httpのアクセスだ)

xinetdがサービスを実行(例えば、「http」→ xinetd.dの中のどっかにあるservice http{...}を実行)


独自のネットワークサービスをシステムに登録する


例えば

sugeeeeeee

というネットワークサービスを作る。

55555というTCPパケットを受けたら、echo_sugeedという独自プログラムによって"sugeeeeee"をechoするしょうもないネットワークサービス。

echo_sugeedのdはデーモンのd。

/etc/servicesに

sugeeeeeee 55555/tcp


という一行を追加。ポート番号は適当に決めた55555。

/etc/xinetd.d/sugeeeeeee を作成して以下のように書く。

# default: off
# description: That is sugeeeeeee!!!.
service sugeeeeeee
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/sbin/echo_sugeed //"sugeeeeeee"をechoするプログラム
}

このデーモンのオン・オフはchkconfigを使うと一括でできるのでそっちを使う。

chkconfig sugeeeee offとすれば、/etc/xinetd.d/sugeeeeeeの中にdisable = yesというのが追加されたりinit.dのオフもしてくれるので便利

これで、システムに55555のTCPのネットワークアクセスをしたらこのシステムは人知れず"sugeeeeee"って呟くはず?

今は試せないのが残念。

雑感


/etc/servicesとxinetdは切っても切れない関係で、これはネットワークの構築で小粋なことをする際に覚えておいて損は無さそう。

以下の参考がすごい勉強になった。

参考
http://www.geocities.jp/sugachan1973/doc/funto38.html (OSSSME)






この記事へのコメント

name:

mail:

HP:

comment:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/321476190

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。