🌐

CMLのPATty - 後編: PATty機能の使い方 (ユーザー向け)

に公開

CML (Cisco Modeling Lab)においてPATtyと呼ばれる機能を用いると、作業端末からNodeに対する作業が行いやすくなるケースがあります。

例えば、External Connector (NAT)を利用していると、「CMLの外部 (作業端末)」から「CML内部のNode」への接続性がありませんが、PATtyを用いるとPort Forwardingの技術を用いてNodeのサービス (例: SSH, Web UI)に接続を可能にします。また、CMLがSerial Console Serverのように動作して、使い慣れたターミナルからTelnetでNodeのSerial Consoleへの接続が可能になります。

PATtyの利用には設定の変更が必要です。本記事はユーザーの目線の利用方法にフォーカスしています。

管理者の目線から見たPATtyサービスの有効化は下記の記事を参考にしてください。

CMLのPATty - 前編: PATtyサービスの有効化 (管理者向け)

PATtyの主な特徴

  • 「Nodeのサービス (例: SSH Server)」に外部からTCPやUDPで接続できます。
  • 「NodeのSerial Console」にネットワーク経由 (Telnet)で接続できます。
  • 「Desktop NodeのVNC画面」を外部からVNC Client (例: RealVNC Viewer)を用いて接続できます。

仕組み

CMLのIP Addressに対して、特定のPortにSerial ConsoleやNodeのサービス (例: SSHの22/tcp)などを紐付けます。そのため、ユーザーの目線では「接続先がCMLのIP AddressとPort」になります。


PATtyの利用イメージ

利用する前に


共用環境での「CMLの待ち受けPort」の重複

Tagの種別

3種類のTagがあり、CMLの外部から接続したいNodeにTagを設定します。

  1. pat:
  2. serial:
  3. vnc:

代表的なTagの書式は下記の通りです。

pat:outsideport:insideport
pat:tcp:outsideport:insideport
pat:udp:outsideport:insideport

serial:outsideport

vnc:outsideport

  • outsideport」は「CMLのPATty向けのPort」を指定します。

  • insideport」は「対象Nodeのサービス (Port)」を指定します。


PATtyのTagの書式

「pat:」のTag

pat:」は、Port Forwarding (DNAT: Destination NAT)の技術を用いて、「CML側のPort」と「Node側のサービス (例: SSH)」をマッピングするためのTagです。

まず前提条件として、External ConnectorがNATになっている必要があります。


「pat:」のTagを利用時のExternal Connectの設定

その上で更にNodeのIP Addressを自動的に学習してPort Forwardingを行う仕組みの都合上、External Connector (NAT)と同一セグメント上にNodeが存在する必要があります。


「pat:」のTagとExternal Connector (NAT)の関係性

例としてNode: UbuntuのSSH (22/tcp)のサービスに接続したい場合は、「pat:tcp:2022:22」のように設定すると、CMLのIP Addressに対しては「2022」のPortで接続すれば、Node: Ubuntuの「22」に転送 (Port Forwarding)されます。


「pat:」のTag設定

「serial:」のTag

NodeのSerial ConsoleにTelnetで接続できます。言わば、Serial Console Serverの動作に似ています。
CMLの対象Portに対してはTelnetで接続します。

pat: と異なり、External Connector (NAT)と同一セグメントである必要はありません。


「serial:」のTagの設定と利用方法

Tera TermのようなGUIのターミナル ソフトでは、デフォルトの通信方式がSSHのケースがあるため、Telnetに切り替えを忘れないように注意が必要です。

「vnc:」のTag

主に「DesktopのNodeのVNC画面」をCMLの外部から「作業端末のVNC Client (例: RealVNC Viewer)」で接続できます。

pat: と異なり、External Connector (NAT)と同一セグメントである必要はありません。


「vnc:」のTagの設定と利用方法

Tagで指定可能なPortの範囲

PATtyがデフォルトで認識するPortは TCP2000 から 7999 の範囲です。


Tagで指定可能なPortの範囲

Portの範囲を変更するにはCMLのシステム的な設定変更が必要になるため、管理者に相談が必要になります。

Tagに紐付くPortの割り当て方

「Tagに紐付けるPortの割り当て」に迷うかもしれませんが、ドキュメントに割り当て方法の一例が載っております。

PATty Tool Overview - Cisco Modeling Labs v2.9 - Cisco DevNet
https://developer.cisco.com/docs/modeling-labs/patty-tool-overview/

This example also illustrates that using dedicated port ranges can be beneficial, this example suggests the following offsets from 2000:

  • 0-99: used for consoles, for serial device access

  • 200-299: used for SSH

  • 300-399: used for NETCONF

  • 800-899: TCP/80 HTTP (unused in the example, as PAT)

  • 900-999: TCP/5900 VNC (unused in the example, as device access)

The first digit identifies the overall range (here 2000-2999), the second digit is the “service” (console, SSH, VNC, HTTP, …) and the 3rd/4th digit is the node number inside of the lab (like R1-R99 or similar).

ドキュメントでは「2000」を基軸にしたオフセットとして紹介されていますが、実際のPortで表記すると下記の表のようになります。

CMLのPort Nodeの用途 Tagの設定例
2000 - 2099 Serial Console向け serial:2000
2200 - 2299 SSH (22/tcp)向け pat:tcp:2200:22
2300 - 2399 NETCONF向け pat:tcp:2300:830
2800 - 2899 TCP/80 HTTP向け pat:tcp:2800:80
2900 - 2999 VNC向け (5900/tcp) vnc:2900

デフォルトではTCP2000から7999の範囲を認識するため、実際の使用可能なPortは本例より余裕があります。

関連ドキュメント

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/

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