Site icon Re:제로부터 시작하는 개발자 생활

2024년도 반밖에 안남았네요..(feat : GNS3, SDN, OpenvSwitch, OpenFlow, OpenDayLight, OpenWrt, LinuxContainer, Docker, QEMU)

혼자서 네트웍 공부를 간간히 해오고 있습니다. 이번달에는 “혼자공부하는 네트워크” 책을 사고, Udemy에서 “Linux for Network Engineers: Practical Linux with GNS3” 를 수강하며 이것저것 따라해보고 있습니다. 원래 ARM시스템 내에서 이것저것 해보려했던 생각이었지만, 날이 갈 수록, VirtualMachine, SDN으로 점점 기울어지고 있는게 보이고, 물리적인 네트웍 연결은 Wireless던, Wired던 한두가지만 있으면, 나머지는 기기 내부에서 Router처럼 Switch처럼 Hub처럼 Firewall처럼 혼자서 뭐든할 수 있게 하는게 방향인것 같네요. 과거처럼 HW의 범용 컴퓨팅(Flow조절) 성능이 떨어지는 것도 아니고, 오히려 물리적인 Data Path는 가속이나 전용 HW필요해서 따로 처리하는 추세라서, SW엔지니어 입장에서 본다면 이런 흐름이 자연스러운 것 같기도 합니다.

Cellular Network과 관련한 업무를 주업으로 삼고 있는 입장에서, 기반 네트웍지식을 학습하는건 꽤나 도움이 됩니다, 하지만 여전히 약간 불만 혹은 보이지 않는 것이 있다면, 대부분 네트웍 자체, Radio를 사용하는 부분의 연결성만 있고, 둘 사이를 연결하는 무엇인가가 부족하다는 생각을 꾸준히 합니다. 하마도 모 유명 전통 회사에서는 내부의 노하우가 많겠지만. 제가 접근할 수 있는건 이런 Open인프라의 조각조각 나서 여기저기 흩어져 있는 것들 뿐이네요. 당장 GNS3를 이용한 Linux Networks 강의를 듣고 있지만, 이것도 강사의 이력이 그래서인지 네트웍의 전통적인 역사에 따른 것인지 몰라도, Cisco와 그 자격증을 위한 여러가지 지식, 고유 명령어, Cisco Router컨트롤 등등 엮인게 많고, 그나마 OpenvSwitch로 넘어와서야 약간씩 희석 되는 느낌이긴 합니다. 그래서 인지 몇 년전 아마도 10년은 더 된 것 같긴한데. 조금씩 조금씩 2위권 아래의 네트웍장비 혹은 솔루션 회사들이 점점 커지고 있는거겠죠. 아마도 그 중에는 중국도 한 못 거들지 않았을까 합니다. 그 큰 땅과 네트웍을 유지하려면 미국과 맞먹거나 더 크거나 했을 거라, 새로 구축하는 입장에서 기존 장비와 솔루션, 특히 모호한 관계에 있는 나라의 것들을 가져오기는 힘들었으리라 생각합니다.

SDN, OpenNetworking(ONF가 있으니 될것 같기도 합니다) 이라고 불러도 될지는 모르겠지만. GNS3에서 표현되지 않는 것은 역시 HW이고, HW가 당연히 Ethernet표준을 잘 처리할 것이며, Control Path를 담당하는 SDN Controller 서버가 따로 있어서, 설정만 계속 잘 유지하고 적용, 변경하면, Network이 바뀔 거라는 것을 기본으로 깔고 가는 느낌입니다.

