Linux豆知識 181
「/etc/services」ファイル
公開日:2015年08月20日
今回は、「/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
今回のテーマを含む出題範囲を見てみる
LinuCレベル2 | :202試験 | :2.12.1 iptabelsやfirewalldによるパケットフィルタリング |