暫く Cisco 製品を導入していなかったので,最近の IOS の扱いに手間取ってしまいました.設定が出来ない?のではなく,設定後の Config を TFTP サーバーへ転送しようとしてハマりましたw.
c9200l#copy startup-config tftp: Address or name of remote host []? TFTP Server IP_ADDRESS Destination filename [c9200l-confg]? !..... %Error writing tftp://IP_ADDRESS/c9200l-confg (Timed out)!
現役稼働中の 2960X や 4507 (もちろん他ベンダー製品全て)では同じサーバーへ tftp 出来ていたので IOS 17.3.4b で実装が変わったのだと推測.古い tftp サーバーが悪いのかとも思い,切り分けのため急遽 Photon 4.0 に別 tftp サーバーを立てて確認してみることにしました.
tftp サーバーの Install
tdnf でパッケージを確認すると Photon 4.0 では atftp が利用できるのでこれを使ってみます.
root@photon4 [ ~ ]# tdnf list | grep tftp atftp.x86_64 0.7.5-1.ph4 photon-updates atftp-client.x86_64 0.7.5-1.ph4 photon-updates atftp.x86_64 0.7.2-2.ph4 photon-release atftp-client.x86_64 0.7.2-2.ph4 photon-release root@photon4 [ ~ ]# tdnf install atftp Installing: atftp x86_64 0.7.5-1.ph4 photon-updates 76.84k 78689 Total installed size: 76.84k 78689 Is this ok [y/N]: y Downloading: atftp 44904 100% Testing transaction Running transaction Installing/Updating: atftp-0.7.5-1.ph4.x86_64 Created symlink /etc/systemd/system/sockets.target.wants/atftpd.socket → /usr/lib/systemd/system/atftpd.socket. Complete!
Enable にして,起動させます.
root@photon4 [ / ]# systemctl enable atftpd.socket Created symlink /etc/systemd/system/sockets.target.wants/atftpd.socket → /usr/lib/systemd/system/atftpd.socket. root@photon4 [ / ]# systemctl start atftpd.socket
Status を確認しましょう.
root@photon4 [ ~ ]# systemctl status atftpd.socket ● atftpd.socket - Tftp Server Socket Loaded: loaded (/usr/lib/systemd/system/atftpd.socket; enabled; vendor preset: enabled) Active: active (listening) since Wed 2022-04-13 03:38:48 UTC; 1min 59s ago Triggers: ● atftpd.service Listen: [::]:69 (Datagram) CGroup: /system.slice/atftpd.socket Apr 13 03:38:48 conf-repo systemd[1]: Listening on Tftp Server Socket. root@photon4 [ ~ ]# systemctl status atftpd.service ● atftpd.service - The tftp server serves files using the trivial file transfer protocol. Loaded: loaded (/usr/lib/systemd/system/atftpd.service; indirect; vendor preset: enabled) Active: inactive (dead) TriggeredBy: ● atftpd.socke
systemd はソケットへの接続をトリガーにサービスユニットを起動します.2960X などから tftp すると以下のように tftp server が起動して正しく処理されます.
root@photon4 [ ~ ]# systemctl status atftpd.service ● atftpd.service - The tftp server serves files using the trivial file transfer protocol. Loaded: loaded (/usr/lib/systemd/system/atftpd.service; indirect; vendor preset: enabled) Active: active (running) since Wed 2022-04-13 03:44:50 UTC; 1min 22s ago TriggeredBy: ● atftpd.socket Main PID: 669 (atftpd) Tasks: 1 (limit: 2382) Memory: 356.0K CGroup: /system.slice/atftpd.service └─669 /usr/sbin/atftpd --user tftp --group tftp /var/lib/tftpboot Apr 13 03:44:50 photon4 systemd[1]: Started The tftp server serves files using the trivial file transfer protocol.. Apr 13 03:44:50 photon4 atftpd[669]: Advanced Trivial FTP server started (0.7.5) Apr 13 03:44:50 photon4 atftpd[669]: Fetching from ::ffff:IP_ADDRESS_C2960X to c2960x-confg
ところが,IOS 17 系からだとタイムアウトしていまいます.
root@photon4 [ ~ ]# systemctl status atftpd.service ( 省略 ) Apr 13 03:45:41 photon4 atftpd[669]: Fetching from ::ffff:IP_ADDRESS_C9200L to c9200l-confg Apr 13 03:45:46 photon4 atftpd[669]: timeout: retrying... Apr 13 03:45:51 photon4 atftpd[669]: timeout: retrying... Apr 13 03:45:56 photon4 atftpd[669]: timeout: retrying... Apr 13 03:46:01 photon4 atftpd[669]: timeout: retrying..
TFTP のブロックサイズ
Google で検索すると IOS の TFTP ブロックサイズの Default 値は 512 と出てくるものが多かったので完全に騙されていました.IOS 17 系の Default 値はどうも 8192 に変わっているようです.
そこで,9200L で以下の通り設定変更することで漸く config 転送することが出来ました.
c9200l(config)#ip tftp blocksize 512
ただ,Default 値が大きくなったという事は,今後 tftp での転送効率を上げる前提で製品が提供されるはずなので,ブロックサイズの変更無しで tftp したくなるのが管理者の性です./etc/sysconfig/atftpd 内でブロックサイズを指定してみたりしましたが,起動するプロセスを見る限り引数が渡ってないようです.
└─669 /usr/sbin/atftpd --user tftp --group tftp /var/lib/tftpboot
しかし,よくよく考えると,そもそも Photon の MTU が小さいという事に(やっとここでw)気づきました.
root@photon4 [ / ]# ip address ( 省略 ) 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:50:56:aa:52:ed brd ff:ff:ff:ff:ff:ff ( 省略 )
ifconfig で MTU 値を大きくしたらすんなり tftp 成功( atftpd 側での設定は特に不要)!
パーマネントに jumbo frame を受けられるよう,/etc/systemd/network/10-static-en.network に以下追記しました.
[Link] MTUBytes=9000
これで新しい Catalyst 君たちに 1 行設定追加しなくて良くなりました.Default 値変更程度の情報すら満足に探せない自分の検索スキルに辟易してきたので,今日はこのくらいにしておきます(Photon 以外 VMware 製品全く関係ないし).