FITELnet FシリーズのコンテナにてPythonスクリプトを実行して、ZTP(ゼロタッチプロビジョニング)を行う方法をご説明します。
あらかじめキッティングセンタ等でFITELnetルータに全拠点で共通の起動用configをインストール、かつ全拠点から接続可能なサーバにルータ個別の運用configを保存しておくことで、現地作業としてはルータの回線接続と電源ONのみを行うだけで(コマンド入力不要)、運用開始できる方法です。
本ページのZTPは、あくまでZTPのやり方の一例です。本ページと構成や回線が異なる場合でも「全拠点で共通の起動用config」を設定可能かつ「全拠点から接続可能なサーバ」がございましたら、本ページのやり方を一部変更することで、ZTP可能と考えております。ご希望されるお客様は、弊社までご相談ください。

本ページの設定例は、F70/F71/F220/F221/F225/F310/F220 EX/F221 EXに対応しています。
本ページのZTPを行う場合の前提条件・注意点
前提条件
・ルータ:FITELnet F70/F71/F220/F221/F225/F310/F220 EX/F221 EX
・ファームウェアバージョン:
F70/F71 V01.08(00)以降、F220/F221 V01.10(00)以降
F225とF310は初版よりお使いいただけます。
・拠点は、IPoE(MAP-E)もしくはDHCPv4でIPアドレスを取得後、インターネット経由でZTPサーバ(運用config取得先)にアクセスできること。
・キッティングセンターは、インターネットにアクセスできること。
注意点
・ZTPサーバはお客様にてご用意ください。
・以下の手順にて、Alpine Linuxのイメージファイルは、3.20_20240704以降をご利用いただく前提の手順となります。前記よりも古いイメージファイルのご利用が必要な場合は、弊社にお問い合わせください。
準備(ZTPサーバに運用configを格納)
ZTPサーバを用意して、運用configを格納してください。
・ZTPサーバは、お客様の拠点からインターネット経由でHTTPSでアクセス可能なサーバをご用意ください。
・運用configのファイル名は、<機器のシリアル番号(8桁)>.cfg としてください。
・以下のように、機種名ごとのディレクトリをつくって格納してください。
/<ファイルパス>/<機種名>/<機器のシリアル番号>.cfg
※<ファイルパス>は、HTTPSアクセス可能なディレクトリを指定してください。
※<機種名>は 2. Pythonスクリプトのパラメータ設定 にてZTPスクリプトに入力する★機種名の文字列と合わせてください。
・上記ディレクトリに、アクセス制限(BASIC認証のID/パスワード)を設定してください。
準備(ルータ装置のセットアップ)
1. インターネット接続のための環境構築
FITELnetのCLIにて、以下の起動configの設定を行ってください。
・「telnet-server no-shutdown」設定は、コンテナ環境からTELNETを行うために、FITELnet F225/F310のみで必要な設定です。F225/F310以外では設定入力時にエラーしますが、デフォルトでTELNETサーバ動作は有効なので、問題ございません。
・LANネットワークの設定については、お客様環境に応じて適宜変更ください。
・「event-action の action 2.0」で指定するスクリプトのディレクトリは、3.コンテナのセットアップ-4)でスクリプトを置くディレクトリです。ここでは、/home/furukawa/ztp.py としています。
・「ipinip tunnel-profile MAPCE」モードは、JPIX(v6プラス)、ビッグローブ(IPv6オプション)、NTTコミュニケーションズ(OCNバーチャルコネクト)のいずれのMAP-Eサービスにおいても接続可能な設定としております。MAP-Eサービスの設定解説はIPoEの設定にございますので、ご参照ください。
設定例(抜粋) |
---|
container enable ! container configuration dns 192.168.1.1 ★コンテナが問い合わせるDNSサーバ(ルータOSのLANインタフェースのIPアドレス) ! interface 1 bridge-group 1 ★ルータOS側のLANインタフェースのブリッジグループ番号 ip address 192.168.1.2 255.255.255.0 ★コンテナのIPアドレス ip gateway 192.168.1.1 ★ルータOS側のLANインタフェースのIPアドレス exit ! exit ! (中略) ip route 0.0.0.0 0.0.0.0 tunnel 1 100 ★IPoE(MAP-E)環境で使用する場合のデフォルトルート ip route 0.0.0.0 0.0.0.0 dhcp port-channel 2 10★DHCP環境で使用する場合のデフォルトルート ! username test password test ★Pythonスクリプトで指定するルータOSのログインID/パスワードを設定 ! interface GigaEthernet 1/1 vlan-id 1 bridge-group 1 channel-group 1 container-use ★ルータOS側のLANインタフェースにcontainer-useを設定 exit ! (中略) interface Port-channel 1 ip address 192.168.1.1 255.255.255.0 ★LANインタフェースのIPアドレス link-state always-up ★コンテナに常にアクセスできるようにリンクを上げておく exit (中略) syslog filter boot_completion ★syslog filterを定義("first refresh completed") message first refresh completed exit ! event-action 1 retry 60 interval 1 event-condition match-all ★全てのeventにmatchした場合にactionを実行 event syslog filter boot_completion ★event: syslog filterで定義したsyslog出力 event ping 8.8.8.8 timeout 10 ★event: ping(8.8.8.8宛)疎通 action 1.0 wait time 10 action 2.0 cli exec command container exec python3 /home/furukawa/ztp.py ★action: Pythonスクリプト(/home/furukawa/ztp.py)を実行 exit ! ipinip tunnel-profile MAPCE profile-mode map-encap option-auto ★環境に合わせて、option-a,b,cのいずれかを選択するための設定 map rule-get map option option-a 240b::/26 ★240b::/26の範囲のIPv6アドレスを取得した場合は、option-a動作(JPIX社 v6プラスに対応) map option option-a 240b:240::/26 ★240b:240::/26の範囲のIPv6アドレスを取得した場合は、option-a動作(JPIX社 v6プラスに対応) map option option-b 2404:7a80::/29 ★2404:7a80::/29の範囲のIPv6アドレスを取得した場合は、option-b動作(ビッグローブ社 IPv6オプションに対応) map option option-c 2400:4000::/22 ★2400:4000::/22の範囲のIPv6アドレスを取得した場合は、option-c動作(NTTコミュニケーションズ社 OCNバーチャルコネクトサービス(IPoE)に対応) ipinip fragment pre exit ! logging filter 1 boot_completion event-action ★syslog filterをevent-actionにて利用するための設定 |
詳細は下記資料の「コンテナ環境のネットワーク設定」の章をご参照ください。
2. Pythonスクリプトのパラメータ設定
以下のPythonスクリプトをダウンロードしてください。
最初の方にある #### setting common の以下の箇所を、お客様の環境に合わせて入力、保存してください。
#### setting common device_name = "f220" ★機種名(ZTPサーバの機種毎のディレクトリ名):f220 cli_address = "192.168.1.1" ★ルータOSのLANインタフェースのIPアドレス(コンテナがルータOSにアクセスするときのアクセス先IPアドレス):192.168.1.1 login_name = "test" ★ルータOSのログインID:test login_pass = "test" ★ルータOSログイン時のパスワード:test enable_pass = "" ★ルータOSのenableパスワード:(左記はパスワードなしの場合) prompt = "F220_.*[>#]" ★ルータOSのプロンプト:(左記は先頭5文字が"F220_"の場合) server_address = "www.example.com" ★ZTPサーバのFQDNもしくはIPアドレス:www.example.com user_name = "testz" ★ZTPサーバ(BASIC認証)のユーザID:testz user_password = "testz" ★ZTPサーバ(BASIC認証)のパスワード:testz config_path = "xxx/yyy/zzz" ★ZTPサーバ(BASIC認証)のconfig保管ディレクリのパス(先頭と末尾の"/"は不要):xxx/yyy/zzz ※以上の設定の場合、configダウンロードのためのZTPサーバのアクセス先URLは、「https://www.example.com/xxx/yyy/zzz/f220/<機器のシリアル番号>.cfg」となります(機器のシリアル番号は本スクリプトにて自動取得)。 |
3. コンテナのセットアップ
1) ルータ装置にて、container attach を実行してコンテナ環境に移行。もしくはLAN側の端末から、以下のようにSSHログインしてsuモード(プロンプト"#")に移行してください。
$ ssh operator@192.168.1.2 furukawa@192.168.1.2's password: Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See You can setup the system with the command: setup-alpine You may change this message by editing /etc/motd. container:~$ sudo su [sudo] password for operator: ★デフォルトのパスワード "fitelnet-container" を入力 /home/operator # |
2) コンテナ環境にて以下のコマンドを実行して、必要なアプリケーションをインストール(インターネット経由でアプリをダウンロードします)。
以下のように、「OK」の表示が出ればインストール完了です。
~ # apk add py3-pexpect (..中略..) OK: 316 MiB in 131 packages ~ # apk add busybox-extras (..中略..) OK: 316 MiB in 132 packages ~ # |
3) コンテナにアクセスするためのユーザ登録(デフォルトユーザ(operator)からの変更を推奨します)。例として"furukawa"というユーザを登録します。
~ # useradd -m furukawa ~ # passwd furukawa New password: ★設定したいパスワードを入力 Retype new password: ★設定したいパスワードを再入力 passwd: password updated successfully ~ # |
4) コンテナにSFTP接続を行い、ZTPスクリプトを置く:お使いの端末に合わせて操作を行ってください。
$ sftp furukawa@192.168.1.2 furukawa@192.168.1.2's password: Connected to 192.168.1.2. sftp> pwd Remote working directory: /home/furukawa sftp> ls sftp> put ztp.py Uploading ztp.py to /home/furukawa/ztp.py ztp.py 100% 5061 4.9KB/s 00:00 sftp> ls ztp.py sftp> quit $ |
5) コンテナのデフォルトユーザ(operator)を削除:ルータのCLIから container attach して実行してください。
~ # userdel operator ~ # exit |
4. 起動configをZTP用起動config(pre-config)として格納
ルータのCLIにて以下を実行してください。1. インターネット接続のための環境構築で設定したconfigがZTPの起動configとしてセットされます。
# save /drive/pre_config/pre-config.cfg ★動作中のconfigが、初回起動時のみ読み込まれるpre-configとしてセットされます。 # clear pre-config status ★Pre-config statusがenableとなります。 |
5. 電源OFF
ルータのCLIにて、container stop を実行して、コンテナを停止させてください。プロンプトが戻った後、装置電源OFFすれば、ルータ装置のセットアップは完了です。
運用
お客様拠点にて回線接続して、装置電源ONを行えば、運用開始できます。
