Doctor Pepper

[CLI] 사용자 인터페이스 : CLI, GUI 본문

Network 심화/Juniper

[CLI] 사용자 인터페이스 : CLI, GUI

Doctor Pepper 2024. 11. 30. 12:12
728x90

 

 

1. Juniper 장비 관리 방법: CLI의 기능 소개

 현재 시장에 나와 있는 거의 모든 기업용 네트워킹 장치는 명령줄 인터페이스(Command Line Interface, CLI)를 주요 상호작용 수단으로 제공한다. 그리고 이는 Juniper 장비에서도 마찬가지이다. CLI는 텍스트 기반의 프롬프트를 제공하며, 이를 통해 사용자는 명령어를 입력하고 응답을 받을 수 있다.

 

 CLI를 사용하면 장비의 현재 상태를 확인하거나, 설정을 변경하고, 문제가 발생했을 때 이를 진단 및 해결할 수 있는 수많은 명령어에 접근할 수 있다. Junos OS 역시 예외가 아니다. 

 

- CLI와 GUI의 차이점

 CLI 외에도, 일부 벤더는 그래픽 사용자 인터페이스(GUI)를 제공한다. 그러나 GUI는 일반적으로 작은 사무실이나 가정용 하드웨어에만 제공되며, 경험이 적은 사용자도 쉽게 장비에 접근할 수 있도록 설계되었다. 이는 소규모 네트워크 환경에서 엔터프라이즈급 네트워킹 하드웨어를 사용할 수 있게 하여, 전문 엔지니어를 고용하지 않아도 되는 이점을 제공한다.

 

- CLI가 선호되는 이유

 엔지니어들이 역사적으로 CLI를 선호해 온 이유는 무엇일까? 어두운 화면에 녹색 텍스트가 흘러가는 장면이 공상 과학 영화 매트릭스의 한 장면처럼 느껴져 멋지기 때문일까? 사실 그 대답은 "그렇다"이다. 단언컨대, 맞다. 하지만 CLI가 선호되는 이유는 단지 멋져 보이기 때문만은 아니다.

 

 CLI의 진정한 장점은 바로 빠르고 효율적인 작업이기 때문이다. 기본 명령어 몇 가지만 익히면, 몇 초 안에 장비의 실시간 통계를 확인하고, 과거 데이터나 다른 장비의 통계와 비교할 수 있다. 이러한 데이터를 저장하거나 가져오고, 자동화된 작업을 위해 스크립트를 실행하는 것도 가능하다.

 

- CLI를 활용한 자동화

 CLI는 자동화 작업에도 유리하다. 예를 들어, Junos는 운영 스크립트(Op Scripts)라는 기능을 제공한다. 이 스크립트를 통해 여러 명령어를 묶어 새로운 사용자 정의 명령어를 생성할 수 있다.

 

 예를 들어, 자주 사용하는 10여 개의 문제 해결 명령어를 묶어 하나의 스크립트로 작성하면, 단 한 줄의 명령어로 모든 작업을 실행할 수 있다. 이 스크립트는 결과를 CLI에 출력하는 것뿐만 아니라, 장비 내 텍스트 파일로 저장하거나 외부 FTP로 내보내 분석할 수도 있다.

 

 이와 같은 작업을 GUI에서도 수행할 수 있지만, CLI에서 훨씬 더 간편하게 처리할 수 있다.

 

2. CLI가 자동화로 대체되고 있는가?

그렇다. 하지만 아니기도 하다.

 

 전통적으로 네트워크 엔지니어들은 CLI로 모든 작업을 수행하고, GUI(그래픽 사용자 인터페이스)는 거의 사용하지 않는 것을 선호해왔다. 어떤 엔지니어들은 심지어 프로덕션 장비에서 GUI를 완전히 비활성화하기도 한다. 이는 부분적으로 CLI가 제공하는 기능성이 더 뛰어나기 때문이고, 부분적으로는 GUI를 선호하는 사람들보다 자신들이 우월하다고 느끼고 싶어하는 "너드" 성향 때문이며, 또한 CLI를 통해 사용자 작업 기록을 남기는 것이 GUI보다 쉽기 때문이다.

 

 어떤 엔지니어들은 GUI가 보안 위험을 초래한다고 주장하기도 하는데, 이는 개인적으로 잘못된 의견이라고 생각한다. 그들의 주장은 GUI는 아무나 추측하며 접근할 수 있지만, CLI를 다룰 줄 아는 기술이 필요하다는 것이다. GUI를 비활성화하면 CLI 기술이 없는 초보 해커들이 바이러스를 배포하는 것을 막을 수 있다는 것이다. 하지만 내 개인적인 반응은 이렇다: 만약 신뢰할 수 없는 누군가가 장비의 사용자명과 비밀번호에 접근할 수 있다면, GUI 접근이 문제의 핵심은 아니다.

 

 개인적으로 CLI와 GUI 모두를 좋아하며, 상황에 따라 각자의 장점이 있다고 생각한다. 장비를 구성하는 데 있어 어떤 방법이든 가장 빠르고 사용하기 쉬운 도구가 올바른 도구다. 또한 사람들이 할 수 있는 작업과 할 수 없는 작업을 가장 효율적으로 관리할 수 있는 도구가 올바른 선택이다. 때로는 CLI가, 때로는 GUI가 그 역할을 한다.

 

 이제 CLI에서 벗어나, 네트워크의 전체 장비를 관리할 수 있는 GUI로 돌아가거나, 개별 장비 혹은 데이터 센터 전체를 자동으로 구성할 수 있는 스크립트를 사용하는 방향으로 업계가 변화하고 있다는 이야기를 들어보았을 것이다.

 

