집 밖에서 집 컴퓨터로 원격 접속하기 1탄 - 네트워크 기본개념

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

ssh란?

Secure Shell Protocol 의 약자다.
Command-line interface(CLI)환경에서 원격의 컴퓨터에 로그인할 때 주로 사용된다.
ssh의 개발 이전에 사용하던 Telnet 은 안전하지 않은 Protocol(통신규약)을 사용하였고 안전성을 보완하기 위해 나온것이 ssh이다.
ssh 는 서로 공통된 키를 사용해 암호화 통신을 사용하며 키 교환 알고리즘은 diffie-hellman 키 교환 알고리즘을 사용한다.
공통된 암호키를 사용해 암호화 통신을 하는 방식은 웹을 통해 정보를 주고받을 때 사용하는 https등 다른 Protocol에도 응용되고 있다.

네트워크 환경 확인

Client가 근거리 통신망(LAN)을 벗어난 외부네트워크 환경에서 내부 네트워크에 접근하기 위해서는 접근하려는 Server를 비롯해 Server와 연관된 네트워크 장치가 외부 Client의 접근을 허용하도록 설정하는 것이 필요하다.
네트워크 설정을 하기에 앞서 약간의 네트워크 지식을 함께 설명하면 어째서 뒤에 나올 설정이 필요한 지 이해하는데 도움이 될 것 같다.

클라이언트와 서버

네트워크 통신과정에서는 Client와 Server가 있다. 서버와 클라이언트는 통신과정에서 각 프로그램이 맡는 역할이라고 보면 된다. 컴퓨터가 어떤 프로그램을 실행하느냐에 따라 서버, 클라이언트로 동작할 수 있으므로 서버로 동작할 수 있는 기기가 따로 있는 것은 아니다.
요청을 먼저 보내는 쪽을 Client, 요청을 받는 쪽을 Server라고 한다.
이때 통신에 참여하는 컴퓨터, 혹은 프로그램을 node라고 부른다. peer라는 단어도 자주 쓰이는데 peer는 통신하는 상대node를 부르는 말이다 [참고].

ISP와 공용 네트워크(인터넷)

네트워크는 크게 공용 네트워크와 개인 네트워크로 나뉜다. 블루투스, 에어드롭같이 근거리 통신망에서 인터넷 서비스의 필요 없이 통신이 가능한 경우 개인 네트워크를 사용하는 것이고, 멀리
이 두 Node가 인터넷으로 통신하기 위해 필요한 일들을 수행하는 기관을 ISP(Internet Service Provider) 라고 한다. 한국의 SKT같은 통신사가 ISP에 속한다. ISP가 하는 일 중 일부는 아래와 같다.

  • DHCP Server를 운영하여 사용자들이 사용할 수 있는 IP주소를 할당한다.
  • 집에 라우터(와이파이 기기)를 설치해 준다.

한 개인 네트워크 안에 있는 두 node가 통신할 경우 네트워크 설정으로 허용한 범위내에서 개인네트워크를 통제하는 라우터가 node에게 할당한 IP주소를 사용해 네트워크 통신이 가능하다.

DHCP(Dynamic Host Configuration Protocol)

DHCP는 라우터가 서버로서 IP주소 할당을 요청하는 내부 node(Client)에 IP주소를 할당하는 통신규약이다. 인터넷에 지식이 조금 있는 분들이라면 우리들이 사용하는 IP주소가 그때그때 조금씩 바뀐다는 것을 알 것이다. 그 이유가 ISP에서 사용자들이 사용할 주소를 일정시간동안 대여했다가 컴퓨터가 종료되면 다른 사람에게 제공하기 때문이다. 내가 사용하는 SKT인터넷도 DHCP를 사용해 IP를 돌려쓰고 있다. 다만 모든 ISP가 사용자에게 IP주소를 돌려가며 할당하는 것은 아니고 기관 정책에 따라 다를 수 있다.
만약 밖에서 집에 있는 컴퓨터에 접속하고 싶다면 이 부분이 걸림돌로 작용하는 경우가 많다. IP주소가 계속 변하기 때문에 어떤 IP주소로 집에 있는 컴퓨터에 접속해야 할 지 알 수 없게 되기 때문이다. 이 문제는 DDNS 를 이용하여 해결할 수 있다.

DNS(Domain Name System)와 DDNS(Dynamic DNS)

DNS는 IP주소와 naver.com 같은 이름주소(Domain Name)를 연결시켜주기 위한 시스템이다. 사용자가 주소창에 숫자로 된 IP주소 문자 주소를 입력하면 웹 브라우저는 DNS와 통신하여 이름주소와 일치하는 IP주소가 무엇인지 알아 낸뒤 그 주소를 이용해 네이버의 서버에 접근이 가능해진다.
DDNS는 이름주소에 해당하는 IP주소가 변경될 경우 DNS에 이 변경사항을 알려주는 서비스이다. 위에서 설명한 DHCP로 IP주소를 할당받아 사용하는 컴퓨터가 서버 역할을 맡을 경우 이 서버에 접근하기 위한 IP주소가 계속 변경되는데 변경된 사실을 DDNS서비스 제공자에게 알리면 DNS서버에 변경사항을 반영시켜주어 이 서버를 사용하는 Client는 Server의 IP주소가 변경된 것의 영향없이 이름주소로 계속 연결을 할 수 있게 된다.
집의 컴퓨터가 DHCP로부터 IP주소를 할당받아 사용한다면 DDNS서비스를 사용해야 안정적으로 서버로서 기능할 수 있다. DDNS서비스를 사용하기 위한 방법은 2탄에서 마저 설명하겠다.

