本文へ移動

インフラ転職コンパス難しいインフラ技術を動画と図解で解説

メニュー

IPプロトコル番号とは?一覧とポート番号との違い・ACLでの指定

IPプロトコル番号は、IPヘッダーの中で「この先に入っているのは何のプロトコルか」を示す8ビットの数値です。IPv4ではProtocolフィールド、IPv6ではNext Headerフィールドが該当します。

TCPが6、UDPが17、ICMPが1、GREが47。よく混同されますが、これはポート番号とは別の層の話で、ポート番号を持たないプロトコルもプロトコル番号は持っています。ACLやキャプチャで「443を許可したのに通らない」と詰まる原因の多くはここです。

この記事で分かること

  • IPプロトコル番号がヘッダーのどこにあるか(IPv4とIPv6)
  • 実務で出てくる代表的な番号の一覧(IANA登録値)
  • ポート番号との違いと、ポート番号を持たないプロトコル
  • ACLとWiresharkでの指定の仕方

このページはネットワークエンジニア転職完全ガイドの関連テーマです。担当工程の全体像を先に確認する場合はそちらへ。

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つの条件

  1. ポート番号だけで書く:「443」とだけ記すとTCP/443とUDP/443を区別できません。QUICを使う場合などは、実際のプロトコルと方向を別行で確認します。
  2. IPsecを一律にESP/50とする:直接ESPかNAT-TのUDP/4500かで、外側から見えるヘッダーが異なります。パケットキャプチャと対象装置の設定で方式を確かめます。
  3. 往路だけ許可する: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 で確認してください。

最近の記事
ピックアップ