그래서 강좌의 내용들을 참고해서, 간략하게 Lab환경 꾸미는 걸 적어보면

  1. GNS3 (GNS3-server, GNS3-GUI, GNS3-VM) 을 설치하기. gns3.com에 가보면 Windows, MAC, Linux에 대해서 잘 정리되어 있고, 큰 문제는 없어 보입니다.
  2. 그전에 물론 기본적인 네트웍 툴들, Wireshark, Npcap등 여러가지가 있지만, 이것도 연결된 기능지원이 있어서 왠만하면 다 설치하는 것 같고, docker등도 알아서 설치해주는것 같습니다. 거의 python쪽의 anaconda느낌이네요. VM같은거 없어도, VPCS라고 PC Simulator도 기본으로 제공되어서 단순한 네트웍 환경 실험에는 큰 문제는 없어보이고요.
  3. Appliance라고, 자체 marketplace가 있고, 여기에 필요한 Network상의 가장 Entity들을 받아서 설치할 수 있는 Template들을 제공합니다. 현재는 꽤나 많은 것들이 있어서, 주로 Network Router/Switch등의 모델들이 왠만하면 있고, Cisco것(VIRL, Cisco IOS image, -> CML: Cisco Modeling Lab)은 돈주고 사야되고, 그외 몇 가지 공짜인것(OperWrt, OpenvSwitch)도 있고 그렇네요.
  4. 뭔가 GNS3상에서 꾸며보고 싶은 네트웍 구성요소들을 다 받았으면. 메인 네트웍 그래프장에 필요한 Entity들을 넣어두고, 실제 LAN케이블 연결하듯이, 선만 이어주면 자동으로 설정등을 적용해줍니다. static과 dhcp등을 설정하는 것은 대충 각 Entity가 Host이거나, Swtich등이거나 일때, 원래 사용하는 configuration포맷 형태로 내용만 적어주면 되고, 대부분은 Shell이 있고, 대부분은 Linux기반이라서, linux console로 접근해서 설정하고 재부팅하는 형태면 적용이 되네요. 그래서 대부분의 동작문제가 있으면, 거의가 Stop/Start를 다시 하는 게 해결책으로 강좌에서도 제시하는 군요. 안되면. 실습용 PC를 끄는것까지포함해서요.
  5. Cloud는 HostPC의 어떤 특정 Interface를 다서 쓰게 되는데, 유선이면 좋겠지만. WLAN만 있을 경우에는 뭔가 잘 동작하지 않는 것 같고, 그럴때는 그냥 NAT CLoud로 중간에 Routing을 가상으로 한번 더 하게 하면 외부 망 연결까지 잘 되는 것 같습니다.

강좌를 다 듣고 보면, 결국 원하는건 여러 장치를 모두 연결하고, 각 연결점들을 원하는대로 흐름을 만들어주기를 바라는 것 같네요. 그중에는 Firewall같은게 있고, 이걸 중간에 가로채서 버려버리기 위한게 많아 보이고요. 기존의 LowLevel Linux지식들과 아마도 Linux의 Network Tool들이 Cisco의 것들을 참고해가면서 CLI 등을 만들긴 했겠지만. 이젠 거기서 거기인 듯 하고요. 아마도 특허등으로 막혀 있던 것도 이제는 슬슬 모두 풀려나갈 시점일것 같기도 합니다. Internet Boom이 90년대중후 였으니, 30년이 되어가네요. 제가 중학교때였나, 고등학교떄 학교 컴퓨터실에 10Base2 Ethernet Link Coaxial Cable를 깔았던 기억도 나네요.. 그때는 Terminator를 실제로 설치해보기도 했고요. 애들끼리 Mud깔아서 놀고, 네트웍 게임도 전화접속이 아닌, LAN모드로 해보고 그랬던 기억이나네요.. 대학신입때도 비슷했던것 같습니다. 그때는 10base-T였던것 같고요. 대학때는 케이블 만드는 알바도 햇었죠…

