들어가며
공문서를 다운로드할 때 가끔씩 키보드 보안을 요구하는 경우가 있다. 맥북을 통해서 진행할 수 없었기에 집에 있는 윈도우 노트북에 원격 접속을 통해서 해결할 수 있도록 하고자 하여 자료를 찾아보게 되었다. 이 외에도 윈도우 OS에서만 작동하는 다양한 프로그램들이 있기 때문에 RDP를 이용하게 되었다.
네트워크 용어에 익숙하지 않는 사람을 위해 간단하게 정리하면 아래와 같다.
- 호스트(host) : 네트워크에 연결된 컴퓨터
- 포트(port) : 컴퓨터의 어플리케이션이 사용하는 논리적 주소 ( 0 ~ 65535 )
- 클라이언트(client) : 접속을 시도하는 호스트
- 서버(server) : 접속을 허락하는 호스트
- 엔드포인트(endpoint) : 접속을 하락하는 호스트의 IP 주소 ( 포트는 제외 )
- 같은 네트워크 : 같은 와이파이를 사용하는 경우
본론
같은 네트워크에서 RDP로 원격 접속하는 경우
같은 네트워크에서 RDP를 통해 원격 접속하는 방법은 간단하다. 이 때는 사설 IP를 통한 원격 접속이 가능하기 때문이다.
윈도우 서버에서 cmd를 실행시킨다.
ipconfig 명령어를 통해서 IPv4 주소를 확인할 수 있다. 위 사진에서는 192.168.0.14 라는 것을 알 수 있었다. 이후 윈도우 쪽에서 원격 데스크탑 허용을 해줘야한다.
여기서 시스템 - 원격 데스크탑 섹션에 들어가 원격 데스크톱 활성화를 해준다.
원격 데스크톱을 활성화 했다면 이제 원격 접속을 할 컴퓨터에서 RDP를 실행시킨다.
PC name 항목에는 앞서 cmd에서 확인한 IPv4를 입력하여 원격 접속할 수 있다.
같은 네트워크 내에서 접속하는 경우는 매우 간단하다. 하지만 다른 네트워크에서 접속하는 경우는 조금 복잡한다. 이 경우에는 DDNS, DHCP, 포트 포워딩 설정을 따로 해줘야한다.
외부 네트워크에서 RDP 원격 접속하는 경우
공유기를 사용한다고 가정하고 네트워크의 구조를 위와 같이 그릴 수 있다. Router의 왼쪽은 가정에서 사용하는 와이파이 공유기에 window, mac, iptv 등이 연결되어 있다. 오른쪽은 인터넷으로 연결되어 있고, 외부에는 서버 및 원격 접속을 시도할 유저가 있는 상황이다.
공유기의 네트워크를 사용하는 Host 들은 사설 IP를 사용하게 된다. 왼쪽의 호스트들은 192.168.0.10 부터 192.168.0.12 까지의 사설 IP를 할당받은 상황이다. 위에서 cmd를 통해 확인한 서버의 IP 를 보면
- IPv4 주소 : 192.168.0.14
- 기본 게이트웨이 : 192.168.0.1
- 서브넷 마스크 : 255.255.255.0
이를 통해서 알 수 있는 것은 192.168.0.1의 IP의 게이트웨이 역할을 하는 공유기 내에 있는 호스트들은 192.168.0.X의 IP 대역을 가지고 있다는 것을 알 수 있다. 추가로 원격 접속을 허락할 서버의 사설 IP는 192.168.0.14이다.
이렇게 192.168.0.14를 통해서 직접 연결할 수 있는 것은 같은 네트워크 안에 있는 경우고, 외부 네트워크에서 접속하기 위해선 공인 IP를 통한 접속이 필요하다. 공유기에 접속하여 직접 IP 설정이 필요하다.
어떤 공유기를 사용하냐에 따라 다르지만, 필자는 192.168.0.1 을 통해서 공유기로 접속할 수 있다. ( 이는 iptime 공유기를 사용한다면 기본 설정이다. ) DDNS, DHCP, 포트포워딩 설정을 통해서 외부 네트워크에서 RDP 접속을 할 수 있게 해보자.
DDNS 설정
관리 도구를 통해 네트워크 관리 페이지에 들어오면 먼저 고급 설정 - 특수기능 - DDNS 설정 탭에서 DDNS를 등록한다.
호스트이름과 사용자 ID를 통해서 DDNS를 등록할 수 있다. 등록하게 되면 등록 IP 주소를 할당받게 되는데, 이 IP 주소가 연결하려고 하는 Host의 엔드포인트가 된다.
DHCP 설정
다음으로 고급 설정 - 네트워크 관리 - DHCP 서버 설정 탭으로 이동한다. 아래 부분을 보면 사용중인 IP 주소 정보 탭에 세 개의 사설 IP를 할당받은 Host들을 확인할 수 있다. ( 해당 공유기를 사용 중인 우리 호스트들은 세 개 있다는 뜻이다 ) 원격 접속하고 싶은 host 사설 IP를 클릭하고, 오른쪽 아래 수동 등록 버튼을 누르면 사설 IP를 등록할 수 있게 된다.
포트포워딩 설정
RDP는 원격 접속을 할 때 서버의 3389 포트를 통해서 접속을 한다. 하지만 외부 네트워크에서는 3389 포트를 통해 접속을 한다고 하더라도 접속이 되질 않는다. 공유기는 외부와 내부의 IP와 포트를 연결하는 자료구조를 가진 테이블(NAT table)이 존재한다. 공유기는 NAT table에 등록되지 않은 IP로 접속은 기본적으로 차단하는 역할을 한다. 따라서 외부에서 3389 포트를 등록하기 위해서는 포트포워딩을 해야 한다. 내부 네트워크에서는 정상적으로 접근이 되었던 이유는 공유기를 거치지 않기 때문에 3389 포트에 대한 접속이 막히지 않았던 것이다.
내부 IP주소에 포트포워딩 규칙을 적용하고자 하는 호스트의 사설 IP주소를 입력하고, 내부 포트는 3389로 고정, 외부 포트는 원하는 포트를 입력하면 된다.
외부 포트로 3389를 사용해도 좋으나, 필자가 다니는 대학교의 네트워크에서는 3389 포트를 통한 아웃바운드가 막혀있기 때문에 33890으로 포트포워딩을 설정했다. 3389나 33890이 아니더라도 이미 호스트에서 사용하고 있는 포트가 아니라면 상관없다.
RDP 연결
마지막으로 DDNS를 통해 할당받은 등록 IP 주소와 포트포워딩을 통해 설정해둔 외부 포트를 통해서 연결하면 정상적으로 연결된다.
ex. DDNS를 통해 등록된 IP가 172.16.0.10 이고, 3389 ( 내부 ) : 33890 ( 외부 ) 를 포트포워딩 한 경우 172.16.0.10:33890 으로 접속할 수 있다.
마치며
위 네트워크 구조의 그림은 널널한 개발자 TV님의 유튜브 영상을 참고했습니다.
References
'CS > network' 카테고리의 다른 글
ssh에 대해서 (0) | 2024.07.07 |
---|---|
RESTful API 원칙에 대해서 (1) | 2024.04.16 |
nginx를 통한 https 접속 및 포트포워딩 (SSL/TLS) (0) | 2023.11.21 |