반응형



01. 개요



컴퓨터에서 사용하는 운영체제의 종류는 많다. 대부분의 컴퓨터를 사용하는 사용자들은 Microsoft Windows 계열의 운영체제를 사용한다. 


 



Statcounter GlobalStats(http://gs.statcounter.com)의 2017년 11월 ~ 2018년 11월 Operating System Market Share 데이터를 보면 Windows 계열의 운영체제가 81.09% 의 점유율을 차지하고 있다.


[그림1] Statcounter GlobalStats(http://gs.statcounter.com)의 2017년 11월 ~ 2018년 11월 Operating System Market Share 데이터[그림1] Statcounter GlobalStats(http://gs.statcounter.com)의 2017년 11월 ~ 2018년 11월 Operating System Market Share 데이터


아무리 Apple 사의 시스템이 강세를 보이고 있다하더라도, MS-DOS 시절부터 오랫동안 자리를 차지하고 있던 MS의 OS(Operating System) 점유율은 쉽게 깨질 줄을 모르고 있다.


[그림2] Statista(https://www.statista.com/statistics/915085/global-server-share-by-os/) Share of the global server market by operating system in the first half of 2018[그림2] Statista(https://www.statista.com/statistics/915085/global-server-share-by-os/) Share of the global server market by operating system in the first half of 2018


[그림2]는 2018년 반기 동안의 Server 운영체제 점유율을 나타내는 그래프이다. [그림1] 과 [그림2]의 조사기관이 다르긴하지만, 참고자료정도의 의미로 생각하면 된다. [그림2]의 데이터와 같이 서버 운영체제의 점유율 역시 MS Windows 가 71.9% 로 압도적으로 높다.

하지만, 데스크톱 운영체제 점유율[그림1] 대비 서버운영체제 점유율[그리2]을 살펴보면, 윈도우 다음으로 Linux OS(1.58% -> 12.9%) 가 서버 운영체제로 많이 사용됨을 확인할 수 있다.




Linux 운영체제는 무료로 제공되는 운영체제로 수많은 배포판이 존재하고, 대표적으로 레드햇 계열과 데비안 계열로 구분된다.(물론 Unix 의 무료버전인 BSD 나 기타 등등의 배포판들이 많이 존재하지만, 많이 사용하는 계열은 레드햇과 데비안 계열이다.)

서버 운영체제로 Linux 를 선택하게되었을 때의 가장 큰 장점은 운영체제 유지보수 비용이 발생하지 않는다는 것이다. 다만, 유지보수를 직접해야하며, 각종 보안관련 문제로의 위험을 감수해야한다. 그래서 대형 서버를 운용하는 곳에서는 지속적인 유지보수를 받을 수 있는 Windows 계열의 운영체제를 사용하게 되고, 소규모 서버를 운용하는 곳에서는 리눅스 계열을 사용하게 된다.

리눅스를 사용했을 때의 가장 큰 장점은 터미널로 빠르게 서버를 관리할 수 있다는 것이다. 물론, Windows 계열도 파워쉘같은 콘솔을 제공하고 있지만, 리눅스의 터미널만큼 강력하지는 않다.

리눅스를 설치하고, 원격으로 리눅스가 설치된 컴퓨터에 접속하기 위해서는 ssh(Secure SHell) 라는 Server 데몬이 설치되어 있어야 한다. 이번 포스팅에서는 데비안 배포판 계열 중 하나인 Linux Mint 에 SSH 설치하는 방법을 공유하려고 한다.



02. Openssh-server 설치



본래, SSH(Secure Shell)은 Unix 에서 사용하기 위해 Tatu Ylönen 가 개발했던 상용 소프트웨어이다. 이러한 상용 소프트웨어를 BSD 에서 사용하기 위해 1999년에 OpenBSD팀에 의해 개발된 SSH가 Openssh 이다. 따라서, Linux 운영체제에서 SSH를 사용하기 위해서는 Openssh 를 설치해야 한다.


[그림3] openssh-server 설치 #1[그림3] openssh-server 설치 #1


터미널을 열고, apt-get install 을 이용하여 openssh-server 패키지를 설치한다.


sudo apt-get install openssh-server




[그림4] openssh-server 설치 #2[그림4] openssh-server 설치 #2


[그림4] 는 openssh-server 가 설치되고 있는 화면이다. Linux Mint 를 정상적으로 설치하였다면, openssh-server 패키지는 별 어려움 없이 설치될 것이다.


[그림5] openssh-server 설정 #1[그림5] openssh-server 설정 #1


openssh-server 를 설치한 후에 /etc/ssh/sshd_config 파일에서 ssh의 각종 설정을 할 수 있다. 기본으로 사용해도 되지만, 필자인 경우 보안상 이유로 포트를 수정하여 사용하고 있다. ssh의 기본 포트는 22번인데, 22번 포트가 SSH로 잘 알려진 포트이다 보니, 각종 공격으로부터 자유롭지가 않다. 따라서, 22번 포트를 다른 포트로 수정하여 사용하는 것을 권장한다.


[그림6] openssh-server 설정 #2[그림6] openssh-server 설정 #2


[그림6]은 /etc/ssh/sshd_config 파일의 내용이다. 설정 내용 중 가장 처음에 보이는 내용이 Port 설정 부분이다. 라인의 맨 첫 부분에 # 이 붙어있으면 주석처리 된 것이다. 별도의 포트를 설정하지 않으면 22번을 기본으로 사용하겠다는 의미이다. 따라서, #Port 22 로 되어 있는 부분에서 #을 삭제하고 Port 122 이런식으로 수정을 한다. 그럼 ssh는 122번 포트로 작동을 할 것이다.


[그림7] ssh 서비스 재시작[그림7] ssh 서비스 재시작




/etc/ssh/sshd_config 를 수정하였다면, Linux System 을 재부팅 하거나, ssh 서비스를 재시작 해야 한다. ssh 서비스를 재시작 하는 방법은 [그림7]과 같다.


sudo /etc/init.d/ssh restart



03. SSH 접속(Tera Term 이용)



윈도우에서 리눅스의 SSH로 접속하는 방법은 여러가지가 있지만, 대표적인 것이 Terminal Emulator 를 사용하는 것이다. 주로 많이 사용하는 무료 Terminal EmulatorPuttyTeraterm 이 있다. 필자는 Putty 보다는 Teraterm 을 좋아하기 때문에 본 포스팅에서는 Teraterm 을 설치하고, ssh 접속하는 방법을 공유한다.


[그림8] Teraterm 홈페이지[그림8] Teraterm 홈페이지


[그림8]은 Teraterm Homepage(http://ttssh2.osdn.jp) 이다. Teraterm 은 일본의 테라시니 타카시(寺西 高)가 개발한 오픈소스 단말 에뮬레이터로 일본 도메인을 가지고 있다. 텍스트기반의 아주 단순한 홈페이지이다.

[Download] 링크를 눌러 Teraterm 다운로드 페이지로 진입을 한다.


[그림9] Teraterm 다운로드 페이지[그림9] Teraterm 다운로드 페이지


현재(2018년 12월 09일) 최신 릴리즈는 4.101 버전이다. 필자는 윈도우에 프로그램을 설치하는 것을 별로 좋아하지 않기 때문에 미설치 버전인 zip 파일을 다운로드 받았다.


[그림10] Teraterm 실행파일[그림10] Teraterm 실행파일


Teraterm 의 실행은 [그림10]과 같이 ttermpro 파일을 실행하면 된다.


[그림11] Teraterm 실행 및 ssh 접속[그림11] Teraterm 실행 및 ssh 접속


Teraterm 을 실행하고, 호스트(T) 에 리눅스 컴퓨터의 IP 를 입력한다.(참고로 리눅스에서 ip를 확인하는 방법은 ifconfig 명령어를 이용하면 된다.) TCP 포트(P)에 [그림6]에서 설정한 포트를 입력하면 된다. 별도의 설정이 없었다면 22번을 사용하면 된다.


 



[그림12] ssh 처음 접속(보안경고)[그림12] ssh 처음 접속(보안경고)


SSH에 처음 접속을 하게 되면, [그림12]와 같이 보안 경고 창이 뜨게 된다. 계속을 누르면 Known-host 목록에 sha256 키를 추가하게 된다.(다음 접속 부터는 보안 경고 창이 뜨질 않는다.)


[그림13] ssh 로그인[그림13] ssh 로그인


[그림13]과 같이 ID/PW 를 입력하고, 확인 버튼을 클릭한다.


[그림14] SSH 접속 성공 화면[그림14] SSH 접속 성공 화면


[그림14]와 같이 터미널을 사용할 수 있으면 접속이 성공된 것이다. 이젠 리눅스 컴퓨터의 모니터 없이도 원격으로 리눅스컴퓨터를 조정할 수 있게 되었다.





04. 마무리



필자는 수년간 리눅스 컴퓨터를 메인으로 사용해 왔다. 현재 회사에서도 메인컴퓨터로 Ubuntu 16.04 LTS 를 사용하고 있다. 그만큼 필자에게는 친숙한 환경인데, 최근 홈 서버의 백업 서버를 구축하면서 아무 생각없이 ssh를 설치하는데 설치하는 과정을 포스팅해보면 좋을 것 같아 포스팅을 해 본 것이다. 리눅스를 자주 사용하는 사용자들에게는 아주 간단한 방법의 설치이지만, 리눅스를 처음 접하는 사람들은 어려울 수도 있는 부분이다.

필자는 데비안 계열(우분투, 리눅스민트)의 리눅스 설치/사용법에 대해 포스팅을 준비하고 있다. 리눅스를 잘 모르는 사람들도 따라하기 쉽게 포스팅을 할 예정이다.

윈도우 환경보다 새로운 환경을 구성하고 싶은 사용자들은 리눅스를 한번 선택해 보는 것도 좋은 방법 중에 하나일 것이다.


2018년 12월 9일
Kunttang


반응형
블로그 이미지

매깡

- 각종 문의는 메일로 해주세요. 메일: soriel01@nate.com

,
반응형



00. 링크


[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #1

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #2 - V4L2로 스트리밍 하기

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #3 - RTSP 클라이언트 

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행 

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #5 - DDNS와 Port Forwarding 설정 <= (현재글)

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현

[DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기





01. 개요



1편 ~ 4편 에 소개한 것처럼 아날로그 영상을 RTSP 로 스트리밍 할 수 있게 되었다. 하지만, 실시간 감시 시스템을 잘 만들어 놓고서는 외부에서 접속을 하지 못하는 상황이 발생된다면, 반쪽짜리 감시시스템이 될 것이다. 따라서 본 포스팅에서는 공유기의 DDNS와 Port Forwarding 기능을 통해 외부에서도 휴대폰이나 컴퓨터로 CCTV 영상을 실시간으로 감시할 수 있도록 하는 방법을 공유하려고 한다. 단, 다음과 같은 전제조건이 있다.


1. DDNS 설정이 가능한 공유기(필자는 iptime 공유기를 이용하였다.)

2. Port Forwarding 설정이 가능한 공유기(대부분의 공유기가 지원을 한다.)

3. Internet 모뎀 뒷편에 설치된 공유기(Internet 모뎀은 DHCP를 통해 꼭!! 공인 ip 를 받아와야 한다.)


[그림1] Junwrap 네트워크 구성도[그림1] Junwrap 네트워크 구성도


[그림1]의 빨간색 박스 부분의 모양처럼 공유기가 위치해 있어야 한다. 


02. DDNS



사람들은 전 세계적으로 인터넷이라는 거대한 네트워크의 집합을 사용하게 된다. 이 네트워크에 참여를 하기 위해서는 IP 주소가 필요하다. 하지만, "255.255.255.255" 형식의 IPv4 모델은 현 시대에서는 ip주소의 부족 현상을 갖게 만든다. IPv4 기술이 1980년대에 설계된 것이다 보니, 그 때에는 지금과 같은 ip부족 현상을 예측하지 못했을 것이 당연할 것이다.




통신기술의 발전은 1인당 1개이상의 ip를 보유하게 만들었다. 현 시대에 살고 있는 사람들은 ip가 무엇인지 몰라도 ip를 보유하게 되었는데 대표적인 예가 스마트폰이다.

ip 부족 현상을 해결하기 위해 ip의 A클래스 부분에 특수 용도 주소(10.0.0.0, 172.16.0.0/12, 192.168.0.0/16)를 만들어 사설 네트워크로 사용할 수 있게 설계를 하기도 하였다. 이 경우가 우리가 사용하고 있는 공유기이다. 사설 네트워크는 1개의 인터넷 라인을 다수의 인터넷 라인으로 분배하여 사용하게 만드는 방법이다. 우리는 분명 인터넷 1회선을 통신업체에 신청하였지만, 공유기라는 장비를 통해 여러대의 장비를 인터넷에 참여 시킬 수 있다.

이러한 사설 네트워크는 1회선으로 다수의 장비를 운용할 수 있게 하는 엄청난 장점을 가지고 있지만, 내부 네트워크에서 외부네트워크로 나가게 되면 결국 해당회선의 ip를 이용하기 때문에 서버를 운용하기에는 적합하지 않은 구조가 되어버린다.

[그림2] 네트워크의 구조[그림2] 네트워크의 구조


[그림2]에서 살펴보면, 인터넷 업체에서 각 건물로 광케이블을 연결해 놓고, 건물에 각 호에서는 모뎀을 통해 공인 ip를 받아오는 구조가 된다. 이때, 모뎀 뒷단에 공유기를 연결하여 사설ip 영역을 구성하게 된다. 사설 ip 영역에서 인터넷의 사용은 가능하지만, 다른 곳에서 사설ip 영역의 특정 컴퓨터에 접근을 하기 위해서 외부에서는 참고할 수 있는 ip는 공인ip 뿐이 없다. 즉, 외부에서 [그림2] 의 192.168.0.4 컴퓨터에 접근을 시도하기 위해서는 211.205.43.2 라는 ip를 통해 들어와야한다는 것이다.

여기서 한 가지 문제가 발생한다. 101호에서 받는 공인 ip인 211.205.43.2 주소가 DHCP 동작에 의해 변경이 된다는 것이다. 부족한 ip 를 효율적으로 사용하기 위해 ISP 에서 주기적으로 ip 를 재할당하고 있는데 이렇게 되면 외부에서 찾아올 수 있는 주소가 바뀌게 되어 정상적으로 서버를 운용할 수 없게 되는 것이다.




이런 불편한 점을 해결하기 위해서 각 공유기를 개발하여 판매하는 업체에서는 DDNS(Dynamic Domain Name System) 라는 기능을 제공한다. DDNS 서비스는 공유기에 연결된 모뎀의 공인 IP를 공유기 업체의 sub 도메인에 연결시켜 주는 서비스이다. 연결만 해 주는 것이 아니라, 모뎀의 공인 IP 가 업데이트되었다는 것을 공유기가 인식하게 되면 공유기는 DDNS 서비스로 업데이트된 IP 를 알려주게되고, 서브도메인에 새로운 ip 를 업데이트 해 주게 된다. 따라서, DDNS의 도메인만 알고 있다면 외부에서 집의 공유기 까지의 연결이 가능해 지는 것이다.


[그림3] DDNS 의 간략 설명[그림3] DDNS 의 간략 설명


[그림3]은 DDNS를 설명하기 위해 간단히 그림으로 설명해 놓은 자료이다. 


1. 모뎀에서 211.205.43.2 ip를 통신회사로부터 받아와 공유기에 할당해 준다.

2. 공유기는 DDNS 서버에 kunttang 라는 이름의 공유기 ip는 211.205.43.2 라고 업데이트 요청을 한다.

3. DDNS 서버는 kunttang 는 211.205.43.2 ip가 연결되어있다고 DB에 저장한다.

   =======> 여기서 만약, 모뎀의 ip가 변경되면 공유기는 다시 2 ~ 3 과정을 진행하게 된다.

4. 어떤 외부 컴퓨터가 http://kunttang.iptime.org 를 입력한다.

5. 외부컴퓨터에 연결된 DNS 로부터 iptime.org 의 ip(142.111.22.11)주소를 응답받는다.

6. 142.111.22.11 주소로 요청한다.

7. DDNS 서버는 kunttang 의 서브도메인을 붙여 211.205.43.2 의 주소로 연결을 요청한다.



03. Port Forwarding



네트워크에서는 ip라는 주소를 제공하고 있지만, 실제 데이터의 이동 통로가 존재 한다. 이를 Port(포트)라고 한다. 필자가 포트를 설명하기 위해 설명하는 예가 있는데 바로 집이다.  "경기도 평택시 xxx동 aa번지" 라는 집에대한 주소가 있다면, 이 집에는 출입문이 1개 이상일 것이다. 주소가 ip가 되는 것이고, 건물의 문이 바로 포트가 되는 것이다.

네트워킹에서의 포트는 16bit Unsigned Integer형식으로 0~65535 까지 사용할 수 있다. 즉, ip 하나당 65535개의 포트가 존재한다는 것이다.

[그림2]에서 101호의 공인ip 211.205.43.2 는 0~65535 의 포트를 가지고 있는데 이는 공유기와 통신을 할 수 있는 65535개의 포트가 된다. 공유기에 연결된 사설 ip 를 가진 각 장치들도 65535개의 포트를 사용할 수 있게 된다.




Port Forwarding 이라는 기술을 사용하게 되면, 공인ip의 특정 포트와 사설ip 의 특정 포트를 연결시킬 수 있게 된다. 

예를들어 211.205.43.2 의 80포트를 통해 들어온 패킷을 192.168.0.3 의 9000번포트에 연결시켜놓게 되면 211.205.43.2:80 은 항상 192.168.0.3:9000 에 전달 되어지는 것이다.

DDNS와 Port Forwarding 을 적절히 이용하게 되면 집에서도 간단한 서버를 운용할 수 있게 되어진다.


[그림4] Port Forwarding[그림4] Port Forwarding


[그림4]은 Port Forwarding을 설명하기 위해 간단히 그림으로 설명해 놓은 자료이다. 


1. 외부에서 211.205.43.2 ip로 요청이 들어온다.

2. 모뎀은 공유기로 패킷을 전달한다.

3. 공유기는 포트를 확인하여, 공유기에 연결된 해당 기기로 패킷을 전달한다.
   ==> [그림4]에서 보면 80포트는 192.168.0.4:8080 으로 연결이 되어 있다.
   ==> 192.168.0.4 ip를 가진 기기의 8080포트로 패킷을 전달해주는 것이다.



04. 공유기 설정(DDNS 와 Port Forwarding)



대한민국에서 가장 많이 사용하고 있는 ipTime 공유기를 이용하여 DDNS 와 Port Forwarding 설정 방법을 설명하려고 한다. 위에서 설명한 DDNS 와 Port Forwarding 의 개념을 이해했다면 다른 공유기로도 충분히 설정할 수 있을 것이다.


[그림5] ipTime 관리도구 접속화면[그림5] ipTime 관리도구 접속화면


[그림5] 는 ipTime 의 관리도구 접속 화면이다. 별 다른 설정 없이 ipTime 공유기를 연결했다면, http://192.168.0.1 이 관리페이지 기본 주소이다.

관리도구 아이콘을 클릭한다.


[그림6] ipTime 공유기의 DDNS 설정화면[그림6] ipTime 공유기의 DDNS 설정화면


[그림6] 은 ipTime 관리페이지의 DDNS 설정 화면이다. 왼쪽 메뉴탐색기에서 "고급설정 -> 특수기능 -> DDNS 설정" 으로 진입 한다.

ipTime 공유기에서는 DDNS를 간편하게 등록할 수 있다. 사용하기 원하는 호스트 이름과, 사용자 ID(E-mail 주소)를 입력하게 되면 설정이 완료된다. 물론 호스트 이름은 다른 사람이 먼저 등록한 String 이라면 등록이 불가하다고 팝업이 표시된다.




정상 등록이 되면 접속상태에 정상등록이라고 표시가 된다. 아주 간단한 과정으로 DDNS 설정이 완료되었다.


[그림7] ipTime 공유기의 Port Forwarding 설정화면[그림7] ipTime 공유기의 Port Forwarding 설정화면


[그림7] 은 ipTime 관리페이지의 Port Forwarding 설정 화면이다. 왼쪽 메뉴탐색기에서 "고급설정 -> NAT/라우터 관리 -> 포트포워드 설정" 으로 진입 한다.

오른쪽 하단에 규칙을 설정하면 된다. [그림7]을 기반으로 설명해 본다.

1. test 라는 규칙이름을 추가한다.

2. 연결될 내부 IP를 지정한다.

3. 외부포트는 요청이 들어오는 포트이다.(18554로 설정하였다.)

4. 내부포트는 내부 IP에 요청할 포트이다.(8554로 설정하였다.)

  ==> 외부에서 나의 공인 IP의 18554 포트로 연결요청이 오면, 192.168.219.112:8554 로 연결한다.



05. 마무리





앞에 01~03 까지 이론적 설명은 아주 길고 어렵게 설명을 하였지만, 공유기에서의 설정은 허무할 정도로 너무 간단하다. 하지만, 기능의 의미를 모르면 아무리 좋은 것이라 하더라도 사용하질 못한다. 아직까지도 공유기를 사용하는 사용자들의 대부분은 공유기의 공장 출하 값을 기본으로 사용하는 경우가 대부분이다. 이럴 경우 보안에 아주 취약하기도 하지만, 비싼 돈을 지불하고 구입한 제품을 제대로 활용하지 못하는 경우이기도 하다.

필자는 DDNS를 등록하고, 카메라의 ip와 포트를 포트포워딩 설정을 통해 외부와의 연결을 설정하였다. 이젠 실시간 감시 설정은 모두 완료된 것이다.

다음 편에서는 ffmpeg와 crontab을 활용하여 1분단위로 끊어 스트리밍 영상을 녹화하는 방법에 대해 설명할 예정이다. 여기서, 블랙박스의 녹화기능 처럼 특정일이 지난 영상은 자동으로 삭제하는 방법도 함께 공유할 예정이다.


1편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #1)

2편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #2 - V4L2로 스트리밍 하기)

3편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #3 - RTSP 클라이언트)

4편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #4 - CVLC 자동실행)

6편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #6 - ffmpeg와 crontab을 이용한 녹화 기능 구현)

7편 링크 : ([DVR] 집에서 놀고 있는 컴퓨터로 DVR을 만들어보자 #7 - 녹화 영상에 시간 넣기)


2018년 12월 3일
Kunttang

반응형
블로그 이미지

매깡

- 각종 문의는 메일로 해주세요. 메일: soriel01@nate.com

,