第26回 ChatGPTでconfigを作成してネットワークを構築

　生成AIの登場により**現在エンジニアの仕事の効率性は飛躍的に向上**しています。
たとえば、**資料のレビューやコードの作成補助、要件をもとにした設計図作成、打合せの文字おこし**など。
　ですがネットで情報が上がっているのは主に**Web系エンジニア関連やクラウド分野**が多く、**ネットワークエンジニアが生成AIを使用したコンフィグ作成**などは意外と情報が多くないと感じました。
　ネットワークエンジニアも他のエンジニアと同じく**要件をくみ取ってそこから設計図を作り、コンフィグを作成して、機器に投入したら試験を行い、その後に運用が始まる**のでやることは共通しています。
　今回は**コンフィグを作成して、機器に投入する「構築」に該当する部分**を生成AIを使用して検証を行いました。

**使用生成AI:ChatGPT**

## 検証に使用した構成図
![OpenAI 検証内容4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/c1ea6b72-1180-4923-9bd2-1f454528dfeb.png)


## AIへ指示開始
### 1回目の指示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/7ad20178-bfeb-47e6-9d6c-e2085dc7380d.png)

#### AIの回答結果(1回目)
<!-- AIの回答1回目 -->
<details><summary>AIの回答1回目 </summary>

```rb
【R1】
hostname R1

interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 standby 1 ip 192.168.1.254
 standby 1 priority 110
 standby 1 preempt
 no shutdown

interface GigabitEthernet0/1
 ip address 172.16.1.1 255.255.255.0
 standby 2 ip 172.16.1.254
 standby 2 priority 110
 standby 2 preempt
 no shutdown

ip route 172.16.1.0 255.255.255.0 GigabitEthernet0/1
ip route 192.168.1.0 255.255.255.0 GigabitEthernet0/0

! 1:1 Static NAT 設定（例: PC1 ⇔ 公開IP 203.0.113.1）
ip nat inside source static 192.168.1.10 203.0.113.1

interface GigabitEthernet0/0
 ip nat inside

interface GigabitEthernet0/1
 ip nat outside

【R2】
hostname R2

interface GigabitEthernet0/0
 ip address 192.168.1.2 255.255.255.0
 standby 1 ip 192.168.1.254
 standby 1 priority 100
 standby 1 preempt
 no shutdown

interface GigabitEthernet0/1
 ip address 172.16.1.2 255.255.255.0
 standby 2 ip 172.16.1.254
 standby 2 priority 100
 standby 2 preempt
 no shutdown

ip route 172.16.1.0 255.255.255.0 GigabitEthernet0/1
ip route 192.168.1.0 255.255.255.0 GigabitEthernet0/0

! 1:1 Static NAT 設定（例: PC2 ⇔ 公開IP 203.0.113.2）
ip nat inside source static 172.16.1.10 203.0.113.2

interface GigabitEthernet0/0
 ip nat inside

interface GigabitEthernet0/1
 ip nat outside
```
</details>

##### ※AIへの指示ミス
【R2】のStatic NATの設定はoutside⇒inside向けのNAT設定になってしまうので

【R1】で設定した以下内容で修正
ip nat inside source static 192.168.1.10 203.0.113.1
**最初の指示で、もう少し具体的に指示をしていれば、誤った結果が出なかった**かもしれません。

### 2回目の指示
 最初に指示した、**どっちかのポートの優先度が切り替わったら、それに合わせて同じように優先度を下げる**が盛り込まれていませんでした。
 **AIにまとめて指示をしても、すべて読み取ってくれるわけではないと実感。**
 そこでAIには再度以下内容で指示を実行しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/bf4918df-f6b6-4a18-ba25-9f8ac728ee3a.png)

#### AIの回答結果(2回目)

<!-- AIの回答2回目 -->
<details><summary>AIの回答2回目 </summary>