- GUI를 통한 자동화

 GUI는 장비 제조사가 제공하는 기본 GUI와는 다르다. 대신, 이러한 GUI는 반복 작업에서 일관성을 유지하기 위해 백그라운드에서 스크립트를 실행시킨다. 예를 들어, 대규모 데이터 센터에서는 자주 랙에 새로운 스위치를 배치해야 할 필요가 있다. 이 데이터 센터는 동일한 스위치 모델을 사용하고, 매우 일관된 구성을 유지한다. 예를 들어, 포트 1~38은 고객용으로 할당되고, 나머지는 인프라 연결용으로 사용될 수 있다. 스위치 간 차이점은 VLAN, 게이트웨이 IP 주소와 같은 구체적인 설정뿐이다.

 

 과거에는 이러한 스위치가 CLI를 통해 구성되었다. 잘해야 엔지니어가 텍스트 파일에 템플릿 구성을 작성하고 VLAN이나 IP 주소와 같은 세부 정보를 붙여넣었지만, 이러한 방식은 실수의 여지가 많았다. 텍스트 파일에 붙여넣을 때에는 검증 과정이 없기 때문이다. 나도 /24 서브넷 대신 /32 서브넷을 잘못 구성한 적이 있는데, 그로 인해 고생하며 큰 교훈을 얻었다.

반면, 엔지니어가 필수 입력 값(VLAN, 관리 IP 주소 등)을 GUI에 입력하면 스크립트를 통해 전체 구성이 생성되고, 검증 및 자동 배포가 이루어진다. 이러한 방식으로 구성된 스위치는 랙에 설치할 준비가 완료된 상태가 된다.

 

- 스크립트를 통한 자동화

이와 동일한 시나리오가 Ansible, Puppet, Chef와 같은 자동화 도구를 통해서도 가능하다. 이러한 도구들은 네트워크 장비를 자동으로 구성하고 배포할 수 있도록 설계되었다. 예를 들어, 스위치가 DHCP를 통해 IP를 획득한 뒤 특정 서버에 연결하여 일련번호를 보고하고, 스크립트에 따라 네트워크 내 위치에 맞는 구성을 자동으로 다운로드받는 식이다.

 

- 대규모 자동화와 제로 터치 프로비저닝

 대규모 조직에서는 자체 GUI 도구를 개발해 사용하기도 하지만, 소규모 조직에는 비효율적일 수 있다. 그래서 Juniper와 같은 제조사는 고객이 장비를 연결만 하면 자동으로 기본 게이트웨이를 찾고, 제조사에 연결하여 설정을 다운로드받는 제로 터치 프로비저닝 서비스를 제공한다. 이는 SD-WAN 및 SD-LAN 기술의 본질이며, 많은 기업이 이를 활용하고 있다.

 

3. J-Web을 통한 그래픽 액세스

 DHCP(Dynamic Host Configuration Protocol)는 아마 들어본 적이 있을 것이다. 아직 그 정의를 정확히 기억할 필요는 없습니다. 현재 중요한 점은 DHCP가 컴퓨터가 네트워크에서 IP 주소와 네트워크에서 작동하는 데 필요한 다른 정보(예: 서브넷 마스크, 기본 게이트웨이 등)를 요청하는 방식이라는 것이다.

 

 DHCP 서버의 역할은 이러한 요청에 응답하고 IP 주소를 할당하는 것이다. SRX320과 같은 작은 지점 방화벽은 기본 설정에서 DHCP 서버 역할을 수행하도록 설정되어 있다. 이 경우, 컴퓨터를 해당 방화벽의 이더넷 포트 중 하나에 연결하면 자동으로 IP 주소를 받아 SRX와 웹 GUI를 통해 연결할 수 있다.

 

 상상해보자. SRX320을 처음 박스에서 꺼내 켰을 때, 컴퓨터의 IP 주소를 DHCP를 통해 자동으로 할당받도록 설정한 후, 컴퓨터를 SRX320의 0/1부터 0/6 포트 중 하나에 연결하면, 컴퓨터는 192.168.1.0/24 범위의 IP를 자동으로 받게 된다. 즉, 192.168.1.x 형식의 IP 주소가 할당된다.

 

 SRX320 자체의 IP 주소는 192.168.1.1로 설정되어 있다. 그래서 이 IP를 사용하여 SRX와 연결할 수 있다. 이 특별한 DHCP 기능을 사용할 때는 웹 브라우저에서 https://192.168.1.1 접속하여 J-Web 인터페이스를 통해 장비에 로그인할 수 있다.

 

 GUI에서는 현재 목적에 맞게, GUI에서 계속 작업할 수 있고, 또는 전문가로서 (즉, 여러분이 이미 전문가이기 때문에) 장비에 비밀번호를 설정한 후 GUI에서 로그아웃하고 CLI를 통해 계속해서 설정을 진행할 수 있다. 

 

