서두 ( 넋두리 )

ESXi 서버를 운영할 때, 사실 ESXi 클라이언트 프로그램만 있다면, 큰 문제 없이 사용할 수 있다. Guest PC의 제어는 물론 Console창까지.. 다양한 기능을 제공하는 종합 관리 도구라고 볼 수 있다.
이미지 20140723_130018_001

하지만, 이 ESXi 서버가 방화벽안에 들어가 있어, 외부에서 접속을 하려면, 생각보다 난제점이 많다. 다양한 기능을 제공하는 만큼 다양한 네트워크 리소스가 필요한데, 아래와 같은 다양한 네트워크 포트를 열어야 한다.

이미지 20140723_104203_001

사용할 네트워크의 종류를 나눠서 필수적으로 열어야 하는 포트만 정리하여 구성할 수 있지만, 그것도 1대의 ESXi 서버에서만 해당되고, 여러 대인 경우에는 불가능 할 수 밖에 없다. 최종적으로는 VMWare 측에 vSphere 를 한꺼번에 관리하는 서버 라이센스를 구매해서 관리하는 방법 밖에는 없다.

하지만, 가난한 작은 회사에서 2~3대의 ESXi 서버를 관리하기 위한 솔루션으로 구매하기는 그리 쉽지 않다. ( 상신 올려도 승인 받기까지의 과정은 정말이지… )

차선으로 생각한 방법은 아래와 같다.

ESXi서버네트워크

인터넷 공유기에 ESXi 서버 두대와 별도 PC를 연결한다. 그래서 별도 PC에 ESXi 클라이언트를 설치하고, 해당 PC의 원격 연결 (MS-RDP : MS 원격데스크톱)을 통해서 두대의 EXSi 서버를 관리하게 끔 했다. 즉 원격에서는 3389 포트를 사용하는 원격 데스크톱을 이용해 접속하여, 각각 존재하는 ESXi 서버를 관리하고, 그 안에서 Console 을 열어 관리한다.

만일 GUEST PC가 Windows라면, 마찬가지로, 각 Guest PC별로 MS-RDP 포트를 열고, 공유기에서도 그에 맞게 포트를 열어 관리했다. (물론 3389대신 다른 포트로 Open )

이처럼 했더니, 원격에서도 나름 원활하게 각 가상 PC들을 관리하는데 그나마 수월하게 할 수 있었다.

문제 발생

사실 운영에는 큰 문제가 없었는데, 갑자기 Linux를 Guest PC로 추가하려다 보니, 이게 또 다른 난제를 불러왔다. ESXi 관리 PC를 원격에서 연결한 상태에서 Console을 띄우니, 상당히 불편함을 가져왔다. 단순히 운영체제를 설치하는 정도면 그냥 저냥 참고 진행하면 되는데, 실제 운영체제 내부를 사용하려 할 때는 무척 불편함을 느낄 수 있다. 화면이 껌뻑임도 문제였고, 마우스나 키보드 잠김은 정말이지 짜증이 발생한다.
Windows 기반의 Guest PC는 그냥 MS-RDP 포트를 열어 직접 연결을 하면 되지만, Linux의 경우에는 그렇게 되기 힘들다. 물론 MS-RDP를 흉내넨 xRDP라는 것도 있지만, 매번 Guest OS가 Linux일 때마다 설치하기에는 한계가 있기 때문에, 이 작업은 아니다 싶다.

VNC

Open-Source로 원격에서 GUI 화면을 그대로 접속할 수 있는 Console 개념의 프로토콜이다. Open되어 있는 프로토콜이라, 이 유형을 가지고 제작된 제품군들은 생각보다 많다. 당연히 Linux 계통의 원격 접속은 대부분 이 VNC를 통해 접속하여 관리하게 한다.

다양한 제품군들이 있지만, 그 중 TigerVNC를 사용한다. 다른 여러 제품들이 있지만, 상용으로 전환된 제품도 있고, 성능상 이슈가 발생되는 제품들도 있다. 그 중 이 tigervnc는 현재도 지속적으로 업데이트되고 있으며, Linux 진영에서도 밀어주고 있는 제품이라고 한다.

