この記事は SORACOM Advent Calendar 2025 シリーズ 2 の 22 日目の記事です。
SIM を使ってネットワークに接続すると、セッション作成時に自身の IP アドレスや DNS サーバの IP アドレスが自動的に設定されます。これまではそういうものとしてあまり深く考えてこなかったのですが、裏側ではどのようなやり取りが行われているのか調べてみました。
また、 QCSuper というツールを使って、実際の挙動を確認した結果も共有します。
PCO とは?
PC などのネットワーク設定では IP アドレスの割り当てに DHCP を使うことが多いですが、LTE/5G などのセルラー通信では少し異なります。
SIM が入ったデバイスが通信キャリアのコアネットワークに接続をリクエストする際のやり取りの中で PCO (Protocol Configuration Options) という情報要素が使われます。
PCO はネットワークからデバイスへ、IP アドレスの割り当て方式、DNS サーバのアドレスなどの構成情報を通知するために使用されます。
QCSuper とは?
この PCO のやり取りは、デバイスとネットワーク間の制御信号の中にあります。そのため、tcpdump などではそのやりとりを確認することはできません。
そこで以前同僚に教えてもらった QCSuper というツールを使うことにしました。QCSuper は Qualcomm チップセットを搭載したモデムから、USB 経由で直接 NAS(Non-Access Stratum)や RRC(Radio Resource Control)といったディープなレイヤーのログを取得し、PCAP 形式に変換してくれるツールです。
なお、QCSuper を利用するにはデバッグ(Qualcomm DM)ポートが解放されている必要がありますが、後述する SORACOM Onyx では利用できます。
利用手順
今回は以下の組み合わせで検証を行いました。
- Raspberry Pi 4 (bookworm)
- Soracom Onyx – LTE™ USB ドングル (SC-QGLC4-C1) (以降、Soracom Onyx)
- SORACOM IoT SIM (planX3)
なお、上記を利用した SORACOM Air for セルラーのセットアップ手順は以下を参照ください。
QCSuper を利用する
先ずはインストールから。
sudo apt install python3-pip pipx
pipx ensurepath
pipx install qcsuper
pipx inject qcsuper pyserial pyusb crcmod pycrate
ここで、SIM のセッションを作成して該当の SIM がオンライン状態であることを確認してください。
以下のコマンドを実行すると test.pcap へのパケットキャプチャ結果の記録が開始されます。
sudo qcsuper --usb-modem /dev/ttyUSB0 --pcap test.pcap --decrypt-nas
この状態で セッションを再確立 します。
NAS メッセージの中身を見てみる
取得できた test.pcap を Wireshark で開いてみます。今回は NAS メッセージを確認することが目的なので、nas-eps でフィルタします。
一度ネットワークから切断 (Detach) された後に再度接続処理 (Attach) が開始されていることが分かります。更に、その後にある Attach accept, Activate default EPS bearer context requestというメッセージの中の Protocol Configuration Options フィールド (※) を展開すると、以下のように SIM の IP アドレスや DNS サーバの IP アドレスの情報が確認できました。
※ Non-Access-Stratum (NAS)PDU → ESM message container → ESM message container contents → Protocol Configuration Options
カスタム DNS を設定した場合
SORACOM のカスタム DNS を設定した際の挙動も確認してみましょう。
IoT SIM のカスタム DNS を設定する の手順で SORACOM ユーザコンソールから任意の DNS サーバを指定します。
その後、セッションを再確立すると、PCO 内の DNS サーバ情報が指定した IP アドレスに書き換わって広告されていることを確認できました。
このカスタム DNS の機能により、デバイス側で明示的に DNS を指定せずとも、ネットワーク側の設定変更だけでデバイスの DNS サーバの情報をコントロールできます。今回は QCSuper を使うことで実際にカスタム DNS に設定した IP アドレスが通知されていることを確認できました。
まとめ
普段「自動で設定されるもの」として使っている IP アドレスですが、QCSuper を使うことで、実際に目で見て確認することができました。
セルラー網の挙動を深掘りしたい方や、低レイヤーのトラブルシューティングが必要な方にはとてもオススメです。