IP주소와 패킷

IP주소는 네트워크 통신에서 패킷(Packet) 을 전달할 Node의 위치를 추적하기 위해 사용하는 주소이다.
패킷은 네트워크를 통해 데이터를 전달하기 위해 약속된 방식으로 만들어낸 한 단위의 데이터이다.
보내야 하는 데이터가 큰 경우 여러개의 패킷으로 나누어서 전달하며 패킷에는 데이터의 몇 번째에 해당하는 패킷인지, 목적지 IP주소 등 데이터를 전달하는데 필요한 정보들이 담겨있다.

라우터

와이파이 기기는 살펴보면 벽에서 나오는 랜선(LAN cable)이 연결되어 있고 다른 랜선들은 컴퓨터나 셋톱박스에 연결되어 있는 것을 볼 수 있다. 와이파이 기기는 라우터(Router)라고 불리는 네트워크장비로 유선네트워크를 무선 네트워크로 확장시키는 역할을 할 수도 있으며 하나의 인터넷 IP주소를 갖고도 여러 컴퓨터가 사용할 수 있도록 중계기 역할을 할 수도 있다.

IP주소를 확인해 보자

라우터를 거쳐서 들어온 컴퓨터의 IP주소를 확인해보면 재미있는 것을 확인할 수 있다. IP주소를 확인하기 위해 다음 두 가지 방법을 사용해보자.

  • cmd 또는 powershell을 실행시키고 ipconfig명령어를 친다.
  • 네이버 주소창에 '내 아이피' 라고 검색한다.

터미널에서 확인한 주소

Ethernet adapter Ethernet 3:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::2169:a1a0:b419:ee25%11
IPv4 Address. . . . . . . . . . . : 192.168.0.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1

첫 번째 방법으로 명령어를 입력한 결과이다. 여기서 192.168.xxx.xxx 나 172.168.xxx.xxx 등의 IP주소와 함께 Subnet Mask가 255.255.255.0 와 비슷하다면 해당 컴퓨터는 LAN(Local Area Network), 즉 내부 네트워크 환경에 있는 것이다. 라우터를 경유해 네트워크에 진입하였기 때문에 라우터에서 할당하는 IP주소를 받은 것이다. 라우터도 DHCP 서버역할을 하며 연결된 내부 기기들에게 IP를 할당해준다. 즉 ISP는 나의 라우터에 IP주소를 할당했다면, 내 라우터는 와이파이로 연결된 핸드폰이나 랜선으로 연결된 데스크톱에 IP주소를 할당하는 것이다.

라우터가 할당해주는 IP주소는 라우터가 관리하는 내부 네트워크에서만 겹치지 않으면 되기 때문에 192.168. 로 시작하는 IP주소가 많다. 반면 ISP가 할당해 주는 주소는 세계 인터넷에서 중복되지 않는 유일한 IP주소이므로 접속하려는 Server가 세계 어디에 있든 ISP가 할당해 준 IP주소를 알고 있다면 접근이 가능하다. ISP가 할당해준 IP는 어디서든 접근 가능한 공공성을 가진 IP주소이므로 Public IP Address 라고 한다.

네이버 주소창에서 확인한 주소

이제 네이버 주소창에 본인 컴퓨터의 IP주소를 검색한 결과를 살펴보자.
나는 가장 익숙한 구글에서 검색해 보았다. 아이피 검색하기

What's my IP
180.68.19.108
Your Public IP address

아마 상당히 자유분방한 IP주소를 결과로 보여주었을 확률이 높다. 이 주소가 바로 ISP가 할당해준 IP주소이다. 만약 위에 명령어를 입력했을 때 나오는 주소와 네이버 검색을 하였을 때 나오는 주소가 같다면 WAN(Wide Area Network), 외부 네트워크 환경에 컴퓨터가 직접 연결되어 있는 경우이다.

라우터를 경유하는 경우 두 IP주소가 다르게 나타나는 이유는 무엇일까?

그것은 라우터가 인터넷을 사용 할 때 Public IP Address(공용 IP주소)를 사용하기 때문이다. cmd나 powershell에서 IP주소를 확인하면 컴퓨터는 라우터가 할당한 주소밖에 알지 못하기 때문에 내부 주소를 출력한다.
컴퓨터가 외부 네트워크 서버에 접근할 때 라우터는 컴퓨터와 외부 서버사이에서 중계를 해준다. 라우터는 통신 내용에 관여하지 않지만 자기가 서버와 직접 통신을 하는 것처럼 동작한다. 이 때 ISP에게 할당받은 공용주소를 발신지 주소로 사용하여 서버가 이 주소로 답신을 보내도록 한다. 네이버 서버입장에서는 오로지 라우터가 패킷에 적어보낸 발신지 주소밖에 알 수 없기 때문에 발신지 주소로 적혀있던 공용주소를 검색 결과창에 띄워주는 것이다.
라우터는 공용주소를 사용해 외부 서버와 소통하며 소통한 결과물을 다시 내부 컴퓨터에 전달해줌으로써 내부 내트워크를 사용하는 기기들이 외부 네트워크와도 통신할 수 있도록 중계해준다.


글이 길어져 다음 포스트에서 나머지를 정리해야 겠다.
목표(바깥에서 내부 컴퓨터 접속)을 이루기 위해서는 약간의 준비물이 필요한데 매년 1000원 정도의 비용으로 해결할 수 있으므로 컴퓨터 공부를 위한 학습비용이라고 생각하면 그렇게 큰 금액은 아닐 것이다.

0개의 댓글