집 밖에서 집 컴퓨터로 원격 접속하기 3탄 - 라우터와 포트포워딩

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

머릿말

지난 글에서 IP주소는 특정 Node로 접근하기 위한 주소라는 것을 배웠다. 그리고 오늘날의 대부분의 IP주소는 ISP가 잠깐 임대하는 방식으로 여러 사용자가 돌려 사용하므로 특정 컴퓨터를 항상 가르키기 위해 DNS를 사용한다는 것을 배웠다.
마지막으로 포트의 개념을 소개하고 포트 포워딩이 필요한 이유를 설명한 뒤 원격 접속방법을 설명하는 것으로 마무리하겠다.


포트(Port)가 뭐에요?

IP주소가 Node(일반적으로 컴퓨터)를 특정하기 위한 주소라면 포트는 Node의 한 Program을 특정하기 위한 주소이다. Node에서 동작하는 프로그램들은 네트워크 통신을 할 때 서로 다른 Port번호를 사용하므로써 주고받는 패킷이 어떤 프로그램을 위한 패킷인지 알 수 있다.
편지로 비유를 하자면 IP주소가 집 주소이고, Port번호는 받는 사람 이름 정도로 볼 수 있다. 집주소만 있어도 집으로 배달은 되지만 받는 사람 이름이 없다면 누구를 위한 편지인지 알 수 없을 것이다.
오늘날의 거의 모든 네트워킹은 IP주소와 Port를 함께 사용하여 이루어진다.

포트포워딩은 왜 필요해요?

포트포워딩은 A 노드의 p 포트로 수신된 패킷을 B 노드의 q 포트로 그대로 전달해주는 기술이다. 라우터를 사용할 경우 라우터의 IP주소와 Port번호로 패킷이 수신되는데 이 패킷을 내부 Node로 전달해주기 위해서는 어떤 내부 Node(내부 IP주소)의 몇번 Port 번호로 보낼지에 대한 규칙이 필요하다. 이 규칙은 라우터 초기 세팅에 따라 다르겠지만 일반적으로 외부(Wan)에서 내부(Lan) Node로 접근하는 동작(Inbound request)은 차단되어 있다. 반면 내부 Node가 내부 Node로 통신하는 것은 라우터가 막지 않고 각 Node의 방화벽 설정에 의존한다.
대부분의 상용 라우터는 포트포워딩을 지원하므로 내부 Node, 집 컴퓨터의 Port와 라우터의 Port를 연결해주는 것이 필요하다. 라우터를 사용하지 않고 직접 본체에 연결한 경우 컴퓨터 방화벽 설정만 해주면 된다.

집 컴퓨터에 서버 프로그램 실행하기

어떤 Port에 연결할지 정하기 위해서는 서버프로그램이 사용할 Port번호를 알아야 한다. 웹 서버라면 80, 443번을, SSH라면 22번포트를 사용할 것이다. 서버 프로그램에 따라 구동시에 어떤 Port를 사용할지 결정할 수 있는 서버 프로그램들도 있다. 여기서는 22번 포트를 사용한 SSH로 집 컴퓨터에 접근다고 가정하고 설명을 계속하겠다.

Windows10

링크로 대체하겠습니다. 😊

Linux계열, Mac OS

Linux와 Mac OS의 경우 ssh가 내장된 상태로 배포되는 경우가 대부분이다. Shell을 열고 다음 명령어를 쳐보면 ssh가 깔려있는 지 알 수 있다.

$ ssh

Usage~ 로 시작하는 안내 문구가 뜬다면 ssh가 설치되어 있는 것이다. 방화벽 설정은 22번 포트를 열어주면 되는데 일반적으로 열려있다. 방화벽을 설정하는 부분은 생략하겠다.

라우터 포트 포워딩 설정하기

대부분의 상용 라우터에서 쉽게 설정할 수 있는 설정페이지를 제공하므로 이를 사용해 쉽게 설정할 수 있다.
포트포워딩 단계에서는 외부에서 집 컴퓨터의 SSH에 접근할 때 사용할 포트번호를 정하게 된다. 포트번호중 1~9999번은 특정 용도로 사용하도록 정해져있는 경우가 많으므로 그 이상의 번호로 설정하는 것을 추천한다.
여기서 설명할 설정 순서는 다음과 같다.

  1. 현재 접속중인 컴퓨터의 mac 주소 확인

  2. 라우터 DHPC 설정에서 현재 컴퓨터의 내부 IP를 고정

  3. 고정한 IP주소로 포트포워딩 설정.

    1탄에서 설명했듯이 라우터가 관리하는 내부IP주소도 DHCP 를 통해 관리되므로 변경되지 않도록 주소를 고정해 주는 것이 필요하다. 현재 접속중인 컴퓨터의 mac 주소를 확인하려면 ifconfig(맥, 리눅스), ipconfig(윈도우) 명령어를 터미널에 입력하고 192.168.xxx.xxx IP에 해당하는 mac 주소를 확인하면 된다. 또는 라우터 페이지에 접속하여 내부 컴퓨터의 IP와 MAC을 대조해서 알아내는 방법도 있다.

  • 리눅스 환경에서 컴퓨터의 맥 주소

ip-time 라우터의 포트포워딩

  1. IPtime 설정페이지에서 DHCP 설정창을 들어간다음 현재 컴퓨터의 맥주소와 고정할 local ip를 입력한뒤 추가한다. 간단히 우측 중단의 Add를 누르는 방법도 있다. 여기서 지정한 고정 ip주소를 기억한다.

  1. NAT/Routing 메뉴의 Port Forwarding에 들어간다음 Internal IP에 방금 지정한 IP주소를 입력하고, TCP 프로토콜로 지정한다음 접속할 때 사용할 포트번호를 External port로 입력한다. Internal port는 22번으로 설정한다. 여기서 External port로 입력한 포트번호가 컴퓨터에 접속할 때 사용할 포트번호가 된다. 외부포트번호를 22 로 설정해도 무방하나, 10000~60000 사이의 임의의 외부 포트를 사용하는 것이 조금 더 안전하다.

입력을 다 했으면 +new 를 눌러 새로운 포트포워딩 Rule을 추가하고 Apply를 누르면 포트포워딩 설정이 완료된다.

SKT 공유기(라우터)의 포트포워딩

  1. SKT 공유기에서의 포트포워딩도 크게 다르지 않다. 현재 컴퓨터의 mac주소를 먼저 파악한다. DHCP 할당정보와 컴퓨터의 local ip를 대조해서 mac주소를 알아낼 수도 있다.

  2. LAN 연결 설정에 들어가 고정 IP에 원하는 local IP주소와 컴퓨터의 mac 주소를 입력한뒤 적용을 누른다.

  3. 내부서버 -> 포트포워드 설정으로 들어가 임의의 외부포트와 고정된 IP주소를 입력하고 내부포트로 22번을 입력한다. 다음 추가를 눌러 설정을 적용한다.

ssh를 사용해 외부에서 컴퓨터로 접속하기

도메인 설정, 포트포워딩까지 끝냈다면 이제 외부에서 내부 컴퓨터로 접속할 준비가 끝났다. 도메인서비스나 포트포워딩으로 외부네트워크와 내부네크워크가 연결되면 ssh 뿐만 아니라 VNC, sftp, https 등 다른 모든 서버 시스템을 구축하고 접속할 수 있다. 이 글에서는 ssh클라이언트 프로그램을 사용해 컴퓨터에 접속하는 것으로 마무리하겠다. ssh는 서버 접속에 가장 많이 사용되는 프로토콜중 하나이므로 이 글에서 미비한 자료는 구글링을 통해 충분히 찾아 낼 수 있을 것이다.

단 ssh로 접근하기 위해서는 접근하려는 컴퓨터에 ssh 서버가 구동중이어야 한다. 일반적으로 linux 운영체제는 ssh 서버를 기본으로 구동하고 있어 별도의 설정이 필요하지 않다. 하지만 windows10는 ssh서버를 구동시키기위한 추가과정이 필요하다. ssh 서버가 구동중이라는 가정하에 접속방법을 설명하겠다.

ssh클라이언트 구동 및 접속하기

windows10, linux환경 모두 ssh 클라이언트가 설치되어 있고 다음 명령어를 통해 ssh 서버에 접속이 가능하다.
ssh <사용자명@도메인주소> -p <포트포워딩에서 설정한 외부 port번호>

처음 접속한 ssh 서버의 경우 figerprint를 확인하라는 경고문구가 뜬다. 처음 접속하는 컴퓨터이므로 접속하려는 컴퓨터가 맞는지 한번 더 확인하라는 주의 문구이다. yes를 입력하면 .ssh/known_hosts에 서버주소와 fingerprint 를 기록하며 같은 컴퓨터에 접속하는 경우 주의문구 없이 접속이 가능하다.


이전에 홈 네트워크를 구축하면서 겪었던 시행착오를 잘 정리해서 글로 쓰면 유용할 것 같아 글을 쓰기 시작했는데 생각보다 글 쓰는 것이 어렵고 오래걸린 것 같다. 나중에 다른 설명을 할 때는 동영상을 통해 설명한다면 더 빠르고 쉬울 것 같다.

0개의 댓글