[리눅스마스터 1급] 이기적 이론서 14회차 정리 - 가상화 관리, 기타 서비스

🏁 이기적 이론서 학습 범위

  • PART 03 네트워크 및 서비스의 활용
    • CHAPTER 01 네트워크 서비스 (SECTION 06 가상화 관리 서비스, SECTION 07 기타 서비스)

가상화 관리 서비스

☑️ 가상화(Virtualization) 서비스

가상화의 특징

  • 개념
    • CPU, 메모리, 디스크와 같은 하나의 물리적인 자원을 여러 개의 논리적인 자원으로 나누거나 다수의 물리적인 자원을 하나의 논리적인 자원으로 통합하여 서비스하는 기술
  • 특징
    • 논리적인 자원 풀(Resource pool)에 기반한 효율적인 자원 활용, 물리적인 공간 절약, 데이터 및 서비스에 대한 가용성 증가, 중앙 집중 관리에 따른 보안성 향상 등의 장점을 제공한다.
    • 가상화 서비스의 특징

      특징설명
      공유(Sharing)다수의 많은 가상 자원들이 하나의 동일한 물리적 자원과 연결되어 있거나 가리키는 것
      프로비저닝(Provisioning)- 사용자의 요구사항에 맞게 할당, 배치, 배포할 수 있도록 만들어 놓는 것
      - 가상화 기반의 자원 할당은 물리적 단위보다 더 세밀한 조각 단위로 가능
      단일화(Aggregation)- 여러 개의 물리적 자원을 논리적으로 통합하여 하나의 자원으로 사용하도록 제공
      - 자원 전체 용량 증가 혹은 관리를 단순화
      에뮬레이션(Emulation)- 물리적인 특징이 다른 장치를 범용적인 모델로 인식하여 사용할 수 있도록 지원
      - 물리적 자원 자체는 원래부터 존재하지 않았지만 가상 자원은 어떤 기능들이나 특성들을 마치 처음부터 존재한 것처럼 가질 수 있다.
      절연(Insulation)- 하나의 가상화 서비스에 문제가 발생하여도 다른 서비스로 장애가 전이되지 않도록 관리
      - 가상화 자원들 또는 가상화 자원을 사용하는 사용자에게는 아무 영향을 미치지 않으면서 물리적 자원들을 교체

