SSH 터널링 방법을 사용하여 외부 접속이 차단된 PC에 원격 접속하는 과정을 소개한다.
[참고 문서]
기본적으로는 외부에서 내부 컴퓨터로의 접속은 안되는 상황이고, 내부에서 외부로의 접속은 가능한 상황이다.
위 문서에서 소개한 대로 외부에 SSH 서버를 두고 내부에서 외부 컴퓨터로 SSH 터널을 생성한 뒤에 SSH 서버를 통해서 내부로 접속하는 방법이 가능하다.
내가 설정한 전체적인 구조는 아래와 같다.
(노트북, 아이패드 등 ) --> (SSH 서버 / 시놀로지 NAS) --> (SSH 클라이언트 / 내부 PC) --> (다른 내부 PC1, PC2, PC3, ...)
SSH 서버와 클라이언트간에 터널이 만들어져서 방화벽을 우회하게 된다.
그럼 차례대로 설정법을 보자.
1. 외부 SSH 서버 설정
항상 동작하는 외부 SSH 서버가 필요하다. 컴퓨터, 라즈베리 파이, NAS 모두 가능하다. SSH 서버를 구동시킬 수만 있으면 된다.
시놀로지 NAS 를 기준으로 설명하면...
우선 제어판에서 SSH 서비스를 켜준다. Port 는 기본 포트를 써도 되지만 보안을 위해서 적당한 숫자로 바꿔주면 좋다.
그 다음 SSH 로 접속해서 NAS의 /etc/ssh/sshd_config 파일의 아래 옵션을 수정해준다.
# vi /etc/ssh/sshd_config
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes
그리고 NAS 전원 옵션에서 최대절전모드는 꺼줘야 한다. 최대절전에 들어가면 SSH 접속이 안된다.
하드디스크 절전은 상관없다.
그리고 유동IP를 사용중이라면 시놀로지에서 제공하는 DDNS 서비스를 이용하여 IP 주소가 변경되는 걱정을 덜 수 있다.
이 문서를 참고하자.
https://www.synology.com/ko-kr/knowledgebase/DSM/tutorial/Network/What_Is_Synology_DDNS_Service
2. 내부 SSH 클라이언트 설정
학교 또는 회사 내부 PC 에서 SSH 접속 설정을 해줘야 한다.
Putty, MyEnTunnel, Bitvise 등 여러 프로그램을 쓸 수 있는데, Bitvise 기준으로 설명한다.
MyEnTunnel 과 Bitvise 는 끊겼을 때 자동재접속 기능이 있어서 편하다.
https://www.bitvise.com/ssh-client-download
여기에서 프로그램을 받아서 설치한다.
실행하면 아래와 같은 화면을 볼 수 있다.
여기에서 아래 내용을 입력한다.
Host: SSH 서버 주소 입력. 예시로 test.synology.me 라고 하자.
Port: SSH 서버에서 설정한 포트 번호 입력 (기본 SSH 포트번호는 22)
Username: 사용자 이름
Password: 패스워드
그리고 S2C 탭에서 연결할 내부 PC 들을 넣어준다.
Listen Interface: 0.0.0.0
List. Port: 아무 포트나 써준다
Destination Host: 연결할 내부 PC IP 주소
Destination Port: 연결할 내부 PC 포트 번호
여러대의 내부 PC 와 연결하고 싶을 경우 여러개 엔트리를 넣어주면 된다.
외부에서 접속할때 여기 있는 List. Port 로 구분하기 때문에 중복되지 않게 적어야 한다.
예를 들어 아래와 같이 설정할 수 있다.
List. Port 10000 --> 내부 IP 10.10.10.1 / 포트번호 5900
List. Port 10001 --> 내부 IP 10.10.13.1 / 포트번호 5900
List. Port 10002 --> 내부 IP 10.10.15.1 / 포트번호 5900
List. Port 10003 --> 내부 IP 10.10.15.2 / 포트번호 5900
SSH 클라이언트가 실행되는 PC 일 경우 IP주소로 127.0.0.1 을 사용하면 된다.
3. 원격 데스크탑 설정
접속할 각 내부 PC에서 VNC를 셋팅 해준다.
이건 OS 마다 적당한 프로그램을 사용하면 된다.
Ubuntu 에서는 Desktop Sharing 이 기본으로 설치되어 있다. 켜주면 된다.
윈도우에서는 UltraVNC 를 추천한다.
https://www.uvnc.com/downloads/ultravnc.html
VNC 기본 포트번호는 5900 이다.
만약 다른 포트번호를 사용하다면 Bitvise 설정할때 포트번호를 맞게 써줘야 한다.
위의 예시에서는 VNC 기본 포트 번호 5900 을 사용했다.
RDP (윈도우 원격 데스크탑) 는 테스트해보지 않았지만 동일하게 가능할 것이다.
방화벽이 설정되어 있다면 필요한 포트를 열어줄 필요가 있다.
Ubuntu 에서 VNC접속에 문제가 있다면 아래 명령을 실행해 주자.
$ sudo ufw allow 5900/tcp
4. 접속 테스트
이제 모든 설정이 끝났다. 접속 테스틑 해보자.
외부 장치에서 VNC Viewer 를 이용해서 접속을 해보자.
Viewer 도 검색해보면 많이 있다. 나는 윈도우에서 UltraVNC Viewer, 안드로이드에서 RealVNC에서 나온 VNC Viewer 를 이용해서 테스트 해보았다.
위에서 설정한대로 주소를 입력하면 된다.
test.synology.me:10000 로 접속하면 10.10.10.1 로 접속이 되고
test.synology.me:10001 로 접속하면 10.10.13.1 로 접속이 될 것이다.