CMLのPATty - 前編: PATtyサービスの有効化 (管理者向け)
本記事では、CML (Cisco Modeling Labs)におけるPATtyサービスを管理者側で有効化するまでの手順をまとめます。
まず前提情報として、PATtyはCML 2.6で登場した機能です。
CML 2.6 Release Notes - Cisco Modeling Labs v2.6 - Cisco DevNet
https://developer.cisco.com/docs/modeling-labs/2-6/cml-release-notes/
CML 2.9からは「初期セットアップ時にPATtyサービスの有効/無効を選択」できるようになっています。(デフォルトでは無効です。)

CML 2.9の初期セットアップの画面
本記事は、CMLの管理者の目線でPATtyサービスを有効化する方法までをまとめています。
ユーザーの目線の使い方 (利活用)の観点は下記の記事を参考にしてください。
CMLのPATty - 後編: PATty機能の使い方 (ユーザー向け)
設定変更する前に
注意事項
- PATtyにデフォルトで紐付いているPortはTCPの 2000-7999 の範囲です。デフォルト値の状態で「pat:tcp:1999:22」のような範囲外の指定をすると、PATtyサービスが該当のTagを認識しません。Portの範囲を変更するには設定を編集して、サービスを再起動する必要があります。その上で「Firewalldでブロックしないように許可」もしくは「Firewalldの無効化」が必要です。
- Port Forwardingなどの仕組みを用いている都合上、複数のNodeで同じPortを重複して利用できません。
設定方法
ユーザーがPATtyを活用できるようにするには、CMLの管理者がまずPATtyのサービスの有効化を行います。また付随してFirewalldにおける通信の許可も必要です。
- 設定方法の概要
- Step 1: Cockpitへのログイン
- Step 2: PATtyの有効化
- Step 3 (任意): PATtyの設定ファイルのチューニング
- Step 4: Firewalldにおける通信許可
Step 1: Cockpitへのログイン
PATtyに関わる設定変更はCockpitから行うため、最初にログインします。CockpitはCMLのIP Addressに対して :9090 のPortにHTTPSでアクセスします。
URL https://CML-Address:9090/
デフォルト値から変更していない場合は、User nameは sysadmin です。
パスワードは初期セットアップ時に設定したものを入力します。

Cockpitのログイン画面
Step 2: PATtyの有効化
Cockpitから「CML2 PATty / virl2-patty.service」サービスの有効化が必要です。
Cockpitの左ペインより「Services」の「virl2-patty」に移動します。

PATtyの有効化 (1/2)
「CML2 PATty」とサービス名が表示されているのを確認し、トグル ボタンを操作して有効化します。

PATtyの有効化 (2/2)
Step 3 (任意): PATtyの設定ファイルのチューニング
用途に合わせて設定ファイルを適宜チューニングします。
設定ファイルを確認する必要があるため、Cockpitの左ペインより「Terminal」に移動します。

Cockpitの「Terminal」
設定変更の前に、まずは設定ファイルの中身を確認します。
cat /etc/default/patty.env
設定ファイルの編集に入る前に、代表的なチューニング要素を解説します。
チューニング要素: Serial ConsoleとVNCのTag機能の有効化
デフォルトではSerial Console (serial:)とVNC (vnc:)のTag機能がコメント アウトされて無効化されています。
#OPTS="-vnc -serial"
利用する際は OPTS のコメント アウトを解除して必要なTagを指定します。
-
serial:のTagを利用するのであれば-serialが必要です。 -
vnc:のTagを利用するのであれば-vncが必要です。
チューニング要素: Tagの認識間隔 (Tagの読み込み間隔)
pat: などのTagをPATtyが読み込んで認識する間隔は POLL で設定します。デフォルト値は 60 秒です。
Tagの設定に慣れなくて試行錯誤するようなケースでは、認識間隔が長いほど待ち時間が増えるため、必要に応じて短くします。
# poll intervall in seconds, recommended 60
POLL=60
PATty設定ファイルの編集
上述のチューニング要素の説明を踏まえて、設定変更すべきものがあればファイルを編集します。
sudo vi /etc/default/patty.env
PATtyサービスの再起動
設定ファイルを編集した場合は、設定の再読み込みにPATtyサービスの再起動が必要です。
CLIでのサービスの再起動は下記になります。
systemctl status virl2-patty.service
sudo systemctl restart virl2-patty.service
systemctl status virl2-patty.service
Step 4: Firewalldにおける通信許可
Firewalldを無効化するか、PATtyのサービスを許可する方法があります。
a) Firewalld自体の無効化
Firewalldのサービス自体を無効化してしまうのが最も手軽な方法ですが、セキュリティの強度は下がります。本番環境の場合は、後述のPATtyサービスだけ許可する方法が好ましいです。
Cockpitの左ペインより「Services」の「firewalld」に移動します。

