brunch

You can make anything
by writing

C.S.Lewis

파이썬 네트워크 프로그래밍 (#1 : 환경구축)

파이썬 네트워크 자동화 환경 구축

파이썬 네트워크 자동화 환경 구축

앞서 파이썬 네트워크 자동화에 간단한 글에서 설명한 것이 파이썬 네트워크 자동화 공부를 이제 시작하려고 합니다. 첫 번째 이야기는 "파이썬 네트워크 자동화" 테스트 랩, 즉 환경을 구축 하는 것 입니다. 


파이썬 네트워크 자동화 랩 구성하기

테스트 랩의 가장 큰 목적은 시스코, 주니퍼, 아리스타 장비를 놓고 파이썬 스크립트를 생성하여 자동화 구성이 목적이기 때문에 랩은 최대한 간단하게 구성할 것입니다. 

 


가상화 랩을 지원하는 PC

개인적으로 일에 사용하는 맥북 하나만 있기 때문에 GNS3, Vmware 등 소프트웨어를 설치하여 테스트을 할 수 있는 피씨가 필요했습니다. 마음 같아서는 최신 노트북이나 데스크 탑을 구매해서 환경을 만들고 싶었으나, 지나친 욕심이라 생각하여 현실에 맞는 "Beelink Mini PC"로 가상화 환경을 만들기로 했다.

가상화를 위해서 CPU, Memory, SSD 등 중요 항목들이 있지만, 저 같은 경우 몇 개의 VMs 과 몇 개의 Image만을 사용할 계획이라 아래와 같은 장비를 준비했습니다.


Beelink SER4 Mini PC Windows 11 Pro

Ryzen 7 4800U (8C/16T)

32GB DDR4

500G SSD


처음 Mini PC를 사용하고 있는데, 정말 손바닥 만한 것이, 소리와 열도 안되고 잘 동작하는 것을 보면 정말 놀라왔고, 가격도 제가 공부하는데 사용할 수 있는 $500 중반으로, 저에게 적합한 PC라고 생각했습니다.


파이썬 설치

파이썬은 아래 파이썬 홈페이지에 들어가서 Windows 11에 최신 버젼을 설치했습니다.

저 같은 경우 VM Ubuntu 서버에 Programming을 할 예정이라, 굳이 python 을 윈도우에 설치할 필요는 없었지만, 나중에 windows에서 테스트를 진행할 수 있지 않을까라는 생각에 설치를 진행했습니다.

Download : https://www.python.org/downloads/


설시 시에 나는 Python 명령어를 Cmd, Powershell에서 손쉽게 사용할 수 있도록 아래와 같은 설정을 체크하여 설치를 진행했습니다.

설치가 무사히 완료되었다면 cmd, powershell, 그리고 python app을 선택해서 문제 없이 설치가 되었는지 확인을 합니다. 파이썬 설치에 대해서 자세히 알고 싶다면, 구글에서 또는 네이버에서 내용을 검색한다면 좀더 구체적이고 필요한 내용을 얻기 바랍니다. 


VMWare 설치

VMWare는 가상 VM을 만들고 GNS3을 사용하기 위해서 아래 Version 을 설치했다.

Download : https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html


Ubuntu Server 설치

Python 스크립트를 돌리는 Main Automation 서버로 Ubunt Server의 이미지를 Download 하고 가상 서버를 VMWare에 설치했습니다. 설치는 간단하게 HDD 30G, Memory 4GB를 설정함으로써 Python Script을 사용하는데 문제가 없도록 구성했습니다.

Server Version : 22.04.1 LTS

Download :  https://ubuntu.com/download/server



CentOS 설치

CentOS는 서비스 서버를 구축하여 설정을 백업하거나, NTP 서버를 구축하여 시간 동기화 등, 여러 서비스 작업을 위해서 설치를 미리 했습니다. 구성은 Ubuntu 서버와 같이 HDD30, Memory 4GB로 설정했습니다.

  

    CentOS-Stream-8-86_64-latest-dvd1.iso  

Download : http://isoredirect.centos.org/centos/8-stream/isos/x86_64/


GNS3  설치

네트워크 가상화를 위해서 GNS3를 선택했고, 설치를 위해서 아래 프로그램을 설치를 진행했다.  GNS3 VM을 구성할 때, 4가지 이미지를 올려서 사용할 예정으로 GNS3 VM Memory을 넉넉하게 10GB로 구성했습니다. 추가로 CPU 할당도 상황에 맞게 넉넉하게 설정하신다면 추후에 테스트랩을 좀더 여유롭게 꾸밀 수 있을 것 입니다.

 

Download : https://github.com/GNS3/gns3-gui/releases

GNS3 : GNS3-2.2.33.1-all-in-one.exe

GNS3 VM : GNS3.VM.VMware.Workstation.2.2.33.1.zip


네트워크 이미지 설치

위에 언급한 것 같이 저는 Cisco, Juniper, Arista 구축할 예정으로 아래 이미지을 다운로드 하고, GNS3에 Templates을 추가 하였다. 인터넷에 여러 이미지들이 많으니, 테스트에 필요한 이미지를 찾아서 랩을 구성 하면 좋을 것이다. 아래는 제가 사용하는 이미지 정보들입니다.


시스코

IOSv_startup_config.img : https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/

L2 : vios_l2-adventerprisek9-m.03.2017.qcow2 : https://upw.io/w5/vios_l2-adventerprisek9-m.03.2017.qcow2

L3 : vios-adventerprisek9-m.vmdk.SPA.156-2.T : https://upw.io/9fe/vios-adventerprisek9-m-15.6.2T.qcow2


Juniper

Juniper vMX Image  : https://networkrare.com/free-download-junos-juniper-image-for-gns3-eve-ng-vmware-and-virtual-box/

해당 이미지 설치를 GNS3에 했지만 mgmt port 말고는 다른 포트 설정을 할 수 없었습니다.

(혹시 동작하는 juniper 이미지가 있다면, 위 링크에 있는 이미지 말고 다른 이미지를 설치하시면 좋을 것 같습니다. )


Arista

Arista Image : https://www.gns3.com/marketplace/appliances/arista-veos


아리스타 경우 GNS에서 지원하는 image을 아리스타 홈페이지 support에 가셔서 다운로드 하시면 됩니다. 


아래는 추가적인 내용입니다. 이미지를 추가하는 방법은 GNS3 문서를 참고하거나, 유트브에서 관련 내용을 검색한다면 손쉽게 해당 정보를 얻을 수 있을 것입니다.


이미지 추가 방법 (예제 : Cisco)

GNS3에 사용할 이미지를 준비했다면 이미지를 GNS3에 템플릿으로 추가해보자.

"File" - "New Template" 선택을 하면 아래 선택 페이지가 나온다.


"Install an appliance from the GNS server(recommended)"을 선택하고 "Next"을 클릭한다.

Filter에 설치할 이미지 정보를 넣는다. "cisco IOSv" 그리고 관련된 템플릿을 선택하고 "Install"을 클릭한다.

"Install the appliance on the GNS3 VM(recommended)" 선택하고 "Next"을 클릭한다.

Qemu Settings에는 이미 선택되어 있는 것을 사용한다.

이후에 다운로드 된 이미지를 "Import" 하여 "next"을 클릭하면, 준비된 Image 장비를 템플릿으로 만들고 사용할 수 있을 것입니다.


GNS3 가상랩

위 작업들을 마무리 했다면 GNS3 템플릿에 Cisco, Juniper, Arista 장비들이 보일 것이고, 사용할 장비들을 Drag하여 아래와 같이 랩을 구성할 수 있습니다.

아래 랩은 초기 랩으로 추후에 변경할 예정에 있습니다.

 

VMWare NAT 경우 각 사용자 환경에 따라 "192.168.X.0/24" 네트워크를 제공합니다. 저의 경우 VMWare NAT에서 "192.168.37.0/24" 대역을 사용하고 있어, 해당 정보를 변경하지 않고 그림과 같이 사용했습니다. 

Ubuntu 경우 128, CentOS는 129, 그리고 나머지 네트워크 장비에 10,20,30,40 IP를 할당했습니다.

NAT 경우 기본적으로 Port가 하나임으로 중간에 Ethernet Switch을 놓고 여러 장비들이 NAT과 연결 될 수 있도록 구성 하면 좋을 것 같습니다. 그리고 앞으로 테스트에 사용 할 장비의 User / Password을 동일하게 설정 할 계획으로 그림과 같이 간단한 ID와 Password를 사용했습니다.

 


마무리

파이썬 네트워크 자동화 테스트를 할 수 있는 랩을 간단하게 마무리 했습니다. 환경 구축에 목적인 간단한 스크립트를 각 벤더 장비들에게 적용할 수 있는지, 그리고 어떻게 적용하는지에 대한 목적을 가지고 있음으로 최대한 간단하게 만들었습니다. 상황과 환경에 맞게 좀더 멋진 랩을 만드시길 권장 드립니다.

파이썬 네트워크 자동화를 재미있게, 여러가지를 만들면서 공부했으면 합니다. 



 

매거진의 이전글 파이썬 네트워크 프로그래밍 (#0 시작글)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari