手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 TFTP クライアント – PXE やネットワーク機器検証で使う

TFTP は、PXE ブート、ネットワーク機器の設定バックアップ、ファームウェア転送、単純なファイル取得検証で使われる軽量なプロトコルです。認証や暗号化はなく、用途を限定して使う前提の仕組みです。

この記事では、Ubuntu 22.04 で TFTP クライアントを導入し、TFTP サーバーに対する get / put、binary mode、UDP 69 番、firewall、PXE / Autoinstall 検証時の切り分けを確認します。

関連する記事
この記事で確認すること
  • TFTP クライアントを使う場面
  • tftp-hpa の導入と基本確認
  • binary mode での get / put
  • UDP 69 番と firewall の切り分け
  • PXE / Autoinstall 検証で見るポイント
参考
書籍
参考書籍

ストーリーで覚える Linux CLI 入門

Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

TFTP クライアントを使う場面

TFTP クライアントは、TFTP サーバーが正しくファイルを配布できているかを確認するために使います。PXE では、ブートローダー、kernel、initrd、設定ファイルの取得確認に役立ちます。

用途確認すること
PXE 検証boot file や設定ファイルを取得できるか
ネットワーク機器設定ファイルを送受信できるか
firewall 確認UDP 69 番と戻り通信が通るか
AutoinstallPXE 側の配布経路と HTTP 側を分けて切り分ける

パッケージをインストールする

Ubuntu 22.04 では tftp-hpa パッケージで TFTP クライアントを導入できます。

sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tftp-hpa
tftp --version || true

TFTP サーバーへ接続できるか確認する

TFTP は TCP ではなく UDP を使います。まずサーバーの名前解決、経路、UDP 69 番の到達性を分けて確認します。

getent hosts 192.0.2.10
ip route get 192.0.2.10
nc -zvu 192.0.2.10 69 || true

binary mode でファイルを取得する

PXE やイメージファイルの確認では binary mode を使います。テキスト転送前提で扱うと、ファイル内容が壊れたように見えることがあります。

tftp 192.0.2.10 -m binary -c get pxelinux.0
ls -lh pxelinux.0
file pxelinux.0

テストファイルを送信する

TFTP サーバーが書き込みを許可している場合は、テストファイルを送信して確認できます。サーバー側で upload を許可していない構成では失敗するのが正常です。

dd if=/dev/urandom of=test.bin bs=1K count=64
tftp 192.0.2.10 -m binary -c put test.bin
rm -f test.bin

取得と送信を分けて確認する

TFTP サーバーによっては、読み取りは許可していても書き込みは禁止していることがあります。検証では get と put を別々に見ます。

tftp 192.0.2.10 -m binary -c get test.bin
ls -lh test.bin
rm -f test.bin

PXE 用ファイルを確認する

PXE では、DHCP で通知された boot file が TFTP で取得できる必要があります。TFTP クライアントから同じファイルを取得して、TFTP 側の問題か DHCP / firmware 側の問題かを切り分けます。

tftp 192.0.2.10 -m binary -c get grubx64.efi
ls -lh grubx64.efi
rm -f grubx64.efi

firewall を確認する

TFTP は UDP 69 番を使いますが、実際の転送ではサーバー側の応答ポートも関係します。ホストファイアウォールや経路制御で戻り通信が落ちると、接続できるように見えて転送が失敗します。

sudo iptables -S | grep 69 || true
sudo ip6tables -S | grep 69 || true
sudo nft list ruleset | grep 69 || true

パケットを確認する

原因が分からない場合は、クライアント側で UDP 69 番のパケットを確認します。要求が出ているか、応答が戻っているかを分けて見ます。

sudo tcpdump -ni any udp port 69

TFTP サーバー側ログと合わせて見る

TFTP はエラーが簡素なので、クライアント側だけでは原因が分かりにくいことがあります。サーバー側の tftpd-hpa や syslog と合わせて確認します。

systemctl status tftpd-hpa --no-pager
journalctl -u tftpd-hpa -n 50 --no-pager
ls -la /srv/tftp

よくある失敗

TFTP の失敗は、ファイル名、権限、転送モード、firewall、SELinux / AppArmor、TFTP root の違いで起きやすいです。まずは小さなファイルで get を確認し、次に PXE 用ファイルを確認します。

  • TFTP root 配下にファイルがない
  • ファイル名の大文字小文字が違う
  • binary mode を指定していない
  • サーバー側で upload が許可されていない
  • firewall で UDP の戻り通信が落ちている

使い終わったら削除する

検証端末に常時必要ない場合は、TFTP クライアントを削除できます。TFTP サーバーとは別パッケージなので、クライアントの削除だけではサーバー設定には影響しません。

sudo apt purge -y tftp-hpa
sudo apt autoremove -y

PXE / Autoinstall との関係

PXE / Autoinstall の検証では、TFTP は boot file の配布確認、HTTP は user-data や ISO 関連ファイルの配布確認として分けて見ると切り分けしやすくなります。

確認対象見る場所
DHCPnext-server と boot file
TFTPbootloader や grub 設定の取得
HTTPAutoinstall の user-data / meta-data
firewallUDP 69 番と戻り通信

まとめ

Ubuntu 22.04 の TFTP クライアントは、PXE やネットワーク機器検証で TFTP サーバーの配布状態を確認するための道具です。認証や暗号化のないプロトコルなので、公開範囲を限定し、検証用途として扱います。

確認では、tftp-hpa の導入、binary mode、get / put、UDP 69 番、firewall、サーバー側ログを順番に見ます。PXE / Autoinstall では、TFTP と HTTP の役割を分けると問題箇所を見つけやすくなります。

関連する記事
Ubuntu 22.04 TFTP クライアント – PXE やネットワーク機器検証で使う

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る