가상화 서비스 방식과 기술

  • 하드웨어 레벨의 가상화 방식
    • 전가상화(Full Virtualization)과 반가상화(Para Virtualization)로 구분한다.
    • VMM(Virtual Machine Monitor)이 물리적인 하드웨어를 가상머신의 하드웨어와 매핑하고, 게스트 운영체제의 자원 사용을 관리한다.
    • 특징

      구분설명
      전가상화- Intel-VT(Virtualization Technology), AMD-V 등 CPU의 물리적 가상화 지원 기능을 이용하여 하드웨어를 완전히 가상화한다.
      - 윈도우, 리눅스 등 다양한 게스트 OS를 수정없이 사용한다.
      반가상화- 게스트 OS는 하이퍼바이저에 하드웨어의 제어를 요청하여 동작한다.
      - 하이퍼바이저가 하드웨어 사용을 통제하므로 상대적으로 높은 성능을 제공한다.
      - 게스트 OS의 수정이 필요하여 리눅스 등 오픈소스가 주로 지원한다.
  • 호스트 기반 가상화(Host Based Virtualization) 방식
    • 호스트 운영체제에 VMM을 설치하고 가상머신을 생성한다.
    • VirtualBox, VMware Player 등이 있다.
    • 운영체제 가상화 방식
      • 하드웨어에 설치된 하나의 운영체제 위에 가상화 계층을 두어 가상화 서비스를 제공한다.
      • 컨테이너(Container) 방식과 하드웨어 에뮬레이션(Hardware emulation) 방식으로 구분된다.
        • 컨테이너 방식: 호스트 운영체제의 커널을 공유하며, 각각의 애플리케이션 별로 격리된 컨테이너를 생성한다. 대표적으로 Docker가 있으며, 경량화된 가상화 방식이다.
        • 하드웨어 에뮬레이션 방식 : 하드웨어를 소프트웨어 방식으로 에뮬레이션한다.
  • 리눅스의 대표적 가상화 기술
    • KVM과 XEN의 특징

      구분특징
      KVM- KVM은 인텔 CPU가 지원하는 VT-x 및 AMD-V를 기반으로 CPU 전가상화를 지원하는 기술로, 리눅스 커널 2.6.20부터 포함되었다.
      - KVM은 CPU 에뮬레이터인 QEMU를 이용하여 리눅스/윈도우 등 다중 가상머신을 운영한다.
      - 비록 CPU 반가상 기술을 지원하지 않으나 이더넷, Distk I/O, 그래픽 등은 반가상화를 지원한다.
      - 호스트 서버에서 보면 게스트 서버는 하나의 프로세스로 간주되기 때문에 오버헤더가 거의 없다.
      XEN- 1990년대 케임브리지 대학교에서 시작되어 만들어진 오픈소스
      - XEN은 CPU 전가상화, 반가상화를 모두 지원하는 하이퍼바이저(Hypervisor) 기반의 가상화 기술로 리눅스뿐 아니라 윈도우, Solaris 등을 지원한다.
      - CPU 반가상화 지원으로 다른 기술과 비교해서 물리적 서버 대비 효용성이 좋다. - 반가상화 구성 시 호스트와 다른 아키텍처의 게스트는 실행할 수 없다.
      - 전가상화 구성 시 QEMU 기반으로 동작한다.
    • 버추얼박스(VirtualBox) : 오라클 주도로 개발 및 배포하고 있는 x86 기반 가상화 소프트웨어
    • 도커(Docker): 하이퍼바이저를 사용하거나 게스트 운영체제를 설치하지 않고, 서버 운영에 필요한 프로그램과 라이브러리만 이미지로 만들어 프로세스처럼 동작시키는 경량화된 가상화 기술
  • 가상화 지원 소프트웨어 플랫폼
    • 가상화 서비스를 구성하고 관리할 수 있는 다양한 소프트웨어 플랫폼
    • 가상화 지원 소프트웨어 주요 플랫폼

      소프트웨어특징
      Cloudstack- 시트릭스(Citrix)에서 오픈소스로 공개한 클라우드 컴퓨팅 프로젝트로, 쉬운 사용성과 다양한 도입 사례가 장점이다.
      - KVM, XEN, XEN Server, VMWare 등의 하이퍼바이저를 지원한다.
      OpenStack- IaaS(Infrastructure as a Service) 형태의 클라우드 컴퓨팅을 구축할 수 있는 오픈소스 프로젝트로 다양한 커뮤니티 활동이 장점이다.
      - KVM, XEN, QEMU, LXC, VMware ESX/ESXi, PowerVM, Hyper-V 등의 하이퍼바이저를 지원한다.
      OpenNebula- 이기종 분산 데이터 센터 인프라를 관리하기 위한 클라우드 컴퓨팅 플랫폼
      - KVM, XEN, VMWare ESXI, Hyper-V 등의 하이퍼바이저를 지원한다.
      OpenShiftDockerKubernetes를 제공하는 컨테이너 애플리케이션 플랫폼
  • 가상화 지원 소프트웨어의 디스크 이미지 형식
    • 버추얼박슨느 전용 디스크 이미지 형식을 사용하며 다른 가상화 소프트웨어가 지원하는 디스크 형식도 함께 지원한다.
    • 가상화 디스크 이미지의 주요 형식

      형식설명
      VDI(Virtual Disk Image)버추얼박스에서만 사용할 수 있는 전용 디스크 이미지 형식
      VHD(Virtual Hard Disk)버추얼박스, Hyper-V, Xen에서 사용할 수 있는 디스크 이미지 형식
      VMDK(Virtual Machine Disk)버추얼박스, VMware Player에서 사용할 수 있는 디스크 이미지 형식

☑️ 가상화 관련 주요 명령어

명령어설명
virt-top가상화 현황을 top과 유사한 형식으로 출력
virsh텍스트 기반의 콘솔 환경에서 가상 머신을 관리해주는 도구로 생성, 시작, 재시작, 종료, 강제 종료 등의 기능을 수행
virt-manager가상 머신을 손쉽게 시작 및 종료하고, 가상 머신의 CPU 사용량, 호스트 CPU 사용량 등을 모니터링 할 수 있는 GUI 기반의 도구
libvirtLinux에서 가상화 자원을 위한 API, 데몬, 라이브러리, 관리 툴들의 모음
libvirtdlibvirt 관리 시스템의 서버 데몬으로 관리 도구와 통신하여 원격 도메인의 명령을 전달
xmXen을 관리한다.

