Linux豆知識 181

「/etc/services」ファイル

このエントリーをはてなブックマークに追加
今回は、「/etc/services」ファイルについて見ていきましょう。

/etc/servicesファイルは、TCPやUDPのポート番号と、そのポートを利用するサービス(あるいはプロトコル名)の情報を対応させるファイルです。

実際に/etc/servicesファイルの内容を見てみましょう。

--
ssh            22/tcp                          # The Secure Shell (SSH) Protocol
ssh            22/udp                          # The Secure Shell (SSH) Protocol
--

「#」以降はコメントで、無視されます。

ポート番号22は、通常はSSHプロトコルの通信で利用されます。上の記述は、TCPとUDPの22番ポートに「ssh」という名前をつけています。これにより、ユーザは「22番ポートはSSHプロトコルで利用されるのだな」と分かります。

「/etc/services」ファイルが利用される例として、たとえばnetstatコマンドを実行してみると次のように表示されます。

--
$ netstat -atu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:ssh                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:smtp                0.0.0.0:*                   LISTEN
--

ここで、「ssh」や「smtp」と表示されている部分がありますが、これは本来は「ポート番号22番」および「25番」を意味します。netstatコマンドが/etc/servicesを参照して、ポート番号からサービスの名前に変換を行っています。

netstatコマンドは-nオプションをつけて実行することで名前解決を行わなくなります。以下がその結果です。

--
$ netstat -atun
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
--

名前解決が行われなくなることで、ポート番号も/etc/servicesを参照せず、ポート番号をそのままで表示しています。

このように/etc/servicesがポート番号とサービスの紐付けをしていることは、実は以前紹介した/etc/nsswitch.confの中に書かれていますので、探してみてください。

なお、/etc/servicesファイルの内容は、IANAで管理されているポート番号とそのサービスの対応が記述されているわけですが、正式なものはWebサイトで参照できます。

○Service Name and Transport Protocol Port Number Registry
http://www.iana.org/assignments/port-numbers

ページトップへ