/etc/protocolsでLinuxのプロトコル番号を確認する方法|IPヘッダーの仕組みと活用例

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ネットワーク > /etc/protocolsでLinuxのプロトコル番号を確認する方法|IPヘッダーの仕組みと活用例
ファイアウォールの設定やパケットキャプチャの分析をしていると「プロトコル番号6ってなんだ?」という場面に出くわすことがあります。

Linuxでは、プロトコル名とプロトコル番号の対応表を /etc/protocols ファイルで管理しています。このファイルを参照することで、プロトコル番号を素早く調べることができます。

【この記事でわかること】
・/etc/protocolsファイルにプロトコル名とプロトコル番号の対応表が記載されている
・TCP=6、UDP=17、ICMP=1など主要プロトコルの番号を確認できる
・ファイアウォールやパケット解析の際にプロトコル番号の理解が役立つ
・通常は編集不要だが、moreやcatで参照してプロトコル番号を調べられる

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

/etc/protocolsファイルとは

IPネットワークでデータを送信するとき、パケットには「IPヘッダー」と呼ばれる制御情報が付加されます。このIPヘッダーの中に「プロトコル番号」フィールドがあり、TCPやUDPなどどのプロトコルを使っているかを示しています。

/etc/protocols は、IANA(Internet Assigned Numbers Authority)が管理するプロトコル番号の対応表をLinux上で参照するためのファイルです。

基本的な使い方

1. /etc/protocolsの内容を確認する

[root@Tiger ~]# more /etc/protocols # /etc/protocols: # Internet (IP) protocols # Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992). ip 0 IP # internet protocol, pseudo protocol number hopopt 0 HOPOPT # hop-by-hop options for ipv6 icmp 1 ICMP # internet control message protocol igmp 2 IGMP # internet group management protocol tcp 6 TCP # transmission control protocol udp 17 UDP # user datagram protocol ipv6 41 IPv6 # IPv6 gre 47 GRE # generic routing encapsulation esp 50 ENCAP # encapsulation header ah 51 AH # authentication header

各行の書式は「プロトコル名 番号 別名 # コメント」です。

2. grepで特定プロトコルを素早く調べる

# TCPのプロトコル番号を確認する [root@Tiger ~]# grep "^tcp" /etc/protocols tcp 6 TCP # transmission control protocol # UDPのプロトコル番号を確認する [root@Tiger ~]# grep "^udp" /etc/protocols udp 17 UDP # user datagram protocol # ICMPのプロトコル番号を確認する [root@Tiger ~]# grep "^icmp" /etc/protocols icmp 1 ICMP # internet control message protocol

主要なプロトコル番号の一覧

よく使われる主要なプロトコルとその番号は以下のとおりです。

0:IP(インターネットプロトコル)
1:ICMP(インターネット制御メッセージプロトコル)
2:IGMP(インターネットグループ管理プロトコル)
6:TCP(伝送制御プロトコル)
17:UDP(ユーザーデータグラムプロトコル)
41:IPv6(IPv6カプセル化)
47:GRE(汎用ルーティングカプセル化)
50:ESP(IPsec暗号化ペイロード)
89:OSPF(OSPFルーティングプロトコル)

応用・ファイアウォール設定での活用

iptablesやfirewall-cmdでプロトコルを指定する際にプロトコル番号が使えます。

# GRE(プロトコル番号47)を許可するルールを追加する例 # iptables -A INPUT -p 47 -j ACCEPT # または名前指定でも可 # iptables -A INPUT -p gre -j ACCEPT

本記事のまとめ

/etc/protocols:プロトコル名とプロトコル番号の対応表
more /etc/protocols または cat /etc/protocols で内容を確認できる
grep "^tcp" /etc/protocols で特定プロトコルの番号を素早く調べられる
・主要なプロトコル番号:ICMP=1、TCP=6、UDP=17
・通常はファイルを編集する必要はない

Linuxネットワークの基礎を体系的に学びたい方へ

プロトコル番号の理解はファイアウォール設定やパケット解析の基本知識です。Linuxネットワーク管理を体系的に身につけると、現場での応用範囲が大きく広がります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。