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スクリプトをダウンロードしてください。

ZTP用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を行えば、運用開始できます。