기타 서비스

☑️ 슈퍼 데몬

슈퍼 데몬(Super Daemon)의 개요

  • 개념
    • 리눅스의 inetd 방식은 사용자 요구에 따라 필요한 서비스를 실행하고, 요청을 완료하면 서비스를 종료하여 시스템 자원을 효율적으로 사용한다.
    • inetd 와 같이 다른 서비스를 실행 및 관리하는 데몬을 슈퍼데몬이라고 한다.
    • standalone 방식과 비교하면 사용자 요청에 대한 처리 시간이 느리지만, 다양한 서비스를 제한된 시스템 자원으로 운영하기에 효율적이다.
    • /etc/inetd.conf 설정 파일을 이용하여 서비스 사용 여부를 지정하고, 접근제어(Access Control)을 위해 TCP Wrapper를 사용한다.
  • 최근 리눅스 서비스 관리 방식
    • xinetd 방식으로 이용하던 많은 서비스들이 단독 데몬으로 전환되거나 systemd에 의한 관리 방식으로 통합되었다.
    • systemd 방식은 socket 기능(ondemand activation)을 통해 효율적으로 메모리를 관리할 수 있고, 이에 따라 기존 xinetd를 통해 제공하던 rsync, telnet 등의 서비스가 systemd 방식으로 통합되었다.
    • TCP Wrapper를 사용하려면 xinetd 방식으로 서비스되거나 libwrap 라이브러리를 이용해야 한다.
      • 대표적으로 sshd의 경우 TCP Wrapper를 사용할 수 있다.
    • xined, TCP Wrapper를 지원하는 서비스가 제한적이므로 접근 제한이 필요한 경우 iptables, firewalld 사용을 권장한다.
  • xinetd의 특징
    • 리눅스 커널 2.4 버전 이후 최신 리눅스 배포판은 inetd를 확장한 xinetd를 사용한다.
    • xinetd의 기본 설정 파일은 /etc/xinted.conf 이다.
    • yum -y install xinetd 을 통해 xinetd를 설치한다.
    • /etc/xinetd.conf 의 주요설정

      주요 기본 설정내용
      instances- 동시에 서비스할 수 있는 서버의 최대 수 지정
      - UNLIMITED로 지정하면 제약 없이 동작
      log_type- 로그 기록 방식을 지정하며 SYSLOG와 FILE 두 형식을 지원
      - SYSLOG: SYSLOG syslog_facility [syslog_level] 형식을 따른다. - FILE: FILE 파일명 [limit 옵션]의 형식을 따르며, limit 옵션은 로그 파일 크기를 결정
      log_on_success- 서비 시작, 종료 및 접속 시 기록할 내용 지정
      - PID, HOST(원격 호스트 IP), USERID(원격 사용자 ID), EXIT(종료 시의 상태), DURATION(세션 지속 상태) 등의 값을 조합해서 사용
      log_on_failure- 서버가 시작될 수 없거나 접근 거부 시 기록할 내용 지정
      - HOST, USERID, ATTEMPT(실패한 시도) 등의 값을 조합해서 사용
      cps- 초당 최대 요청과 이를 초과할 경우 접속 제한 시간을 설정 - cps = 25 30 일 경우 초당 요구 사항이 25개 이상일 경우 30초 동안 연결 제한
      only_from이용 가능한 원격 호스트 지정
      no_access- 서비스를 이용할 수 없는 호스트를 지정
      - only_fromno_access에 함께 지정된 경우에는 서비스 이용 불가
      per_source- 동일한 IP 주소로부터 접속할 수 있는 최대 접속 수 지정
      - UNLIMITED로 지정시 제약없이 접속
      enabled- 사용할 수 있는 서비스 목록을 서비스명으로 지정
      - 각 서비스 설정에 disable=yes 로 설정된 경우 서비스 허가
      - ex. enabled=telnet
      disabled- 접근 금지할 서비스 목록을 서비스명으로 지정
      - enableddisabled 모두 설정된 경우 해당 서비스 접근 불가
      includedir /etc/xinetd.d각각의 서비스(daemon) 설정을 개별 파일에서 지정 - 이 속성 이용시 xinetd.conf에서 해당 서비스 설정 불가
    • /etc/xinetd.d/ 디렉터리에서 각 서비스들의 설정이 저장된다.
    • xinetd 방식 서비스의 주요 설정 항목

      설정 항목설명
      service서비스 이름으로 /etc/services 파일에 등록한 서비스 이름을 따름
      typeRPC, INTERNAL, UNLISTED와 같은 서비스 타입 지정
      - RPC: RPC 서비스 - INTERNAL: /etc/services에 서비스 이름이 등록되었으며 well-known 포트를 이용
      - UNLISTED: 표준 서비스가 아닌 경우 서비스 포트번호를 함께 지정
      disable설정한 서비스 사용 여부를 결정하며, no로 설정해야 사용할 수 있다.
      socket_type- TCP일 경우 stream, UDP일 경우 dgram으로 설정
      - IP로 직접 접근해야 하는 서비스는 raw 설정
      port서비스 포트 번호를 지정한다.
      wait- xinetd가 서비스 요청을 받을 경우 이후 요청을 즉시 처리할지, 기다릴지 결정한다.
      - no로 설정하면 즉시 다음 요청을 처리한다.
      user서비스의 실행 권한을 지정한다.
      server서비스 요청을 담당할 데몬 파일의 위치를 절대 경로로 지정한다.
      log_on_failure+ 혹은 -를 이용하여 /etc/xinet.conf 에서 지정한 log_on_failure 항목을 변경한다.
      access_timesaccess_times = 06:00-17:00 와 같은 형식으로 서비스 이용 가능 시간을 지정한다.
      redirect- 서비스를 다른 서버로 포워딩하도록 지정한다.
      - ex. redirect = 192.169.10.12
      nice서비스의 우선순위를 -20~19까지의 값으로 지정한다.
    • xinetd는 자체적으로 접근 제어 기능과 확장된 로깅 기능을 제공하며, TCP Wrapper를 이용한 접근 제어도 가능하다.

