GNS
✒️ 2025-05-22 15:10 내용 수정
GNS3
가상 라우터, 가상 스위치, 가상 방화벽 에뮬레이터
-
참고 자료 : GNS3 Getting Started with GNS3
-
VMWare + GNS3로 만들 수 있다.
- 20231203 현재 최신 버전은 2.2.44.1이지만 실습에는 안정성을 위해 2.2.21 버전을 사용했다.
-
GNS3의 소프트웨어 구성은 2개로 이루어져 있다.
- The GNS3-all-in-one software(GUI) : 클라이언트 부분이며 GUI(Graphic User Interface)가 있다. 이를 이용해 네트워크 토폴로지(Network Topology)를 만들 수 있다.
- 네트워크#네트워크 토폴로지(Topology) 참고
- GUI 클라이언트로 토폴로지를 만들었을 때, 생성된 장치들은 서버 프로세스에 의해 호스트되고 작동되어야 한다. 이를 위해 서버 파트에 Local GNS3 server, Local GNS3 VM, Remote GNS3 VM 중 하나를 선택해서 사용한다.
- The GNS3 virtual machine (VM) : GNS3의 서버 구성을 위한 Virtual Machine
- The GNS3-all-in-one software(GUI) : 클라이언트 부분이며 GUI(Graphic User Interface)가 있다. 이를 이용해 네트워크 토폴로지(Network Topology)를 만들 수 있다.
-
라우터 : 외부 네트워크를 연결 시켜주는 장치
-
스위치 : 내부 네트워크를 연결 시켜주는 장치
설치 및 환경설정
참고 자료 : NET Study GNS3 다운로드, 설치 및 설정(1) - 다운로드 & 설치, Gandalp's GNS 라우터에 VMWare 연결하기
GNS3 VM 설치
- https://gns3.com/software/download-vm 에서 GNS3 VM을 다운 받는다.
- 원하는 버전이 없다면 구글 검색에서 다운로드 사이트들을 참고한다.
- GNS3 VM을 실행하고 연결 장치는 VMware를 선택한다. (VMWare가 없으면 따로 다운받아야 한다.)
- GNS3 VM 이름과 VM 설치 경로를 선택하고 import를 누른다.
- GNS3 VM의 두 네트워크 어댑터의 설정을 서로 바꿔준다.
- GNS3 VM을 실행하고, 아래와 같은 창이 뜨면 ssh 접속용 ip 주소와 사용자, 비밀번호를 기억해둔다.
GNS3 설치
- GNS3 설치 파일을 실행한다.
- 아래 화면들에서 Next를 선택해서 넘어간다.
- Choose Components에서 Tool - WinPCAP을 선택 해제하고 Next를 선택한다.
- 상위 버전의 WinPCAP 설치 예정
- 설치 위치를 설정하고 Next를 눌러준다.
- 설치 진행 중 나오는 Npcap 설치 화면에서 I Agree를 누른다.
- Installation Options에서 3번째 항목이 선택된 상태로 Install을 누른다.
- 만약 이런 창이 떴다면 Npcap과 WinPcap 설치 참고.
- 설치 성공 혹은 실패가 떠도 넘어가고 아래 Solar-Putty 창이 뜨면 x버튼으로 닫거나 Continue로 이메일 입력 없이 넘어간다.
- Installation Complete 창이 뜨면 Next를 누른다.
- Solarwinds Standard Toolset 창이 뜨면 No를 선택하고 Next를 누른다.
- 설치가 모두 완료되었으면 Start GNS3가 체크된 상태로 Finish를 누른다.
- 프로그램 실행을 조금 기다린 후 뜨는 창에서 Setup Wizard에 Run appliances in a virtual machine을 선택하고 Next를 누른다.
- 이미 GNS#GNS3 VM 설치로 GNS3 VM을 설치했기에 이 설정을 따라간다.
- Local server configuration에서 server path 파일 위치를 확인하고, host binding과 port가 아래처럼 되어있으면 Next를 눌러 넘어간다.
- Local server status에서 local GNS3 server 연결이 완료되었다고 뜨고 Next를 누른다.
- 아래처럼 경고창이 떠도 당황하지 말고 OK를 누른다. GNS3 VM 위치를 잡아줄 예정이다.
- GNS3 VM 창에서 VMware를 선택하고, VM name을 GNS#GNS3 VM 설치에서 만든 항목을 찾아 선택한다. vCPU cores는 1개, RAM size는 2048 MB 기본 옵션으로 선택하고 Next를 누른다.
- Summary 화면에서 모든 설정을 재확인하고 Finish를 눌러 완료한다.
- 실습에선 2.2.21 버전을 사용했기에 업데이트 안내창이 떴다. 하지만 안정성을 위해 업데이트를 진행하지 않으므로 No를 눌러준다.
- 만약 GNS3가 연결이 제대로 되지 않는다면 Windows 개인 네트워크 방화벽이 꺼져 있는지 확인한다.
- 이 문제가 해결이 안되서 네트워크 드라이버도 재설치하고, 드라이버 삭제 후에 재설치도 해보고, 네트워크 초기화도 했지만 안되서 결국 포멧 했었다.. 특히 문제 해결 시도 중 cmd 창에서 장치 설정을 reset한 것이 나중에 다른 network usb 연결 때 장치 인식이 안되는 문제의 원인이 되어 포멧밖에는 해결 방법이 없었다. 다행히도 포멧 후에는 네트워크 어댑터도 잘 뜨고 GNS3에서 VMware와의 연결도 정상적이었다.
WinSCP 설치
- WinSCP는 Windows 운영체제에서 사용할 수 있는 오픈 소스 SFTP(SSH File Transfer Protocol), SCP(Secure Copy Protocol), FTP(File Transfer Protocol) 클라이언트다.
- SSH로 파일 및 폴더를 쉽게 주고 받을 수 있다.
- WinSCP 사이트 ( https://winscp.net/eng/download.php )에서 파일을 다운 받는다.
- 다운 받은 파일을 실행하고, 현재 사용자를 위한 설치를 선택한다.
- 사용자 계약을 수락한다.
- 일반 설치를 진행해도 되고, 나는 설치 위치를 지정하기 위해 사용자 지정 설치를 선택했다.
- 설치할 위치를 지정하고 다음을 누른다.
- 구성 요소 설치는 기본 설정대로 두고 다음을 누른다.
- 선택적 기능 적용도 기본 옵션으로 둔 후 다음을 누른다.(바탕화면 아이콘은 선택 시 제외해도 된다.)
- 사용자 인터페이스 스타일을 기본인 커맨더로 지정하고 다음을 누른다.
- 설치 준비 완료 창이 뜨면 옵션을 확인하고 설치를 누른다.
- 설치가 완료되면 시작 페이지 열기를 체크 해제하고 WinSCP 실행을 체크한 상태로 완료를 누른다.
- WinSCP에서 GNS#GNS3 설치의 5번 항목에서 본 아이피, 사용자 이름, 비밀번호를 입력한다.
-
연결이 정상적으로 되었다면 호스트 키를 캐시에 추가하라는 창이 뜨는데, ssh에 처음 접속할 때는 암호화 키를 생성해야 하고, 이를 통해 접속할 수 있으므로 "예"를 눌러준다.
-
연결이 성공적으로 끝나면 CiscoIOUKeygen.py 파일을 GNS3로 전송해준다.
- CiscoIOUKeygen.py 는 Cisco IOU의 라이센스 키를 생성하는 파일이다.
- 참고 자료 : Online CCNA CCNP Classes
- 위 링크의 원문에 있는 주의사항을 꼭 읽어볼 것 (=> Therefore, it should only be used for testing and educational purposes on a lab environment.)
- ip와 네트워크 문제 때문에 WinSCP로 GNS3 연결을 할 수 없어 대신에 CentOS 7 가상머신에서 CiscoIOUKeygen.py을 받아 SFTP로 GNS3에 전송했다.
Cisco license 생성
- GNS3 VM에서 enter를 눌러 메뉴창을 띄운 다음 Shell를 방향키로 선택한 후 enter를 누른다.
- 셸에서
sudo su로 root 계정으로 전환한 후 home에 CiscoIOUKeygen.py 파일이 있는지 확인한다. python3 CiscoIOUKeygen.py로 CiscoIOUKeygen.py 파일을 실행해준다.- 실행 결과로 나온 라인에서 gns3vm 부분의 코드를 확인하여 iourc.txt에 해당 내용을 적어둔다.
- 운영체제별로 코드가 다르다.
GNS3 IOU 설정
- 이번엔 GNS3에서 메뉴 중 Edit - Preference를 선택한다.
- General에서 Console applications를 선택하고, Console settings에서 Edit를 누른다.
- Choose a predefined command에서 SuperPutty를 찾아 선택한 후 OK를 누른다.
- 이번엔 IOS on UNIX 메뉴를 눌러 Browse를 누른다.
- GNS#Cisco license 생성의 5번에 확인한 license 항목을 적어둔 메모장 파일의 위치를 지정해준다.
- 파일이 정상적으로 인식되었다면 아래처럼 IOU license 항목에 메모장에 쓴 내용이 그대로 들어있다.
- 이번엔 IOU Devices 메뉴를 눌러 New를 누른다.
- 새로 뜨는 창에서 Next를 누른다.
- Name을 Switch로 만들고 i86bi-linux-l2-adventerprisek9-15.2d.bin 파일을 선택해준다. 선택 후에는 Finish를 눌러 완료한다.
- 구글에 검색하면 다운 받는 링크들이 존재한다.
- 다시 7번 과정으로 돌아가서 New를 눌러 이번엔 Router를 추가한다.
- Name에 Router를 입력하고 New Image를 선택해서 L3 image로 바꾼 후, i86bi-linux-l3-adventerprisek9-15.4.1T.bin 파일을 선택한다.
- 선택이 모두 완료되었으면 Finish를 눌러 장치 추가를 완료한다.
- 장치들이 제대로 추가되었는지 확인한다.
- 이번엔 VMware VMs 메뉴를 눌러 New를 누른다.
- 새 창에서 Next를 누른다.
- VM list에서 추가할 VM을 선택하고 Finish를 눌러 장치를 추가한다.
- 장치가 2개 있다면 둘 다 추가한다.(연결 테스트를 위해 2대의 VM이 필요)
- VM을 2대 추가했다면 Apply를 누르고 OK를 눌러 설정을 저장한다.
- GNS3를 종료한 후 이번엔 SuperPuTTY 파일을 인터넷에서 받아 압축을 해제한 후 폴더 내에 있는 파일과 디렉터리를 모두 복사한다.
- 복사한 파일과 디렉터리를 GNS3 폴더에 붙여넣기 한다. 같은 파일은 덮어쓰기 해준다.
- VMware에서 작동중이었던 VM을 모두 shutdown 시켜주고, 메뉴창에서 Edit - Virtual Network Editor를 선택한다.
- Change Settings를 누르면 VMnet0번도 화면에 뜬다.
- VMnet8은 외부 인터넷 연결을 해준다.
- VMnet0은 Bridged 모드를 가능하게 해준다.
- 두 네트워크는 삭제하면 안된다.
- Add Network를 선택해서 VMnet2부터 VMnet7까지 추가한다.
- 그리고 VMnet0번과 VMnet8번을 제외한 모든 VMnet은 Use local DHCP service to distribute IP address to VMs를 체크 해제한다.
- 만약 집에서 작업을 한다면 Subnet Address에서 중복되는 주소가 없어서 문제가 없으나, 학원 등에서 수강 하는 실습 환경에서는 주소가 겹칠 수 있기 때문에 이 때는 Subnet IP의 3번째 자릿수를 변경해준다.
- 마지막으로 VMnet8번만 NAT, 나머지는 Host-only인지 확인한 후, Apply를 누른 후 OK를 누른다.
- 설정이 완료되면 컴퓨터를 재부팅한다.
- 재부팅 후 제어판 - 네트워크 및 인터넷 - 네트워트 연결 창을 열면 VMware에서 추가한 네트워크 어댑터가 추가된 것을 확인할 수 있다.
- 이제 GNS3에서 프로젝트를 생성할 준비가 완료되었다.
GNS3 Project 생성 및 네트워크 설정
- GNS3를 실행시키고, VMware의 gns3.vm이 자동으로 켜질 때까지 대기한다.
- 화면이 GNS#GNS3 VM 설치의 5번 화면이 뜨면 VMware는 잠시 최소화 시키고 GNS3로 돌아와서 프로젝트를 생성한다. 프로젝트의 이름과 위치를 지정하고 OK를 눌러 생성한다.
- 왼쪽 아이콘들 중 아래에서 2번째 항목을 누르면 모든 장치를 볼 수 있다. 이 중에서 VM 2대, Cloud(서버는 로컬 기본), Router, Switch, VPCS(서버는 로컬 기본)을 마우스로 드래그 앤 드롭해서 중앙 화면에 배치한다.
- 배치 후 위쪽 메뉴에 초록색 삼각형 버튼(시작버튼)을 눌러 모든 장치의 전원을 켠다.
- 장치들이 정상적으로 켜졌다면 오른쪽 Node 창에 녹색 불이 들어온 것을 볼 수 있다.
- VM 운영체제(서버)랑 Switch랑 연결할 때는 반드시 전원을 끈 상태에서 연결해야 하므로 빨간색 네모 버튼(정지 버튼)을 눌러 모든 장치의 전원을 다시 끈다.
- 각 아이콘의 이름을 더블 클릭하면 이름을 변경할 수 있고, 드래그하면 위치를 바꿀 수 있다. 좀 더 보기 편하게 아래처럼 이름을 변경했다.
- Switch 1개 당 VMnet 1개의 네트워크에 연결한다. 실습에서 VM 장치 2개를 Switch에 연결하기 위해 먼저 VMware에서 해당 장치들의 Device에서 Network Adapter를 Custom - VMnet1(Host-only)로 변경한다.
- 만약 Switch에 여러 개의 서버가 연결될 경우, 같은 Switch에 연결되는 서버들은 같은 VMnet 번호를 가진다.
- ex) vmnet1 = 192.168.213.0/24
- 주의사항 : ip를 할당할 때는 1~9까지는 사용하지 않는다.
- VMnet이 자동으로 사용하는 번호다.
- 다시 GNS3로 돌아와서 장치들을 링크로 연결한다.
- 왼쪽 아이콘에서 랜 케이블처럼 생긴 버튼을 누르면 장치들간의 링크를 연결할 수 있는데, 클릭하면 이더넷과 시리얼을 선택할 수 있다.
- 우선은 장치들끼리 이더넷으로 순차적 연결을 해준다.
- 링크를 잘못 연결했다면 연결한 링크에 우클릭 - delete를 선택해서 지울 수 있다.
- 연결이 완료되었으면 Router의 클라우드와 연결되는 이더넷과 Switch랑 연결되는 이더넷쪽에 배정할 ip를 텍스트 박스로 추가한다.
- 텍스트 박스는 위쪽 아이콘 메뉴 중 연필 모양 아이콘이다.
- 그 다음 사각 점선 아이콘을 눌러 박스를 생성하고, 내부와 외부 네트워크끼리 포함되도록 영역을 설정한다.
- 박스에 우클릭을 하면 속성이 뜨는데 Style로 색이나 테두리 등을 지정할 수 있고, Raise one layer는 앞으로 가져오기, Lower one layer는 뒤로 밀어내기다.
- Router를 기준으로 내부 네트워크와 외부 네트워크를 작성 완료했다면 이제 다시 위쪽 초록색 삼각형 버튼(실행 버튼)을 눌러 모든 장치들의 전원을 켜 준다.
- 주의 사항 : 직접 VMware의 장치를 수동 부팅 시켜버리면 연결되지 않는다.
- CentOS만 다시 쓰고 싶다면 LAN 카드를 Bridged로 변경해야 한다.
- 전원이 켜진 VM 장치들을 root 계정으로 접속한다.
- DHCP 서버 컴퓨터의 네트워크 설정을 GNS3에서 작성한대로 바꿔준다. 적용 후 네트워크를 한 번 껐다가 켜야 적용이 된다.
- ip 주소는 DHCP 서버에서 사용하려는 주소로, 게이트웨이는 Router의 e0/1 주소로 설정
- 두 번째 VM 장치는 IPv4를 자동으로 받도록 설정해준다. 적용 후 네트워크를 한 번 껐다가 켜야 적용이 된다.
-
이제 Router를 설정한다. 먼저 GNS3에서 라우터 아이콘을 더블 클릭해서 SuperPuTTY Options을 열어준다.
- 만약 Windows 기능 설치 창이 뜬다면 설치를 진행하고 다시 더블 클릭한다.
-
putty.exe 파일의 위치를 Browse를 눌러서 나오는 창에서 exe 파일을 찾아서 눌러주고 Advanced로 이동한다.
- Only allow single instance of SuperPuTTY to run 만 체크해주고, 나머지는 체크 해제를 한 후 OK를 누른다.
- 창이 종료될 때 뜨는 새 창은 닫아주고 다시 Router 아이콘을 더블 클릭하면 SuperPuTTY 창이 뜬다.
- tip : GNS3 창에서 PC1를 더블 클릭하면 SuperPuTTY에 창이 추가된다.
- Commands에 명령을 입력하면 두 창에 모두 입력이 들어간다.
- command에 다음 내용을 입력한다. 마지막에 ping 확인을 통해 Router와 이더넷 연결(로컬의 공유기)을 확인한다.
ip route 0.0.0.0 0.0.0.0 로컬게이트웨이를 입력하면 ping이 정상적으로 뜨기 시작한다.(연결이 되었음)- 네트워크#서브넷과 넷마스크 참고.
- 네트워크 관련 명령어#SuperPuTTY 참고
- 만약 설정을 잘못 줬다면 명령어를 참고해서
no ip address로 지운다.
# conf t
# int e 0/0
# ip add e0/0아이피주소 서브넷마스크
# no shut
# int e 0/1
# ip add e0/1아이피주소 서브넷마스크
# no shut
# exit
# ip route 0.0.0.0 0.0.0.0 로컬게이트웨이
# do ping 8.8.8.8
- 핑을 확인했다면 아래 내용도 작성해준다.
# access-list 1 permit 192.168.0.0 0.0.255.255
# ip nat inside source list 1 int e 0/0 overload
# conf t
# int e 0/1
# ip nat inside
# int e 0/0
# ip nat outside
# end
# copy run start
- VM에서
ping 8.8.8.8로 외부 통신을,ping 라우터ip로 내부 통신을 확인한다.