IPプロトコル番号は、IPヘッダーの中で「この先に入っているのは何のプロトコルか」を示す8ビットの数値です。IPv4ではProtocolフィールド、IPv6ではNext Headerフィールドが該当します。
TCPが6、UDPが17、ICMPが1、GREが47。よく混同されますが、これはポート番号とは別の層の話で、ポート番号を持たないプロトコルもプロトコル番号は持っています。ACLやキャプチャで「443を許可したのに通らない」と詰まる原因の多くはここです。
このページはネットワークエンジニア転職完全ガイドの関連テーマです。担当工程の全体像を先に確認する場合はそちらへ。
IPプロトコル番号はヘッダーのどこにある?
| バージョン | フィールド名 | サイズ | 役割 |
|---|---|---|---|
| IPv4 | Protocol | 8ビット | ペイロードに入っている上位プロトコルを示す |
| IPv6 | Next Header | 8ビット | 次に続くヘッダー(拡張ヘッダーまたは上位プロトコル)を示す |
IPv6のNext Headerは、拡張ヘッダーが連なる場合に「次は何か」を順番に指し示します。最後のヘッダーに入っている値が、IPv4のProtocolフィールドと同じ意味になります。番号の体系は共通で、IANAの同じレジストリが正本です。
実務で出てくるプロトコル番号一覧
IANAのProtocol Numbersレジストリから、設計・構築・障害対応で実際に目にするものを抜き出しました。
| 番号 | キーワード | プロトコル | どこで出てくるか |
|---|---|---|---|
| 1 | ICMP | Internet Control Message | ping、traceroute、Path MTU Discovery |
| 2 | IGMP | Internet Group Management | マルチキャストの参加・離脱 |
| 4 | IPv4 | IPv4 encapsulation | IPv4 over IPv4トンネル |
| 6 | TCP | Transmission Control | HTTP/HTTPS、SSH、SMTPなど大半の業務通信 |
| 17 | UDP | User Datagram | DNS、DHCP、SNMP、Syslog、NTP |
| 41 | IPv6 | IPv6 encapsulation | 6in4トンネル |
| 47 | GRE | Generic Routing Encapsulation | 拠点間トンネル、DMVPN |
| 50 | ESP | Encap Security Payload | IPsec VPNの暗号化データ |
| 51 | AH | Authentication Header | IPsecの認証のみの構成 |
| 58 | IPv6-ICMP | ICMP for IPv6 | IPv6のping、近隣探索(NDP) |
| 88 | EIGRP | EIGRP | Ciscoのルーティングプロトコル |
| 89 | OSPFIGP | OSPFIGP | OSPFの隣接確立とLSA交換 |
| 103 | PIM | Protocol Independent Multicast | マルチキャストの経路制御 |
| 112 | VRRP | Virtual Router Redundancy Protocol | デフォルトゲートウェイの冗長化 |
| 115 | L2TP | Layer Two Tunneling Protocol | リモートアクセスVPN |
| 132 | SCTP | Stream Control Transmission Protocol | 通信事業者系のシグナリング |
出典:Protocol Numbers(IANA)(2026年8月確認)
ポート番号とは層が違う
| IPプロトコル番号 | ポート番号 | |
|---|---|---|
| どのヘッダーにあるか | IPヘッダー | TCPヘッダー/UDPヘッダー |
| ビット数 | 8ビット(0〜255) | 16ビット(0〜65535) |
| 何を識別するか | 上位プロトコルの種類 | そのホスト上のアプリケーション |
| 持たないものがあるか | すべてのIPパケットが持つ | ICMPやOSPFなどは持たない |
| 例 | TCP=6、UDP=17、GRE=47 | HTTPS=TCP/443またはUDP/443、SSH=TCP/22、DNS=UDP/TCP 53 |
「HTTPSは443」という言い方は、正確にはプロトコル番号6(TCP)の宛先ポート443という2段階の指定です。片方だけでは通信を特定できません。
ポート番号そのものの説明はポート番号とは?TCP・UDPとの関係と代表的な番号一覧にまとめています。
ポート番号を持たないプロトコルとIPsecの例外
ICMP(1)、GRE(47)、ESP(50)、OSPF(89)、VRRP(112)は、TCP/UDPヘッダーを持たないためTCP/UDPポート番号では指定できません。IPパケットのProtocol値で識別します。番号はIANAのProtocol Numbers登録表で確認できます。
IPsecは外側のパケットを確認してください。ESPを直接流す構成なら、外側のIPv4 Protocolは50で、FW/ACLはESPを許可する必要があります。一方、NAT-Tを使う構成ではESPがUDP/4500に包まれ、外側のProtocolは17(UDP)になります。「IPsecなら必ずESP番号50を別に許可」とは言えません。
| 通信の例 | 外側のIP Protocol | ポート | FW/ACLで見る対象 |
|---|---|---|---|
| ESPを直接転送 | 50 | なし | ESPと送受信IP |
| ESPをNAT-Tでカプセル化 | 17(UDP) | 通常UDP/4500 | 外側のUDPと送受信IP |
| GRE | 47 | なし | GREと送受信IP |
NAT-Tのカプセル化はRFC 3948に定義されています。IKEに必要な通信、実データの方式、装置上のACL評価位置は製品・構成ごとに確認します。
ACLでの指定の仕方
Cisco IOSでは、キーワードでも数値でも指定できます。
! キーワードで指定
Router(config)# ip access-list extended VPN-IN
Router(config-ext-nacl)# permit esp host 203.0.113.10 host 198.51.100.20
Router(config-ext-nacl)# permit udp host 203.0.113.10 host 198.51.100.20 eq 500
Router(config-ext-nacl)# permit gre host 203.0.113.10 host 198.51.100.20
! 番号で指定(キーワードのないプロトコル)
Router(config-ext-nacl)# permit 112 any 224.0.0.18
Router(config-ext-nacl)# permit tcp any host 198.51.100.30 eq 443
permit esp と permit 50 は同じ意味です。キーワードが用意されていないプロトコルは数値で書きます。設計書側も、要件表に「ESP(50)」のように番号を併記しておくと、レビューで取り違えが起きません。
拡張ACLの書き方は拡張ACLはL3・L4をどう見る?で扱っています。
Wiresharkで絞り込む
| やりたいこと | 表示フィルター |
|---|---|
| GREだけ見る | ip.proto == 47 |
| ESPだけ見る | ip.proto == 50 |
| TCP以外を見る | ip.proto != 6 |
| IPv6の直後に続くヘッダーで絞る | ipv6.nxt == 58 |
| HTTPSを見る | tcp.port == 443 |
「通信が来ていない」と報告する前に、ip.proto で絞ってそもそもどのプロトコルで届いているかを確認します。ポート番号のフィルターだけを使っていると、ESPやGREで届いているパケットは表示されません。
ACL設計で間違えやすい3つの条件
- ポート番号だけで書く:「443」とだけ記すとTCP/443とUDP/443を区別できません。QUICを使う場合などは、実際のプロトコルと方向を別行で確認します。
- IPsecを一律にESP/50とする:直接ESPかNAT-TのUDP/4500かで、外側から見えるヘッダーが異なります。パケットキャプチャと対象装置の設定で方式を確かめます。
- 往路だけ許可する:FWがステートフルか、戻り通信が同じ経路を通るかを確認します。非対称経路では、片側の許可設定だけで成立しないことがあります。
通信要件表には「送信元IP、宛先IP、IPプロトコル、TCP/UDPなら送信元・宛先ポート、方向、戻り経路」を分けて記録します。番号の暗記だけでなく、観測する装置の位置から見える外側のヘッダーを確認することが大切です。
関連する記事
まとめ
IPプロトコル番号は、IPv4のProtocolフィールドとIPv6のNext Headerに入る8ビットの値で、上位プロトコルの種類を示します。TCPが6、UDPが17、ICMPが1、GREが47、ESPが50、OSPFが89です。ポート番号はTCP/UDPヘッダーにある別の層の識別子なので、ICMPや直接転送するESPはIPプロトコル番号で指定し、ESPがNAT-Tで包まれる場合は外側のUDP/4500を確認します。要件表とACLは「プロトコル番号・ポート番号・方向」の3点で書き、Wiresharkでも ip.proto で確認してください。