```rb
【R1】
! G0/0 にトラッキング番号1を割り当て
track 1 interface GigabitEthernet0/0 line-protocol

interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 standby 1 ip 192.168.1.254
 standby 1 priority 110
 standby 1 preempt
 no shutdown

interface GigabitEthernet0/1
 ip address 172.16.1.1 255.255.255.0
 standby 2 ip 172.16.1.254
 standby 2 priority 110
 standby 2 preempt
 standby 2 track 1 decrement 20
 no shutdown


【R2】
! G0/0 にトラッキング番号1を割り当て
track 1 interface GigabitEthernet0/0 line-protocol

interface GigabitEthernet0/0
 ip address 192.168.1.2 255.255.255.0
 standby 1 ip 192.168.1.254
 standby 1 priority 100
 standby 1 preempt
 no shutdown

interface GigabitEthernet0/1
 ip address 172.16.1.2 255.255.255.0
 standby 2 ip 172.16.1.254
 standby 2 priority 100
 standby 2 preempt
 standby 2 track 1 decrement 20
 no shutdown

```
</details>

これでは**片方のポート**だけだったので**両方のポートに連動したトラッキング設定**もAIは作ってもらえるとのことなので以下内容で再度指示。

### 3回目の指示
![指示3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/51bb0e1d-3273-4cc0-ac50-ca62209c3ae4.png)

#### AIの回答結果(3回目)
<!-- AIの回答3回目 -->
<details><summary>AIの回答3回目 </summary>

```rb
【R1】
hostname R1

! === トラッキング定義 ===
track 1 interface GigabitEthernet0/0 line-protocol
track 2 interface GigabitEthernet0/1 line-protocol

! === LAN側インターフェース ===
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 standby 1 ip 192.168.1.254
 standby 1 priority 110
 standby 1 preempt
 standby 1 track 1 decrement 20   ! 自分自身のインターフェース
 standby 1 track 2 decrement 20   ! 相手（WAN）をトラッキング
 no shutdown

! === WAN側インターフェース ===
interface GigabitEthernet0/1
 ip address 172.16.1.1 255.255.255.0
 standby 2 ip 172.16.1.254
 standby 2 priority 110
 standby 2 preempt
 standby 2 track 2 decrement 20   ! 自分自身のインターフェース
 standby 2 track 1 decrement 20   ! 相手（LAN）をトラッキング
 no shutdown

【R2】
hostname R2

! === トラッキング定義 ===
track 1 interface GigabitEthernet0/0 line-protocol
track 2 interface GigabitEthernet0/1 line-protocol

! === LAN側インターフェース ===
interface GigabitEthernet0/0
 ip address 192.168.1.2 255.255.255.0
 standby 1 ip 192.168.1.254
 standby 1 priority 100
 standby 1 preempt
 standby 1 track 1 decrement 20
 standby 1 track 2 decrement 20
 no shutdown

! === WAN側インターフェース ===
interface GigabitEthernet0/1
 ip address 172.16.1.2 255.255.255.0
 standby 2 ip 172.16.1.254
 standby 2 priority 100
 standby 2 preempt
 standby 2 track 2 decrement 20
 standby 2 track 1 decrement 20
 no shutdown


```
</details>

## 構築完了後の検証

### ①HSRPの機能確認
#### 正常時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/fe84d9dd-cdc0-4760-b498-94281929da6b.png)

両方の機器にHSRPの設定が反映されており、状態も**R1がActive、R2がStandby**であることを確認。

#### 優先度切り替わり時

##### Gig0/0のポートをシャットダウンしたとき
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/125f7c32-972d-47cc-b078-85877353e4de.png)

##### Gig0/1のポートをシャットダウンしたとき
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/dcbbef53-4f0c-4f9c-81d8-26b8f7ebe9fd.png)

**R1の優先度が20下がり90になった**ことでR1は**Standby**に変化、R2は両方のポートの状態が**Active**に変化することを確認。

### ②疎通確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/b38646fb-cf8c-40f1-859b-df594a5176dd.png)

**※172.16.1.250はPC2のアドレスです。**
PC1⇒PC2に対して疎通中、**HSRPの切り代わり時に通信断発生、切り替わり後に通信復活も確認。**