TCP Wrapper

  • 개념
    • inetd 데몬에 의해 관리되는 서비스는 TCP Wrapper에 의해 접근 제어를 할 수 있다.
    • 데몬 이름은 tcpd이다.
    • /etc/hosts.allow 파일과 /etc/hosts.deny 설정 파일을 이용하여 접근 제어를 제공한다.
    • 접근을 허가하는 호스트는 /etc/hosts.allow에 등록하고 접근을 거부하는 호스트는 /etc/hosts.deny 에 등록한다.
    • 설정파일은 hosts.allowhost.deny 순으로 적용된다.
      • hosts.allowhosts.deny 의 규칙이 중복되면 hosts.deny 규칙은 무시된다.
      • hosts.deny 에 접근을 금지할 목록을 지정한 후 hosts.allow 에 허가 목록을 지정한다.
  • TCP Wrapper 설정 파일
    • /etc/hosts.allow/etc/hosts.deny 의 설정 방법은 동일하다.
      • 하나의 줄에 하나의 규칙을 사용한다.
      • 2줄 이상으로 기술해야 할 경우 역슬래쉬()를 이전 줄의 마지막에 입력한다.
    • 설정 형식

        [데몬 목록] : [클라이언트 목록] : [셸 명령어]
      
    • TCP Wrapper 설정 파일의 주요 항목

      항목설명
      데몬 목록- 서비스의 실행 데몬 이름을 지정한다.
      - 콤마를 이용하여 여러 개의 데몬 이름을 지정한다.
      - 함께 사용하는 예약어는 별도로 설명
      클라이언트 목록- 접근 제어의 대상이 되는 호스트 이름 또는 IP 주소를 지정한다.
      - 사용자이름@호스트]의 형식으로 사용자를 함께 지정할 수 있다.
      - 콤마를 이용하여 여러 클라이언트를 지정한다.
      - 함께 사용하는 예약어는 별도로 설명
      셸 명령어설정한 항목과 일치할 경우 실행할 셸 명령어로 twist 방식과 spawn 방식을 사용할 수 있다.
      - twist 방식: 현재 실행 중인 프로세스의 실행 이미지를 교체하여 실행하는 방식, 명령 결과를 클라이언트에게 전송한다.
      - spawn 방식 : 새로운 자식 프로세스를 생성하는 방식, 명령 결과를 클라이언트에게 전송하지 않는다.
    • TCP Wrapper의 목록 지정을 위한 예약어

      예약어설명
      ALL- 데몬 목록, 클라이언트 목록 모두에 사용할 수 있다.
      - 모든 서비스 데몬 혹은 모든 클라이언트를 의미한다.
      LOCALlocalhost와 같이 . 을 포함하지 않는 모든 호스트를 의미한다.
      KNOWN클라이언트의 IP와 호스트 이름을 알 수 있는 경우
      UNKNOWN클라이언트의 IP와 호스트 이름을 알 수 없는 경우
      PARANOIDDNS lookup을 이용해 호스트 이름으로 IP 주소를 확인할 수 있는 경우
      EXCEPT예외 항목 지정
    • 셸 명령어의 주요 특수 문자

      특수 문자설명
      %a클라이언트의 IP 주소
      %A서버의 IP 주소
      %c사용자 이름, 호스트 이름, IP 주소 등의 클라이언트 정보
      %d서비스 이름
      %h클라이언트의 호스트 이름 또는 IP 주소
      %H서버의 호스트 이름 혹은 IP 주소
      %n클라이언트의 호스트 이름
      %N서버의 호스트 이름
      %u클라이언트의 사용자 이름
      %p서비스 데몬 프로세스 아이디
      %s데몬 프로세스, 호스트 이름, IP 주소 등의 서버 정보
      %%% 문자
    • TCP Wrapper 설정 사례
      • 192.168.9.0 네트워크 대역에 속한 모든 클라이언트의 접속을 허가한다.

          [hosts.allow]
          ALL : 192.168.9.0/255.255.255.0
        
      • telnetd를 제외한 모든 서비스에 대해 모든 클라이언트의 접속을 허가한다.

          [hosts.allow]
          ALL EXCEPT in.telnetd : ALL
        
      • www.youngjin.com 을 제외한 youngjin.com 도메인의 모든 호스트에 대해 telnetd 서비스 접근을 허가한다.

          [hosts.allow]
          in.telnetd : .youngjin.com EXCEPT \ www.youngjin.com
        
      • 192.168.9.7에서 ssh 서비스를 사용할 수 있도록 설정하되 syslog 를 기록한다.

          [hosts.allow]
          sshd : 192.168.9.7 : :severity local0.alert
        
      • 비록 hosts.allow에 설정되어 있으나 deny를 기술하여 접근을 금지한다.

          [hosts.allow]
          sshd : 192.168.9.2 : deny
        
      • 192.168.9.10 호스트가 telnetd 서비스를 사용하지 못하도록 하며, 접속 시도 시 메시지를 전달한다.

          [hosts.deny]
          in.telnetd : 192.168.9.10 : twist /bin/echo \ "%a is denied"
        

☑️ 프록시 서비스

프록시의 개요

  • 개념
    • 클라이언트와 서버 사이에 위치한다.
    • 요청과 응답 과정에서 데이터를 중계하는 역할을 담당한다.
  • 프록시 사용 목적
    • 서버의 데이터를 캐시(cache)하여 인터넷 전송 속도를 빠르게 하기 위해 사용한다.
    • 서버의 가용성(availability) 향상을 위한 부하분선(load balancing)에 사용할 수 있다.
    • 프록시 서버의 사용분야

      사용분야설명
      응답 속도 향상클라이언트의 네트워크 위치와 가까운 곳에 프록시 서버를 두고, 자주 사용하는 서버의 컨텐츠를 저장하여 빠른 응답속도를 제공한다.
      서버 부하 분산다수의 서버를 서버팜(Server Farm)으로 구성한 후 클라이언트의 요청이 있다면 정해준 규칙에 따라 특정 서버에 서비스 요청을 전달한다.
      접근 통제프록시 서버에 설정한 접근 통제 정책에 따라 클라이언트의 요청을 전달 혹은 제거한다.
      악성코드 유입 방지클라이언트가 요청한 컨텐츠를 전달하기 전에 프록시 서버에 설치된 백신 프로그램으로 악성코드 여부를 점검한다.

