집 밖에서 집 컴퓨터로 원격 접속하기 2탄 - DNS 서비스 이용하기

Taehyeong·2022년 5월 3일
2
post-thumbnail

머릿말

지난 글에서는 네트워크에 대한 설명을 적다보니 글이 너무 길어진 것 같다. 이번엔 원격접속을 위해 해야할 일을 정리하고 차례차례 소개하는 방법을 사용하려고 한다.
원격에서 접속할 때 어려운 점은 외부 컴퓨터가 집 컴퓨터에 접속할 수 있는 정확한 IP주소를 알기 어렵다는 점, 그리고 필요한 경우 설정해야하는 일부 라우터 세팅이 어렵다는 점이다.
우선 외부에서 안정적으로 접근이 가능하도록 하는 방법 먼저 알아보자.

시작하기에 앞서

가정에 설치된 개인 네트워크 장비를 설정하는 경우 원격접속을 위한 설정을 한다고 크게 문제 될 것은 없으나, 공용 네트워크기기 설정을 바꾸려고 시도하는 것은 자칫 보안 위협으로 여겨질 수도 있으니 반드시 개인 소유의 공유기(라우터)를 사용하는 경우에만 설정을 바꾸도록 하자. 통신사가 집에 설치해준 와이파이 기기도 대여해준 기간동안 사용자 소유이므로 설정을 바꿔도 괜찮다.


해야 할 일

  • 본인 명의 DNS 확보
  • DDNS서비스 세팅
  • 라우터 세팅(port forwarding 또는 port mirroring, DMZ 등등)

가정

  • A.사용하는 인터넷 서비스가 동적IP주소를 할당한다.
  • B.라우터(공유기)가 컴퓨터와 연결되어 있다.

위 가정을 토대로 설명을 드릴 것이다. 만약 A나 B에 해당하지 않는다면 해야할 일이 줄어드는 셈이니 오히려 좋다.

A, B 모두 해당되지 않는 경우

축하드린다. 이 독자님들은 아래에 나올 IP주소 관련 설정을 생략하고 포트 설정만 해주면 된다. 이후엔 원격 접속 프로그램에 본인 컴퓨터가 할당받은 공용IP주소와 포트번호를 입력하기만 하면 된다.

$ ssh < 컴퓨터의 공용IP주소>:<포트번호>

윈도우 컴퓨터에 접속하는 경우 윈도우에 내장된 Remote Desktop 기능을 주로 사용한다. 내장된 서비스인 만큼 서비스 품질이 좋은 편이다. TeamViewer를 사용하면 이 글에 다루는 여러 설정이 필요없다는 장점이 있다. Chrome Remote Desktop도 원격 연결이 가능하지만 원격지원을 위한 서비스이므로 양쪽 컴퓨터에 사용자가 있어야만 원활한 사용이 가능하다.

mac OS, Linux환경으로 원격접속을 하기 위해선 ssh를 주로 사용한다. CLI(Command line interface)가 싫다면 Screen sharing 기능을 사용해 GUI(Graphic user interface) 환경으로 접속이 가능하다.

윈도우를 CLI 환경에서 접속하고 싶다면 OpenSSH 같은 프로그램을 설치하여 SSH 서버를 활성화 시킨 뒤에 접속해야 한다.

내 컴퓨터는 동적 공용IP주소를 할당받는가? (A 에 해당되는지)

일반적으로 인터넷서비스는 동적IP주소를 할당하므로 A에 해당할 확률이 높다.
동적 IP주소를 제공받고 있는지 확인하기 위한 방법은 다음과 같다.

Mac OS

시스템 설정 -> 네트워크 -> 고급 -> TCP/IP 에 들어가 IPv4 설정 칸을 확인한다. DHCP 사용중 이라고 표기된다면 동적 IP주소를 사용중인 것이다.

Windows 10

이 글에서 (5)의 세부정보 확인 그림까지 따라 갔을 때 DHCP 사용부분이 예 로 돼 있으면 동적 IP주소를 할당받은 것이다.

단 IP주소가 192.168 로 시작되거나 서브넷 마스크가 255.255.255.0인 경우라면 라우터가 할당해준 개인 동적IP주소이다. ISP(인터넷 통신사)가 제공한 공용 IP주소가 동적주소인지 확인하기 위해서는 컴퓨터와 연결된 라우터의 설정창에서 확인해야 한다.

라우터 설정창에 접속하기

요즘 판매되는 라우터(또는 공유기, 와이파이라고도 불림)의 대부분은 인터넷 브라우저로 접근가능한 설정페이지를 제공한다. 라우터 지식이 있다면 ID와 PASSWARD를 입력하여 로그인 하면 되고 잘 모르는 경우 라우터를 잘 살펴본 뒤 아래의 설명에 따라 라우터 설정창에 접속하면 되겠다.

IPTime 공유기(라우터)인 경우

공유기 로그인 페이지에 접속하면 로그인과 패스워드를 입력하라는 화면이 나온다. 개인이 구매해 설치했다면 처음 사용시 아이디와 비밀번호를 설정하였을 것이다. 만약 다른 사람이 설치하였다면 해당 라우터의 권한을 갖고있는 분께 접속을 부탁드려야 한다.
만약 비밀번호를 까먹었다면 공유기를 초기화하여 다시 아이디 생성과정을 거치는 방법도 있다. 본인의 공유기인 경우에만 필요한 경우 초기화를 진행하자.

로그인을 잘 하였다면 설정 아이콘을 눌러 더 자세한 설정을 할 수 있는데 첫 페이지에 DHCP로부터 할당받았는지에 대한 정보도 함께 보여진다.

SKT공유기(라우터)인 경우

공유기 로그인 페이지에 접속하면 아이디, 패스워드, 캡챠 문자를 입력해야 한다. 다른 블로그에서 SKT공유기에 로그인 하는 방법이 정리되어 있어 로그인할 때 참고하면 될 것 같다.

접속에 성공했을 경우 첫 페이지에 WAN 설정정보의 IPv4연결방법 란을 보면 된다.

그 외

통신사에서 제공하는 라우터는 보통 물리적 접근이 가능할 경우 SKT의 라우터처럼 아이디, 패스워드를 알아낼 수 있도록 배려해놓았다. 인터넷에 OO사 공유기 로그인 방법 이라고 검색하면 약간의 수고를 통해 로그인에 성공할 수 있을 것이다.

A에 해당하는 경우 해결방법

확인하면 공용IP주소의 십중팔구 DHCP로부터 할당을 받은 동적IP주소일 것이다. DDNS서비스 를 사용해 외부에서 바뀌는 IP주소에 안정적으로 접근 가능하도록 해주어야 하겠다. DDNS에 대한 설명은 1탄 설명을 참고하자.

IPtime 공유기를 사용하는 경우

고맙게도 IPtime 제조사는 공유기가 사용할 수 있는 Domain Name과 DDNS서비스를 무료로 제공한다. IPtime 설정페이지로 접속해 로그인한다음 다음의 절차를 따르면 된다.

  • 고급 설정 -> 유틸리티 -> DDNS -> Host name 에 원하는 주소를 입력하고 UserID에 이메일 주소를 입력 -> 등록하기 클릭

이렇게 DDNS를 등록할 경우 외부에서 이 공유기에 접속할 때 <아이디>.iptime.org 를 입력하면 된다. 단 공유기를 사용하는 경우 B에 해당하므로 포트설정을 해주어야 한다. 포트를 설정하는 방법은 3탄에 설명하겠다.

그외의 경우

Domain Name을 구매한뒤 DDNS서비스를 사용해서 집의 컴퓨터에 접근할 수 있다. 비용은 판매업체와 Domain Name에 따라 다르지만 보통의 Domain Name은 할인혜택을 받으면 연 만원 이하의 비용으로 구매가 가능하다.
판매처는 다양하다. 외국 서비스도 있고 국내 서비스도 있다. 나는 호스팅 케이알에서 1년 단위로 도메인 네임을 구매하고 있다. 잘 찾아보면 할인 혜택이 많이 붙은 것도 있고, 외국 서비스까지 검색의 폭을 넓혀보면 연 1000원대에 도메인 이름을 구매하는 것이 가능하다. 끝이 .com 으로 끝나는 경우 좀 비싼편이고 xyz 같은 비 인기 도메인은 저렴한 편이다. 어느 도메인을 구매하더라도 기능에는 차이가 없으므로 마음에 드는 도메인 이름으로 검색해 보고 가격이 적당하면 구매하도록 하자.
도메인 구매시 집주소나 이메일 주소를 묻는데 이 정보는 인터넷에 공개되는 정보이므로 너무 자세히 또는 정확히 적지는 않는 것이 좋을 것 같다. 이 기사에 따르면 DNS Provider의 정책이라고 한다. 개인적인 추측으로는 서비스를 악용하는 사람을 막기 위한 목적인 듯 하다. 하지만 개인적인 용도로 사용할 도메인에 대해서는 신상정보 유출같은 역효과가 날 수 있으므로 주의하자.

도메인 구매 이후

도메인을 새로 구입한 경우 발급받은 주소를 DDNS 서비스에 등록해주어야 한다. 기본적으로 도메인 판매처에서 DDNS서비스도 함께 제공해주는 경우도 있다. 나는 DNSZi의 DDNS에 연동하고 있으므로 이를 기준으로 설명하겠다.

DNSZi 의 DDNS서비스 이용하는 방법

DNSZi는 DNS를 사용하는데 필요한 각종 설정을 편리하게 관리할 수 있도록 도와주는 사이트로 무료이다. 다음은 DDNS등록 절차이다.

  1. (DNSZi)회원가입을 한다.
  2. (DNSZi)왼쪽 배너에 도메인을 추가하기를 눌러 구입한 도메인을 추가한다.
  3. (도메인을 구입한 홈페이지)설정에 들어가 구매한 도메인의 네임서버주소를 DNSZi의 네임서버 주소로 바꿔 준다. (DNSZi의 네임서버 주소는 홈페이지 접속시 왼쪽 배너에 있다.)
  4. (DNSZi)호스트 IP관리란에 들어가 레코드를 추가해 준다. DDNS설정을 O로 설정해놓는다.
  5. (DNSZi)고급관리란에 들어가 집 컴퓨터의 운영체제에 따라 DDNS자동 업데이트를 설정한다.

생각보다 절차가 길어보이지만 하나 하다보면 그렇게 어렵지 않다.

3번의 경우 판매처에 따라 조금씩 다르겠지만 네임서버를 설정하는 것은 도메인 관리의 기본이므로 대부분의 서비스에서 가능할 것이다.

4번에서 레코드라는 단어가 나오는데, 데이터베이스에서 한 줄의 데이터를 의미하는 단어이다. 이 중 A레코드는 Address레코드라는 의미로 IP주소를 지정하는 일반적인 기능을 위한 레코드를 말한다. 참고링크 이 설정에서 A레코드를 비워놓고 IP주소는 임의의 주소를 넣어 놓자. 그리고 DDNS설정을 켜놓으면 나중에 집 컴퓨터에서 DDNS서버로 갱신요청을 보내 컴퓨터가 현재 사용중인 공용 IP주소로 지속적으로 갱신이 가능하다.

5번은 컴퓨터에 따라 조금 복잡할 수 있다. DDNS서버에 현재 컴퓨터의 공용 IP주소를 도메인과 연결시켜 달라는 요청을 보내기 위한 설정이다. http://ddns.dnszi.com/set.html? 로 시작되는 주소에 쿼리문(? 뒤에오는 문장들)과 함께 get요청(웹페이지 다운로드 요청)을 보내면 자동으로 요청을 보낸 컴퓨터의 공용 IP주소로 지정된 도메인과 연결된다. 이 명령을 자동으로 주기적으로 요청하면 IP주소가 변하더라도 도메인 주소는 항상 같은 컴퓨터를 향하도록 설정할 수 있다.
컴퓨터가 리눅스나 맥OS를 사용하는 경우 crontab을 사용해 주기적으로 명령을 실행할 수 있다. crontap은 일정 주기마다 특정한 명령어를 실행시켜주는 프로그램으로 리눅스계열 운영체제는 기본적으로 깔려있는 경우가 많다. wget 또는 curl로 설정을 위한 get 요청을 주기적으로 보내도록 설정하면 된다. crontab을 설정하기 위해서는 다음 명령어로 설정창에 진입할 수 있다.