추가로 강좌에서 이것저것 더 소개해주고 설명하는데, EVE-NG 같은것도 있다는데, 아무래도 광고 혹은 강사의 어쩔 수 없는 입장인 것 때문 일 것도 같네요. GNS3 – VIRL – EVE-NG가 거의 비슷한 통합 환경을 제공하는 듯 합니다. 그리고 VM중에 VirtualBox는 네트웍 Entity를 직접 굴리기에는 약간 기피하는 모양이고 ,VMware는 이제 Broadcom이 사서 그쪽에서 받아야하고, Cumulus Linux라고 뭔가 OpenRouter비슷한 건, 이제 NVDIA가 인수해서 그쪽에서 알아봐야하고.. 뭔가 현재 시점을 생각하면 다이나믹하네요. 한가지 공통적인건 이제 HW Virtualization은 그냥 기본인 느낌입니다. 그만큼 HW성능이 많이 좋아지고, 솔루션 등이 너무 많이 파편화(?) 되었다는 의미일것도 같네요. 그래도 거의 모두 Linux로 모이는 느낌이긴 합니다. 이제 살아남는것만 살아남겠죠 아마도.. 이런걸 생각해보면, 뭔가 게임이나 영화 혹은 과거 르네상스 시대의 예술가들을 지원하였던, ‘가문’ 이란게 떠오르네요. 현대의 기업들이 이젠 그런 위치에 있게 되지 않았나 싶습니다. 자본이란건 과거나 현재가 비슷하게 굴러가는 것 같고요. 마지막에는 bit.ly/freecml (devnet – 강의용 가장 Lab환경 지원, 시간제 예약, 4시간까지 사용가능)처럼 어쩔 수 없이 맛보기가 점점 늘어나는것도 같고요.

그 밖에 다른것들을 정리하면, 이젠 DNS server, DHCP server하면, dnsmasq를 사용하면 되는 듯 하고, DHCP client는 dhdpcd, udhdpc 정도. TFTP는 여전히 예제로나 실 사용목적으로나 유용한 것 같고. 주로 네트웍상에 OS배포관리용으로 많이 쓰고, PC방에서 많이 썼죠. 왠만한 PC메인보드도 BIOS상에서 다 지원할겁니다. DNS Server의 표준은 이제 8.8.8.8 구글 사이트이고. 역시나 여전히 Ipv6자료나 예제는 왠만해서는 찾아보기 힘들고. Virtual Disk는 이제 vmdk, qcow2가 대부분의 표준으로 자리 잡은 듯 하네요. 그리고 여전히 Windows를 메인으로 쓰는 건 건재하다 정도겠네요. Hyper-V나 WSL은 존재감이 미미하고, 이미 다른 Virtualization이 충분히 구축되어 있어서, 더 노력하는 것 같지도 않아보이네요. 기업에서 돈을 들이는 것도 이젠 아마 전부 AI로 몰려가서 더 진전이 없을 것도 같습니다. Cisco VPN = AnyConnect를 설치하는 것도 나오는데, 보면 Mobility라는 단어가 깊게 다가옵니다. 이전에는 Security에 가까운 느낌의 VPN 단어였는데 Mobility로 바라볼 수도 있겠군요. 사실 vowifi같은걸 접하면 mobility가 더 사용성면에서는 적합한 속성일지도 모르겠네요.

마지막으로 느끼고 떠오른 생각하나는 이런저런 학습을 하면서 특히, LAB/ 튜토리얼을 따라하면서, 접하는 설명 문서들을 보면.

  1. 친절하게 하나씩 하나씩 메뉴얼로 따라가면서 실행하고, 결과를 보여주는 것이 주류인데,
  2. 그냥 스크립트를 만들어서 실행 가능하게 하고, 이것들을 풀어서 설명하는게 더 좋지 않나하는 생각이 듭니다.

첫번째의 경우, 학습자가 직접 개개의 기본 단위 작업들을 숙지시키는게 좋지만, 학습효과나 최종적으로 실제 환경에 적용할 때, 다시금 어려움을 겪기가 쉽다는것이고

두번째의 경우, 학습이 제대로 안될 가능성과, 마지막의 결과물만을 이용하려는 경우, 이것 또한 실제 환경에서 동작하지 않을시 스크립트 자체에 대한 Troubleshooting이 필요할 수 있다는 정도겠네요.

하지만 이미 VM수준의 여러가지 수준높은 자동화 툴들을 일반적으로 사용하는 상황이라면 두번째가 좀더 나은 방향 같아 보입니다.

Exit mobile version