Firewalld自体の無効化 (1/2)
「firewalld - dynamic firewall daemon」とサービス名が表示されているのを確認し、トグル ボタンを操作して無効化します。

Firewalld自体の無効化 (2/2)
b) FirewalldでPATtyサービスの許可
PATtyのサービスを許可する場合はCLIから設定を行います。
2通りの方法があります。特に強いこだわりがない場合は、「バージョン依存性なし」の手順を実施します。
CML 2.9からは「PATty向けのサービス定義のファイル」があるため、そのファイルをFirewalldに読み込ませる方法が可能になりました。その旨はPATtyの設定ファイルを cat /etc/default/patty.env で見るとコメントで書かれています。
バージョン依存性なし
「CML 2.9以前」もしくは「設定ファイルの有無に依存しにくい手順にしたい」ような場合は、Portの範囲を firewall-cmd のコマンドの引数に直接渡します。
sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --zone public --add-port=2000-7999/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all

FirewalldでPATtyサービスの許可
CML 2.9以上: PATty向けのサービス定義ファイルを読み込むパターン
CML 2.9からは「PATty向けのサービス定義のファイル」で TCP の 2000 から 7999 の範囲が許可されています。
まずはPATtyのサービス定義ファイルの内容を確認します。
sudo cat /etc/firewalld/services/patty.xml

PATtyのサービス定義ファイルの内容
PATty向けのサービス定義ファイルを読み込みます。
sudo firewall-cmd --get-services | grep patty
sudo firewall-cmd --zone=public --list-services
sudo firewall-cmd --zone=public --add-service=patty --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-services
PATtyの利用方法
ここまでの設定が完了すれば、管理者視点でのPATtyの設定は完了です。
ユーザー目線の利用方法は下記の記事を参考にしてください。
CMLのPATty - 後編: PATty機能の使い方 (ユーザー向け)
参考情報: 主要な設定ファイル
CML 2.9時点での設定ファイルの情報を参考程度に控えておきます。
PATtyの設定ファイル
PATty の設定ファイル (展開して表示)
sysadmin@cml-controller:~$ cat /etc/os-release | grep VIRL_VERSION
VIRL_VERSION="2.9.0+build.3"
sysadmin@cml-controller:~$
sysadmin@cml-controller:~$ cat /etc/default/patty.env
# CML2 / PATty options, sourced by systemd
# service unit virl2-patty.service
#
# this needs to go into /etc/default
#
# log level, use debug/info/warn/error
# recommended is warn
LEVEL="warn"
# poll intervall in seconds, recommended 60
POLL=60
# first and last port for all forwarded and opened ports
# - only ports within this range will be used by patty
# - users are encouraged to divide this range among themselves
# - the default range should be suitable for all deployments
# - firewalld has a /etc/firewalld/services/patty.xml file, whose
# port range must be edited to match this range
# - after you make change to the xml file, run firewall-cmd --reload
PORTMIN=2000
PORTMAX=7999
# additional options
#
# the below allows configuring access to devices, both serial and VNC
# - to enable either of the device types, uncomment the line
# - optionally edit it to only allow one of the two device types
# - users should configure authentication on the exposed lab nodes
# (and any ports configured for port forwarding if possible)
# - firewalld's public zone must allow the patty service as well, run:
# firewall-cmd --permanent --zone public --add-service patty
# firewall-cmd --reload
#OPTS="-vnc -serial"
sysadmin@cml-controller:~$
FirewalldのPATty向けのサービス定義ファイル
FirewalldのPATty向け設定ファイル (展開して表示)
sysadmin@cml-controller:~$ cat /etc/os-release | grep VIRL_VERSION
VIRL_VERSION="2.9.0+build.3"
sysadmin@cml-controller:~$
sysadmin@cml-controller:~$ sudo cat /etc/firewalld/services/patty.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
This service is meant to be added to the public zone if virl2-patty.service
is enabled for VNC or serial console devices. If users only use the PAT/DNAT
forwarding, then the firewall does not require this adjustment.
-->
<service>
<short>PATty</short>
<description>PAT range for Console and VNC services</description>
<port port="2000-7999" protocol="tcp"/>
</service>
sysadmin@cml-controller:~$
関連ドキュメント
PATty Tool Overview - Cisco Modeling Labs v2.9 - Cisco DevNet
https://developer.cisco.com/docs/modeling-labs/patty-tool-overview/
PATty Tool Mapping Configuration - Cisco Modeling Labs v2.9 - Cisco DevNet
https://developer.cisco.com/docs/modeling-labs/patty-tool-mapping-configuration/