4. SSH와 Telnet

  SRX의 포트에 연결되어 있고, DHCP를 통해 IP 주소를 받았다. J-Web을 통해 잠시 연결한 후, 장비에 루트 비밀번호를 설정했다. 루트 계정으로 로그인하면 슈퍼 유저 권한을 가지게 되어 장비에서 사용할 수 있는 모든 명령어에 접근할 수 있다.

 

 최선의 방법을 고려하여, 루트 계정 외에도 두 번째 사용자 계정을 설정했다고 가정해 보자. 이렇게 하면 항상 루트 계정을 사용하지 않고도 작업할 수 있다. 사용자는 읽기 전용, 읽기/쓰기, 또는 제한된 보기와 제어 권한을 가진 사용자로 만들 수 있다.

 

 지금 장비에 사용자 이름과 비밀번호를 설정한 상태에서, SSH Telnet이라는 두 가지 프로토콜을 사용하여 IP 주소를 통해 라우터의 명령줄에 접속할 수 있다. 이 두 프로토콜은 모두 원격으로 명령줄을 조작하고 구성할 수 있게 해주지만 중요한 차이점이 있다. Telnet은 전송되는 트래픽이 일반 텍스트로 전송되지만, SSH는 트래픽이 완전 암호화되어 전송된다. 따라서 가능한 한 SSH를 사용하는 것이 좋다.

 

- MAC이나 Linux 사용자

 이 두 프로토콜은 기본적으로 컴퓨터의 명령줄에 내장되어 있다. 새 터미널 창을 열고, 다음 두 가지 방법 중 하나를 입력해 보자.

  • telnet 192.168.1.1 을 입력하고, 사용자 이름에 admin을 입력한다.
  • ssh admin@192.168.1.1을 입력한다.

어떤 방법을 선택하든, 비밀번호를 입력하라는 메시지가 나타나면 비밀번호를 입력한다. 

 

- Windows 사용자

 많은 Windows 버전에서는 기본적으로 Telnet이나 SSH가 내장되어 있지 않다. 이를 해결하기 위해 무료 또는 저렴한 가격으로 다운로드할 수 있는 여러 애플리케이션이 있다. 가장 많이 사용되는 클라이언트 중 하나는 PuTTY이다. 그 외에도 SecureCRT, MremoteNG, MobaXterm, KiTTY, ZOC Terminal 등이 있다. 네트워크 엔지니어들은 자신이 선호하는 클라이언트를 가장 좋다고 주장하지만, 여러분도 직접 조사하여 자신에게 가장 적합한 클라이언트를 선택하는 것이 좋다.

 

 IP 주소를 입력할 수 있는 공간이 있으며, Telnet과 SSH를 선택할 수 있습니다. 자주 사용하는 장비라면 세션을 저장해 놓을 수도 있다.

 

5. 콘솔 포트를 통한 연결

 SRX320에 DHCP를 통해 IP 주소를 받아 연결했다. 이는 일반적으로 작은 브랜치 장비에서 잘 작동한다. 그러나 데이터 센터나 서비스 제공업체 네트워크에서 볼 수 있는 더 큰 섀시를 가진 장비들, 예를 들어 대형 SRX 방화벽이나 MX 라우터는 실제로 모든 인터페이스가 초기화되지 않은 상태로 출하된다. 즉, IP 주소도 없고 DHCP도 설정되지 않은 상태이다.

 

- 왜 이렇게 설정되는 것일까?

 소규모 기업 환경에서는 단일 LAN을 사용하는 경우가 많고, 네트워크 엔지니어가 상주하지 않는 경우도 많다. 이러한 환경에서는 DHCP로 미리 설정된 LAN을 제공하는 것이 배치가 용이하기 때문에 큰 장점이 된다. 작은 사무실에서는 J-Web을 통해 간단히 설정을 변경하고 빠르게 운영을 시작할 수 있다.

 

 반면, 대형 장비는 다양한 인터페이스가 있고, 각 기업마다 사용 방식이 다르므로, 모든 장비에 기본 IP를 미리 설정하는 것은 불가능하다. 예를 들어 MX 라우터 모델을 보면 각기 다른 용도로 사용될 수 있음을 알 수 있다. 이러한 대형 장비들은 IP 주소 없이 출하되며, 기본적인 물리적 설정만 되어 있는 상태이다.

