ChatGPT と Cisco の config で遊んでみた
TL;DR
- ChatGPT に Cisco の設定を投げてみた
- たまに間違えるけど、トラブルシュートも VLAN 追加とかもできそう
- 当たり前のことなんだけど、改めて
description
が今後より大事になってくる気がする
はじめに
「Hey Siri, この port に VLAN 10 を生やして」ができるかもしれないなぁ、と思った実験のログです。
単純な結果として、なんどか試すと確かにできました。
で、ポイントとしては interface
の description
をもとに network diagram というかそれぞれがつながっている様子を想像てきているっぽい、というところですね。
うまくいかなければ mermaid
で network diagram を追加で渡そうかとも思っていたのですが、この程度のサイズであれば問題ないようです。
ChatGPT に VLAN を追加するような依頼を投げてみる
以下のような依頼を ChatGPT に投げてみました。
Switch01 が core switch 的な扱い、Switch02 と Switch03 が access switch 的な扱いです。
どのようにつながっているかは interface
の description
から想像できるか、ということで試してみました。
難しい config ではないのですが、VLAN 200 をそれぞれのいい感じのポートに追加する必要があるよね、というシナリオです。
Cisco の Switch 3 台を使って構成していますが、Switch02 配下の PC1 と Switch03 配下の PC2 が通信できません。どのようにすればよいでしょうか。
=====
Switch01#show running-config
!
interface FastEthernet0/1
description Connected to Switch02
switchport mode trunk
switchport trunk allowed vlan 100
!
interface FastEthernet0/2
description Connected to Switch03
switchport mode trunk
switchport trunk allowed vlan 100
!=====
Switch02#show running-config
!
interface FastEthernet0/1
description Connected to Switch01
switchport mode trunk
switchport trunk allowed vlan 100
!
interface FastEthernet0/2
description Connected to PC1
switchport mode access
switchport access vlan 200
!=====
Switch03#show running-config
!
interface FastEthernet0/1
description Connected to Switch01
switchport mode trunk
switchport trunk allowed vlan 100
!
interface FastEthernet0/2
description Connected to PC2
switchport mode access
switchport access vlan 200
!
いい感じの結果が返ってきた
ということでうまくいった例を置いておきます。
あなたが提供した設定を見ると、PC1とPC2が通信できない理由はVLANの設定に関連しています。ここでの問題は、Switch02とSwitch03が異なるVLANに設定されていることです。PC1はVLAN 200に、PC2もVLAN 200に接続されていますが、Switch01はこれらのVLANを通過させていません。
解決策は以下の通りです:
Switch01のVLAN設定を変更する: Switch01はVLAN 100のみをトランクポートを通して許可しています。これにVLAN 200を追加する必要があります。
Switch01(config)#interface FastEthernet0/1 Switch01(config-if)#switchport trunk allowed vlan add 200 Switch01(config)#interface FastEthernet0/2 Switch01(config-if)#switchport trunk allowed vlan add 200
Switch02とSwitch03の設定を確認する: これらのスイッチはVLAN 200をトランクポートを通して許可しているかどうかを確認します。もし許可していなければ、以下のように設定を追加します。
Switch02(config)#interface FastEthernet0/1 Switch02(config-if)#switchport trunk allowed vlan add 200
Switch03(config)#interface FastEthernet0/1 Switch03(config-if)#switchport trunk allowed vlan add 200
これにより、VLAN 200のトラフィックがSwitch01を通ってSwitch02とSwitch03の間で通信できるようになります。これによりPC1とPC2が通信できるようになるはずです。
別のシナリオ
別のシナリオとして、以下のようなものを試してみました。
VLAN を追加する、ではなく「Switch02 と Switch03 の FastEthernet0/3 にそれぞれ新しい PC を接続し、既存の通信とは分けた形で通信させたいです」という少しあいまいな指示を出してみました。
1st req
Cisco の Switch 3 台を使って構成していますが、Switch02 と Switch03 の FastEthernet0/3 にそれぞれ新しい PC を接続し、既存の通信とは分けた形で通信させたいです。どのような追加設定が必要ですか。
=====
Switch01#show running-config
!
interface FastEthernet0/1
description Connected to Switch02
switchport mode trunk
switchport trunk allowed vlan 100,200
!
interface FastEthernet0/2
description Connected to Switch03
switchport mode trunk
switchport trunk allowed vlan 100,200
!=====
Switch02#show running-config
!
interface FastEthernet0/1
description Connected to Switch01
switchport mode trunk
switchport trunk allowed vlan 100,200
!
interface FastEthernet0/2
description Connected to PC1
switchport mode access
switchport access vlan 200
!=====
Switch03#show running-config
!
interface FastEthernet0/1
description Connected to Switch01
switchport mode trunk
switchport trunk allowed vlan 100,200
!
interface FastEthernet0/2
description Connected to PC2
switchport mode access
switchport access vlan 200
!
1st res
既存の通信とは分けた形で新しいPCを接続するためには、新しいVLANを作成し、そのVLANにPCを接続する設定を行う必要があります。この場合、Switch02とSwitch03に新しいVLANを追加し、そのVLANに新しいPCが接続されるように設定します。以下はその手順です。
ステップ1: 新しいVLANの作成
まず、新しいVLANを作成する必要があります。たとえば、VLAN300を作成するとします。
- Switch02とSwitch03の両方で以下のコマンドを実行します。
vlan 300 name PC_VLAN
ステップ2: 新しいPCを接続するポートの設定
次に、FastEthernet0/3ポートに新しいPCを接続するための設定を行います。
Switch02で以下のコマンドを実行します。
interface FastEthernet0/3 description Connected to New_PC1 switchport mode access switchport access vlan 300
Switch03で以下のコマンドを実行します。
interface FastEthernet0/3 description Connected to New_PC2 switchport mode access switchport access vlan 300
ステップ3: トランクポートの設定の更新
Switch01との間のトランクポートを更新して、新しいVLAN300が通過できるようにします。
- Switch02とSwitch03の両方で、FastEthernet0/1インターフェース(Switch01に接続されている)の設定を次のように更新します。
interface FastEthernet0/1 switchport trunk allowed vlan add 300
これらの設定により、新しいPCは既存のVLAN100とVLAN200から分離されたVLAN300に所属し、通信が分離されます。新しいPCが正しくネットワークに接続されているかどうかは、ネットワーク接続のテストを行うことで確認できます。
Switch01 側の設定が足りていないのでそちらも教えてもらえないか促してみています。
2nd req
Switch01 では設定変更は必要ないでしょうか
2nd res
Switch01に関しては、新しいVLAN(この場合はVLAN300)のトラフィックをSwitch02とSwitch03との間で運ぶために、トランクポートの設定を更新する必要があります。Switch01のFastEthernet0/1とFastEthernet0/2ポート(それぞれSwitch02とSwitch03に接続されている)に対して、新しいVLAN300を許可する設定を追加する必要があります。
以下はSwitch01に対する設定変更の手順です:
FastEthernet0/1ポートの設定変更(Switch02に接続):
interface FastEthernet0/1 switchport trunk allowed vlan add 300
FastEthernet0/2ポートの設定変更(Switch03に接続):
interface FastEthernet0/2 switchport trunk allowed vlan add 300
これらの設定により、Switch01は新しいVLAN300のトラフィックをSwitch02とSwitch03との間で運ぶことができるようになります。これにより、新しく接続されたPCが属するVLAN300のトラフィックがネットワーク全体で適切にルーティングされることを保証します。
図を書いてもらった
それぞれの Switch がどのように接続されているか、graphviz または mermaid で表すことはできますか
の結果がこちらです。
動作中の様子を見ると、Code Interpreter で Python を使って書いたようです。
cisco switch network diagram
Visio で書くような図とは異なりますが、どの port に何がつながっているか、description
をもとに理解できているようです。
今後こういった自動化というか、運用の効率化において、annotation というか、AI 的なものに理解してもらうにあたり、description
は重要な役割を果たすと考えられますね。
まとめ
今回は何も工夫せず、Cisco の設定に関する知識を ChatGPT がどれほど持っているか、を試してみた感じです。
ある程度理解はしているようで、また、description
の内容をもとにどの port がどのようにつながっているか、ということも想像できているようです。
Azure OpenAI Service (AOAI) で同じようなものを組み、Retrieval Augmentation Generation (RAG) なりでもう少し知識を補足してあげればもう少し回答の精度が上がるのでは、というのが次のアクションかなと思います。
また、この結果をもとに実際に SSH して設定変更する、みたいなところまで作り切れるといいかなぁ、とは思っていますがまた後で。。
Discussion