리눅스 프록시 서버(squid)

  • squid 서버의 특징
    • 리눅스에서 사용할 수 있는 대표적인 프록시 서버이다.
    • http://www.squid-cache.org
    • GPL(General Public License)를 따르는 오픈소스 소프트웨어이며 캐싱(Caching)을 통해 HTTP, FTP, gopher 등 서비스의 데이터 응답소스를 향상시킨다.
    • 기본 포트로 TCP/3128를 이용한다.
  • squid 서버의 설치
    • 패키지를 설치한다.

        $ yum -y install squid
      
    • squid 서버를 실행하고 서비스 실행을 확인한다.

        $ systemctl start squid.service
              
        $ systemctl -l status squid.service
      
  • squid 서버의 설정
    • /etc/squid/squid.conf 파일을 환경설정 파일로 이용한다.
    • /etc/squid/squid.conf 의 주요 옵션 항목

      옵션설명
      cache_dir [옵션]- 캐시 데이터가 저장될 경로명을 지정한다.
      - 옵션 : cache_dir ufs [경로][캐시 데이터 크기, MB][첫번째 디렉터리 수][두번째 디렉터리 수] - ufs : squid의 저장 포맷
      - ex. cache_dir ufs /var/spool/squid 100 16 256
      http_port [포트 번호]- 사용할 포트 번호 지정
      - ex. http_port 3128
      acl [별칭] src [IP 주소 대역]
      acl [별칭] dst [IP 주소대역]
      acl [별칭] port [포트 번호]
      acl [별칭] srcdomain [도메인명]
      acl [별칭] dstdomain [도메인명]
      - acl 구문으로 별칭을 지정한 후, 별칭에 대한 접근 권한을 설정한다.
      - http_access allow [별칭] : 접근 허가
      - http_access deny [별칭] : 접근 거부
      cache_mem [크기]- 캐시 크기를 설정한다.
      - ex. cache_mem 2048 MB
      cache_log [로그 파일경로]로그 파일을 지정한다.

☑️ DHCP 서비스

DHCP(Dynamic Host Configuration Protocol) 서비스의 개요

  • DHCP 서비스의 특징
    • 클라이언트 호스트가 사용할 IP 주소, 게이트웨이 주소, 네임 서버 주소 등을 자동으로 할당하는 서비스
    • 제한된 IP 주소 풀을 다수의 클라이언트에게 동적으로 할당하여 IP 주소 사용의 효율을 향상시킨다.
      • DHCP 프로토콜을 이용하여 IP 주소의 임대기간을 설정할 수 있다.
    • 저장 장치가 없는 호스트에게 IP를 자동으로 부여하고 네트워크 부팅을 지원하기 위해 사용한다.
      • BOOTP(Bootstrap Protocol)을 사용한다.
    • UDP 프로토콜과 브로드캐스트(Broadcast) 통신 방식을 이용한다.
  • DHCP 서비스 설치
    • DHCP 서비스를 설치한다.

        $ yum -y install dhcp-server 
      

DHCP 서비스의 설정

  • DHCP 서비스 설정 파일
    • 데몬인 dhcpd/etc/dhcp/dhcpd.conf 를 설정파일로 사용한다.
    • 설정 문장 뒤에는 반드시 세미콜론이 있어야 한다.
    • log-facility 를 통해 DHCP의 로그 메시지를 다른 곳으로 전달한다.

        $ log-facility local7;
      
    • 특정 호스트에 고정 IP를 할당할 경우 fixed-address 항목을 이용한다.
      • 형식 : host [호스트이름][설정내용]
        host ihd_pc {
        hardware ethernet 08:00:07:12:c0:a5;
        fixed-address 192.168.12.22;
        }
      
    • 클라이언트에 할당할 IP 주소의 대역을 서브넷과 넷마스크 정보와 함께 지정한다.

        subnet 192.168.10.0 netmask 255.255.255.0 {
        range 192.168.10.10 192.168.10.200;
        option domain-name "youngjin-dchp.com";
        option domain-name-servers name.youngjin.com;
        option routers 192.168.10.1;
        option broadcast-address 192.168.10.255;
        default-lease-time 600;
        max-lease-time 7200;
        }
      
    • dhcpd.conf의 주요 설정 항목

      설정 항목설명
      range클라이언트에 할당할 IP 범위 지정
      range dynamic-bootpDHCP 클라이언트와 BOOTP 클라이언트 함께 지원
      option domain-name도메인 이름 지정
      option domain-name-servers네임 서버 지정
      option routers게이트웨이 주소 지정
      option broadcast-address브로드캐스팅 주소 지정
      default-lease-time초(second) 단위로 임대요청 만료시간 지정
      max-lease-time초 단위로 클라이언트가 사용할 IP의 최대 시간 지정
      option subnet-mask서브넷 마스크 지정
      fixed-address특정 MAC 주소를 갖는 시스템에 고정적인 IP 주소 할당

☑️ VNC 서비스