MX 시리즈 패밀리 출처 : Day One: Beginner's Guide

 

- IP가 없는 장비에 연결 방법

 SRX320 장비의 0/0 포트를 보면, "Console"이라는 레이블이 붙은 두 개의 포트를 볼 수 있다. 하나는 이더넷 포트처럼 생겼고, 다른 하나는 마이크로 USB 포트처럼 보인다. 이 포트들은 네트워크 엔지니어들이 "콘솔 포트" 또는 "직렬 포트"라고 부르는 포트이다.

 

 콘솔 포트에 연결하면 장비에 직접 연결된 것처럼 장비와 밀접하게 명령할 수 있다. 이 연결에는 IP 주소가 필요하지 않으며, 직접 장비에 접근하여 문제를 해결하거나 설정을 수정할 수 있다. 네트워크 엔지니어들은 종종 장비가 새로 설치되었거나, 다른 원인으로 문제가 발생한 경우 이 콘솔 포트를 통해 접속한다.

 

- 콘솔 포트 연결

 이더넷 모양의 RJ45 콘솔 포트는 콘솔 케이블을 통해 연결된다. 이 케이블은 보통 장비와 함께 제공되며, USB 포트로 연결되는 것이 일반적이다. 오래된 컴퓨터에는 직렬 포트가 있을 수 있는데, 이 포트는 9개의 핀을 가진 포트이다.

 

 Mac 또는 Linux에서는 터미널을 통해 USB 콘솔 포트에 접속할 수 있다. 이를 위해서는 /dev 디렉토리에서 USB 또는 ACM 텍스트가 포함된 파일을 찾아 screen 명령어를 사용하여 접속한다. 이 과정은 시스템에 따라 다를 수 있으므로, 구체적인 방법은 OS의 도움말 파일을 참조해야 한다.

 

 Windows에서는 PuTTY를 사용하여 연결할 수 있다. PuTTY에서 연결 유형으로 "Serial"을 선택하고, COM1 포트를 설정한 후 연결을 시도한다.

 

- 콘솔 접속 후 화면

 콘솔로 접속하면 보통 화면이 비어 있다. 엔터 키를 누르면 로그인 프롬프트가 나타난다. 장비가 초기화된 상태라면, 사용자 이름 root를 입력하고 로그인한다. 기본적으로 비밀번호는 설정되지 않으므로 바로 프롬프트가 나타난다.

 

 콘솔로 접속하면 > 기호가 아니라 % 기호가 나타나는 것을 볼 수 있다. 이는 우리가 운영 모드에 있지 않고, 유닉스 셸에 직접 들어갔다는 의미이다. Junos는 실제로 FreeBSD 또는 최근에는 Linux 위에서 운영되기 때문에 콘솔에 들어가면 바로 유닉스 셸에 접속된다. 필요한 경우, cli 명령어를 입력하여 다시 운영 모드로 돌아갈 수 있다.

 

6. 관리 포트(Management Port)

 일부 Juniper 장비에는 "MGMT"라는 라벨이 붙은 인터페이스가 있다. 이 인터페이스는 "관리 인터페이스"라고 불리며, 실제로 CLI나 J-Web을 통해 장비의 인터페이스 목록을 보면 보통 fxp0 인터페이스로 표시된다. 일부 장비에서는 이를 em0라고도 부른다.

 

 이 인터페이스는 다른 인터페이스처럼 IP 주소를 설정하여 사용할 수 있지만, 다른 중요한 특징이 있다. 이 관리 인터페이스는 트래픽이 이 인터페이스를 통해 전달되지 않는다. 즉, 이 인터페이스를 통해 장비 자체에 접근할 수는 있지만, 네트워크의 다른 부분에 접근할 수 없으며, 네트워크 외부로 데이터를 전송할 수도 없다.

 

 이 인터페이스는 종종 "아웃오브밴드(out-of-band) 인터페이스"라고도 불린다. 이는 일반적으로 ISP와의 직접적인 연결을 위한 포트로, 네트워크 외부에 위치하게 된다. 이 말은, 네트워크가 중단되거나 구성 오류가 발생하더라도, 이 아웃오브밴드 연결을 통해 장비에 직접 접속할 수 있다는 의미이다. 따라서, 네트워크 전체가 다운되었을 때도, 아웃오브밴드 링크만 정상이라면 원격으로 Telnet이나 SSH로 장비에 접속하여 문제를 해결할 수 있다.

 

 

728x90