### ③traceroute確認
正常時は**192.168.1.1のR1**を経由
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/2303457e-d98b-4ef3-8527-8f5315dc7c0f.png)

HSRPの切り替わり時は**192.168.1.2のR2**を経由している。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/a7642411-efec-4378-86ae-773fb8f02b9e.png)

### ④NAT変換の確認
#### 正常時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/75a99a7f-42e3-4aa6-a781-5f2d04217712.png)
ルーター1を経由したパケットの送信元アドレスが**203.0.113.1にNAT変換**されていることを確認。

#### ルーター2へ切り替わり時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/5bcaad2f-d2a4-4216-9ef3-d74701d9bea2.png)
ルーター2を経由したパケットの送信元アドレスが**203.0.113.2にNAT変換**されていることを確認。

## 検証結果
**HSRPが想定通りに機能し、疎通確認も問題なく、NATも変換されているので検証成功。**

## 各ルーター設定コンフィグ
<!-- 各ルーター設定コンフィグ -->
<details><summary>各ルーター設定コンフィグ </summary>

```rb
【R1】
track 1 interface GigabitEthernet0/0 line-protocol
track 2 interface GigabitEthernet0/1 line-protocol

interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 ip nat inside
 standby 1 ip 192.168.1.254
 standby 1 priority 110
 standby 1 preempt
 standby 1 track 1 decrement 20
 standby 1 track 2 decrement 20

interface GigabitEthernet0/1
 ip address 172.16.1.1 255.255.255.0
 ip nat outside

 standby 2 ip 172.16.1.254
 standby 2 priority 110
 standby 2 preempt
 standby 2 track 1 decrement 20
 standby 2 track 2 decrement 20

ip nat inside source static 192.168.1.10 203.0.113.1
ip route 172.16.1.0 255.255.255.0 GigabitEthernet0/1
ip route 192.168.1.0 255.255.255.0 GigabitEthernet0/0

【R2】
track 1 interface GigabitEthernet0/0 line-protocol
track 2 interface GigabitEthernet0/1 line-protocol

interface GigabitEthernet0/0
 ip address 192.168.1.2 255.255.255.0
 ip nat inside
 standby 1 ip 192.168.1.254
 standby 1 preempt
 standby 1 track 1 decrement 20
 standby 1 track 2 decrement 20

interface GigabitEthernet0/1
 ip address 172.16.1.2 255.255.255.0
 ip nat outside
 standby 2 ip 172.16.1.254
 standby 2 preempt
 standby 2 track 1 decrement 20
 standby 2 track 2 decrement 20

ip nat inside source static 192.168.1.10 203.0.113.2
ip route 172.16.1.0 255.255.255.0 GigabitEthernet0/1
ip route 192.168.1.0 255.255.255.0 GigabitEthernet0/0

```
</details>

## 感想
　初めてChatGptを使用してコンフィグ作成とネットワーク構築を行いましたが、
**技術理解が浅い中で指示を出した場合、その後のコンフィグ内容も変わってきてしまいます。だからこそ最初の指示は、具体的に正確に出すことが一番大事だと**実感しました。
　AIが提示した回答は、こちらが希望した内容を**すべて盛り込んでいるわけではない**ので、そこの確認や判断は**人間が行う作業**になりますね。
　ただコンフィグ作成やネットワークの設計図作成は、**AIにやらせるのが当たり前の時代がもう来た**のでエンジニアは**要件をきちんと把握して、相手のニーズをつかんでいくスキル**が必須になってきていると実感。
　エンジニアにはコミュニケーションスキルが必要といわれてますが、**AIが発展すればするほどさらにコミュニケーションスキルを磨いていくことが必要**になりそうです。

## 参考
https://www.skillupai.com/blog/ai-knowledge/chatgpt-examples/

https://www.infraexpert.com/study/fhrpz04.html

## 次回予告
次回は少し視野を広げて**インターネットの構造**について記事を作成しようと思います。