VNC(Virtual Network Computing) 서비스

  • 특징
    • 비트맵 이미지 기반의 RFB(Remote Frame Buffer) 프로토콜을 이용하고 GUI(Graphic User Interface) 방식으로 원격 컴퓨터에 접속 및 사용하는 기능을 제공한다.
    • VNC 클라이언트는 VNC 서버의 화면을 전송받아 표시하고 마우스, 키보드 등 컨트롤 정보를 서버에 전달한다.
    • VNC 서버는 서버 컴퓨터의 화면을 공유하기 위해 사용하며 VNC 클라이언트로부터 전달받은 마우스, 키보드 신호를 통해 통제된다.
    • TCP/5900+[디스플레이 번호]를 기본 포트로 사용하며 동시에 여러 클라이언트가 접속하여 화면을 공유할 수 있다.
  • VNC 서비스 설치
    • yum 을 통해 VNC 서비스를 설치한다.

        $ yum -y install tigervnc-server
      

VNC 서비스의 설정과 실행

  • VNC 서버의 접속 방법
    • 세션 공유 방법독립 세션 방법으로VNC 서버에 접속한다.
    • 세션 공유 접속과 독립 세션 접속 방법

      구분특징참고사항
      세션 공유 접속로컬과 원격 호스트가 화면, 키보드, 마우스를 공유하는 방식암호, 알림 등의 정보도 함께 설정 가능
      독립 세션 접속별도의 세션을 이용하여 접속하는 방식환경설정 파일인 /usr/lib/systemd/system/vncserver@.service 에 관련 항목 설정
  • VNC 서비스 설정
    • VNC 서비스의 환경설정 파일은 /usr/lib/systemd/system/vncserver@.service 이다.
    • 설정 파일 안내에 따라 /etc/systemd/system/vncserver@.service 로 복사할 경우, 복사한 파일을 참조한다.
    • 설정 파일 내용 중 **** 를 원하는 사용자 계정명으로 변경한다.
      • master 계정명을 이용한다면 ExecStart=/usr/bin/vncserver_wrapper master %i 가 된다.
    • vncpasswd 를 통해 VNC 서버에 접속할 때 사용할 비밀번호를 설정한다.
      • 패스워드는 사용자 홈디렉토리 ~/.vnc/passwd 에 저장된다.
        $ su master
              
        $ vncpasswd
              
        $ ls ~/.vnc/passwd
      
  • VNC 서비스 관련 명령어

    명령어설명
    vncpasswdVNC 서버에 접근할 때 사용할 패스워드를 설정
    Xvncvncserver에 의해 실행되는 VNC 서버
    vncconfigVNC 서비스의 설정을 관리하고 제어
  • VNC 서비스 실행
    • 변경한 설정을 적용한 뒤, VNC 서비스를 실행하고 확인한다.

        $ systemctl daemon-reload # 변경한 설정 적용
              
        $ systemctl start vncserver@:1.service # VNC 서비스 실행
              
        $ systemctl enable vncserver@:1.service # 실행 확인
      

VNC 서비스 사용

  • VNC 클라이언트 설치
    • yum 을 통해 VNC 클라이언트(뷰어)를 설치한다.

        $ yum -y install vnc
        OR
        $ yum -y install tigervnc
      
  • vncviewer 실행과 VNC 접속 정보 입력
    • VNC 접속 정보는 [VNC 서버 주소] : [디스플레이 번호]의 형식을 이용한다.
    • 예시

        $ vncviewer
      
    • 설정한 비밀번호를 입력해서 VNC 서버(호스트)를 원격으로 이용한다.

☑️ NTP 서비스

