🌐

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はTCP2000-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向けのサービス定義のファイル」で TCP2000 から 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/

株式会社プログデンス
設定によりコメント欄が無効化されています