$ crontab -e

이후 열리는 편집기(vim 또는 nano) 창에서 다음과 같은 문장을 입력하면 된다.

*/5 * * * * curl -s 'http://ddns.dnszi.com/set.html?user=<아이디>&auth=<적혀있는 인증키>&domain=<도메인.이름>&record='

crontab에 설정하기 앞서 curl 이나 wget으로 같은 명령을 실행시켜보고 홈페이지상의 IP주소가 잘 변경되는지 확인한 뒤 진행하자.
홈페이지에 나와있는 설정의 경우 curl, wget의 절대경로 (/로 시작하는 경로)로 요청을 보내도록 하였는데, 해당 경로에 curl이 위치하지 않은 경우도 많으므로 명령문에 curl만 적어놓는 것이 무난하다. 이렇게 하면 운영체제의 기본 설정에 따라 curl이 설치된 주소를 자동으로 파악해서 프로그램을 실행시킨다.

윈도우는 자동으로 명령을 주기적으로 보내는 방법이 조금 더 번거로울 수 있다. DNSZi에서는 윈도우용 crontab 프로그램을 설치하는 방법을 권장하고 있다. 반드시 이 프로그램이 아니더라도 http의 get 요청을 주기적으로 실행시키면 IP주소는 갱신되므로, 코딩지식이 있는 독자분이라면 주기적으로 get요청을 보내는 파이썬 스크립트를 작성하고 실행시키는 것도 좋을 것 같다.

라우터 포트 설정 (B에 해당하는 경우)

IP주소가 컴퓨터를 특정하기 위한 주소라면 포트는 컴퓨터의 한 프로그램을 특정하기 위한 주소라고 볼 수 있다. 클라이언트가 서버에 요청을 보낼때는 항상 IP주소와 Port번호를 함께 보내도록 되어있다. 인터넷 브라우저에 주소를 입력할 때 포트번호를 입력할 필요가 없는 이유는 브라우저는 기본적으로 80(http), 443(https) 포트로 요청을 보내기 때문이다. 반드시 웹서버가 해당 포트로 서비스를 제공할 필요는 없지만 일반적으로 정해진 포트번호들이 있다.
원격으로 컴퓨터에 접속할 때 사용하는 SSH알고리즘은 22번 포트를 사용한다. 따라서 SSH프로그램을 사용해 IP주소만 입력할 경우 IP주소에 해당하는 컴퓨터의 22번 포트로 연결을 요청한다.

라우터 포트설정이 필요한 이유

라우터를 사용하는 경우 공용IP주소를 받는 라우터는 1대이지만 라우터와 연결된 컴퓨터는 여러대일 수 있고 라우터도 하나의 컴퓨터이므로 외부에서 22번 포트로 접근하는 경우 어느 컴퓨터의 22번포트에 연결해야 할지 애매해지는 문제가 생긴다. 기본적으로 라우터에 들어오는(Inbound)모든 요청은 라우터의 포트로 연결된다. 따라서 라우터의 22번 포트 대신 우리가 사용하는 컴퓨터의 22번 포트에 연결되도록 라우터에서 설정해줄 수 있다. 라우터 설정을 위해서는 MAC - IP주소 연결(라우터 DHCP설정)후 포트포워딩을 해주어야 한다. 구체적인 것은 다음 글에 다루겠다.

라우터를 사용하지 않고 컴퓨터에 직접 연결된 경우 DDNS설정, DNS구입만 하였다면 컴퓨터의 포트 방화벽을 여는 것으로 설정을 끝마칠 수 있다. 방화벽은 포트접근을 허용하고 제한하는 등의 설정을 해주는 프로그램으로 운영체제에 내장되어 있다. 방화벽 설정도 다음에 다루겠다.


설정 자체는 시간이 오래걸리는 일이 아니지만 관련 지식을 함께 설명하려다 보니 글이 길어지는 것 같다. 다음에는 라우터 설정과 방화벽설정, 컴퓨터 원격연결까지 진행해보겠다.

0개의 댓글