NTP(Network Time Protocol) 서비스

  • 특징
    • 컴퓨터 간 시간을 동기화하는 NTP 프로토콜을 이용하여 NTP 서버와 시간을 동기화한다.
    • 협정세계시(UTC)를 기준으로 1/1000초까지 시간을 동기화할 수 있다.
    • UDP/123을 기본 포트로 이용한다.
  • NTP의 계급 구조
    • 클럭소스 수준의 계층적, 반 계층화(Semi-layered)된 시스템을 사용하고 이 계층 구조의 각 수준을 계급(Stratum)이라고 한다.
    • 계급 수준은 레퍼런스 시계에서 거리를 정의한다.
    • 원자시계 또는 GPS와 같은 장치인 0단계부터 가장 낮은 15단계의 계층으로 구성된다.
      • Stratum 16은 비동기 장치를 의미한다.
    • 숫자가 낮은 계급(단계)이 높은 계급(단계)보다 더 품질이 우수하다.
  • NTP 서비스의 설치와 설정
    • yum 을 통해 NTP 서비스를 설치한다.

        $ yum -y install ntp
      
    • systemctl 을 통해 NTP 서비스를 시작한다.

        $ systemctl start nttpd.service
      
  • NTP 서비스의 설정
    • /ect/ntp.conf 를 설정 파일로 이용한다.
    • 주요 설정 항목

      설정항목설명
      driftfile- NTP 데몬에 의해 자동 생성되는 driftfile의 위치를 지정한다.
      - driftfile은 시간 오차 평균값을 저장하여 시간을 정확하게 유지한다. - ex. driftfile /var/lib/ntp/drift
      restrict- NTP 서버에 접근할 수 있는 클라이언트를 제한한다.
      - ex. restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
      server- NTP 서버를 지정한다.
      - ex. server 0.centos.pool.ntp.org iburst
      keys- 대칭키 암호화를 위한 키 파일을 지정한다.
      - ex. keys /etc/ntp/keys

NTP 서비스 명령어

  • NTP 서비스 관련 주요 명령어

    명령어설명
    ntpdate- ntpdate [서버주소] 옵션으로 원격 서버와 시간을 동기화한다.
    - -d 옵션을 이용하면 원격 서버와 시간 차이를 확인할 수 있다. Debugging 모드로 동작하며 로컬 시간을 업데이트 하지 않는다.
    - ex. ntpdate ntp.youngjin.com
    ntpq- NTP 질의(query) 명령어
    - -p 옵션으로 연결된 서버의 상태를 출력한다.
    • help 를 통해 ntpq의 질의 명령어 목록을 확인한다.

        $ ntpq
        ntpq> help
      
    • ntp 서비스 설치에 문제 발생 시 chrony 를 이용할 수 있다.

      • NTP를 구현한 프로그램으로 최근 리눅스의 경우 기본 NTP 프로그램으로 사용된다.

chrony의 설치와 활용

  • chrony의 설치와 실행
    • yum 을 통해 chrony를 설치한다.

        $ yum -y install chrony
      
    • systemctl 을 통해 chrony 서비스를 시작한다.

        $ systemctl start chronyd
              
        $ sudo systemctl enable chronyd
              
        $ sudo systemctl stauts chronyd
      
  • chrony 서비스의 설정
    • /etc/chrony.conf 를 설정 파일로 이용한다.
    • 주요 설정 항목

      설정 항목설명
      pool- 공개된 서버들의 목록을 포함한 풀(pool)을 지정한다.
      - ex. pool 2.rocky.pool.ntp.org iburst
      - server 설정 항목을 이용해 개별 서버를 지정할 수 있다.
      stratumweight- 계급 당 보정해야 할 거리의 값을 지정한다.
      - ex. stratumweight 0
      driftfile- 시스템 클럭 보정 정보를 저장하는 파일을 지정한다.
      - driftfile /var/lib/chrony/drift
      makestep- 시스템의 시간이 크게 빠르거나 느릴 때 조정하는 방식을 지정한다.
      - ex. makestep 1.0 3 : 시스템 시작 후 처음 3회 시간 동기화에서 시스템의 시간과 NTP 서버의 시간 차이가 1초 이상일 경우 즉시 조정
      allow- NTP 서버에 접근 가능한 클라이언트 주소 범위를 지정한다.
      - ex. allow 192.168.0.0/16
      keyfile- 인증 시 사용할 키 파일을 지정한다.
      - ex. keyfile /etc/chrony.keys
      logdir- 로그 파일의 경로를 지정한다.
      - ex. logdir /var/log/chrony
      • /etc/chrony.conf 를 변경한 경우 systemctl restrat chronyd 로 chrony 서비스를 재실행한다.
  • chronyc 명령어 활용
    • chronyc를 통해 chrony 서비스를 제어할 수 있다.

        $ chronyc
              
        chronyc> help
      
    • chronyc 를 통해 NTP 소스 정보를 확인할 수 있다.

        $ sudo chronyc sources -v
      
    • chronyc 를 통해 시간 동기화를 즉시 실행할 수 있다.

        $ sudo chronyc -a makestep
      
    • chronyc 를 통해 NTP 시간 동기화를 확인할 수 있다.

        $ sudo chrnoyc tracking
      

© 2021. All rights reserved.

yaejinkong의 블로그