http://tigervnc.org/

여기서는 VNC 서버는 ESXi 가 되고, 클라이언트만 있으면 된다.

준비 작업

이제 VNC를 통해 원격에서 해당 콘솔 화면을 열 수 있도록 한다. 이를 위해서는 몇 가지 준비 작업 및 권한들이 필요하다.

  1. 방화벽 관리
    인터넷 공유기나, 기타 방화벽 관련된 서비스 안에 ESXi 서버가 있는 상태에서 외부에서 접근할 때는 반드시 방화벽 관련 권한이 있어야 한다. 특정 포트를 열어주어야 하기 때문에, 그에 상응 하는 기술 능력이나, 접근 권한이 필요하다.
  2. SSH 접속 프로그램
    ESXi 서버 내부에 들어가 접근해야 하는데, 전용 클라이언트 도구가 아닌, Linux 로 된 EXSI 서버 자체를 접속해야 된다. 이 때문에, Telnet 기반의  SSH 접속 프로그램이 필요하다. 다양한 SSH 접속 프로그램이 있지만, 그중 무료로 제공되는 작은 제품인 Putty ( http://www.chiark.greenend.org.uk/~sgtatham/putty/ ) 을 사용하면 된다.
  3. ESXi 클라이언트
    기초적인 설정 작업은 EXSi 클라이언트를 통해서 진행하게 된다.

 

작업 ( VNC 활성화  )

기본적으로 설치는 되어 있지만, VNC에 대한 활성화가 안되어 있다. 이를 위한 몇 가지 작업을 수행해야 한다.
이 작업은 VNC로 연결할 VM 마다 해줘야 한다.

  1. EXSi 클라이언트를 실행한다.
    이미지 20140723_130018_001
  2. 설정을 할 VM을 선택 한 뒤, Edit Settings를 선택해서 Virtual Machine Properties 화면으로 들어간다.
    ( 단, 이미 실행 중인 VM인 경우 Shutdown 하고 난 뒤에 해야 한다.! )
    이미지 20140723_130158_001
  3. Virtual Machine Properties 화면에서 2번째 탭의 “Options” 안에 있는 General을 선택 한 뒤, “Configuration Paramters .. “ 버튼을 클릭한다.
    이미지 20140723_125723_001
  4. Configuration Paramters 창에서 하단에 위치한 “Add Row” 버튼을 눌러 새로운 줄을 생성한 뒤에, 다음 내용을 넣도록 한다.
    이미지 20140723_125920_001
    1. Name : RemoteDisplay.vnc.enabled
      Value : TRUE
    2. Name : RemoteDisplay.vnc.port
      Value : {원하는 연결 포트 번호 : 여기서는 15900 }
    3. Name : RemoteDisplay.vnc.password
      Value : {원하는 접속 암호 : 여기서는 P@ssw0rd

만일 VNC를 활성화할 VM이 더 있다면, 해당 VM을 선택해서 “2”번 단계를 반복하면 된다.

작업 ( SSH 연결 기능 활성화)

ESXi 서버를 SSH로 연결이 불가능한 경우를 위해서 작업하는 내용으로, 기존에 SSH로 연결할 수 있도록 설정되어 있다면 다음 작업으로 넘어간다.

  1. ESXi 클라이언트를 실행한다.
  2. Inventory 트리에서 최상위 노드를 선택한다.
    그리고 오른쪽 탭에서 Configuration을 선택한다.
    이미지 20140723_132737_001
  3. Configuration 탭 내에서 “Security Profile”을 선택한 뒤에 Services 영역에 위치한 “Properties”를 선택한다.
    이미지 20140723_132934_001
  4. Service Properties 창에서 SSH를 선택 한 뒤, Options를 선택한다.
    이미지 20140723_133125_001
  5. SSH Options 창에서 “Start” 버튼을 눌러주고 “OK” 하면 된다. (만일, 이후에도 계속 SSH 서비스를 이용할 예정이면, “Start and stop with host”를 선택하면 된다. )
    이미지 20140723_141507_001

작업 ( 방화벽 Open )

기본적으로 VPN을 위한 방화벽이 열려있지 않다. 그래서 이를 위해 별도로 방화벽을 열기 위한 구성을 해주어야 한다.

  1. SSH를 통해 ESXi 서버를 연결한다. (Putty 같은 SSH 연결 프로그램 사용 )
    이미지 20140723_141942_001
  2. root 계정으로 로그인한다
    이미지 20140723_142043_001
  3. firewall 디렉토리로 이동한다.
    cd /etc/vmware/firewall
  4. 다음 명령을 넣어, vnc.xml 파일을 만들어 연다.
    cat > vnc.xml
  5. 이제 다음 XML 파일 내용을 붙여 넣은 뒤, Ctrl + D를 눌러 저장한다.
    ( 안의 내용 중, port의 Begin과 End에 들어간 부분이 Open될 Port 번호의 시작과 끝 이므로, 적절하게 변경한다. )

  6. 다음 명령을 넣어, 저장한 XML 파일을 EXSi 서버에 등록한다.
    esxcli network firewall refresh
  7. 이제 EXSi 클라이언트로 돌아와, Host 최상위 노드 –> Configuration 탭 –> Security  Profile을 열어서, 하단에 위치한 Firewall을 보면, vnc라는 항목이 나타난다. ( 안나타났다면, XML 파일 오류일 가능성이 크므로, 3번 단계 부터 하나씩 다시 확인해봐야 한다.

 

작업 ( 방화벽 Open )

이 작업은 공유기 및 방화벽 S/W의 구성에 따라 다르므로, 별다른 언급은 하지 않는다. 다만, 해당 공유기에 맞게 위에서 설정된 Port 번호에 해당되도록 Open 해주어야 한다.

현재 필자의 경우 15900 ~ 15910 까지 Open되어 있어, 그에 맞게 방화벽을 수정했다.

 

연결 해보기

VNC 연결은 오로지 화면 콘솔만 제공되기 때문에, 실질적으로 연결을 하려면, VM 자체를 시작해야 한다.

  1. VNC로 연결할 VM을 실행한다.
  2. TightVNC를 실행한다.
  3. VNC 서버에 방화벽 밖에서 접근이 가능한 IP 주소를 입력하고, “:”를 사용하여 포트번호까지 입력한다.
    예를 들어 방화벽 바깥의 실제 IP가 121.223.10.5 이고, VNC Port를 15900으로 설정했으면,
    121.223.10.5:15900 이라고 주소 창에 입력하면 된다.

  4. Password 입력 창에 앞서 설정한 암호 값을 넣는다.

 

최종적으로 연결이 성공되면 아래 화면같이 현재 VM이 떠 있는 화면이 그대로 노출된다.


 

 

결론

처음 출발은 MS-RDP가 안되는 리눅스 콘솔들을 접속하는 방법 때문에 찾아서 적용해봤는데, 해보고 보니, 각종 Geust OS를 설치할 때도 유용하다는 생각이다. VNC 프로토콜 자체가 보안에 취약한 문제점이 있지만, 간단 간단하게 접근해서 사용한다면 나쁜 선택만은 아닌 것 같다. 만일 보안이 우려된다면, 방화벽 내에 VNC을 구성해서 연결하는 것도 방법일 것 같다.

VM 설정이나 변경 작업에는 유용하지 않다. 결국 방화벽 내에 EXSi 클라이언트가 동작하는 관리 PC는 어쩔 수 없이 존재해야 한다. 하지만, 외부에서 콘솔로 해당 PC의 화면을 그대로 보려고 할 때는 정말 유용한 것 같다.

글 내용 중, 일부 노출되기 꺼리는 부분을 모자이크 처리를 한 점에 대해 양해의 말씀을 드린다. 다만, 모자이크 내용으로 인해 설정이 어렵거나 힘든 부분은 없으므로, 모자이크 부분은 그냥 무시하시면 된다.

728x90

+ Recent posts