TFTPを使用してネットワークスイッチからubuntu(Windows 10 ProのVirtualBox)にファイルを送受信しようとすると、エラーコード5が表示されます。
以下の手順を実行すると、私のローカルホストはTFTPサーバーを使用しているように見え、自分のローカルホストを使用してファイルを送受信できます。
/home/abc# tftp localhost
tftp> put test
Sent 16 bytes in 0.0 seconds
tftp> get test
Received 16 bytes in 0.0 seconds
root@abc:/home/abc# ls -l /var/lib/tftpboot/
total 4
-rwxrwxrwx 1 root root 14 Sep 6 18:03 test
スイッチでコマンドを使用してファイルを送受信すると、エラーメッセージが表示されます。
簡単なファイル転送プロトコル
Opcode: エラーコード(5)
[対象ファイル:テスト]
エラーコード:アクセス違反(2)
エラーメッセージ:アクセス違反
[専門家情報(警告/対応):TFTP ERRORパケット]
[TFTPエラーパケット]
[重大度:警告]
[グループ:回答]
この問題を解決する方法を教えてください。
https://icesquare.com/wordpress/how-to-setup-tftp-on-ubuntu/
まず、必要なすべてのパッケージをインストールしてみましょう。
sudo apt-get install xinetd tftpd tftp -y
次に、構成ファイルを生成する必要があります。
sudo nano /etc/xinetd.d/tftp
ファイルに次の内容を入れます。
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = var/lib/tftpboot -s
disable = no
}
server_argsには、tftpルートディレクトリである/var/lib/tftpbootの場所を示すvar/lib/tftpbootがあります。ルートディレクトリ/をスキップしました。
それでは、ディレクトリの所有権を変更してみましょう。
sudo mkdir /var/lib/tftpboot
sudo chown -R nobody:nobody /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
TFTPサービスを開始します。
sudo service xinetd stop
sudo service xinetd start
TFTPが正しく機能していることを確認してください。
netstat -na | grep LIST | grep 69
You should see something like this:
tcp 0 0 0.0.0.0:69 0.0.0.0:* LISTEN
テスト:TFTPサーバーへのファイルのアップロードサーバーにログインしてTFTPサーバーをテストしましょう。
tftp localhostとファイルのアップロード:
tftp> put myfile.jpg
Sent 56733279 bytes in 5.7 seconds
Quit:
q
ファイルがアップロードされたことを確認してください。
ls -l /var/lib/tftpboot
テスト:TFTPサーバーからファイルをダウンロードする今、別のディレクトリに移動して、アップロードしたばかりのファイルをダウンロードしてみましょう。
cd some_other_directory
tftpサーバーに再度ログインします。
tftp localhost
ファイルをインポートします。
tftp> get myfile.jpg
Received 56733279 bytes in 5.7 seconds
答え1
問題は、スイッチネットワークIPとUbuntuシステムIPアドレスが異なるネットワークにあることです。私のUbuntuコンピュータに固定IPアドレス(スイッチIPと同じネットワークIP)を設定して問題を解決しました。