1. 환경과 배경
집에서 회사 내부망에 있는 서비스에 접속해야 하는 상황이었다.
내 환경은 다음과 같다.
집 PC: Windows 11
회사 PC: Ubuntu 24.04
원격 접속 도구: RustDesk
사용 목적:
- 사내망 웹페이지 접속
- 회사 Ubuntu PC에 SSH 접속
- 회사 Ubuntu PC에 RDP 원격 데스크톱 접속
처음에는 RustDesk 원격화면으로 회사 Ubuntu PC에 접속한 뒤, 그 안에서 브라우저를 열어 사내망 웹페이지를 사용했다.
집 Windows PC
→ RustDesk 원격화면
→ 회사 Ubuntu PC
→ 사내망 웹페이지 접속
하지만 이 방식은 느렸다.
RustDesk 원격화면은 회사 PC 화면 전체를 영상처럼 전송하는 방식이라 브라우저 화면 이동, 마우스 입력, 키보드 입력이 답답했다.
그래서 RustDesk의 TCP 터널링 기능을 이용해서 집 PC의 브라우저, SSH 클라이언트, RDP 클라이언트가 회사 Ubuntu PC를 경유해 사내 서비스에 직접 접속하는 구조로 바꿨다.
2. 터널링이란?
터널링은 쉽게 말하면 집 PC와 회사 Ubuntu PC 사이에 전용 통로를 만드는 것이다.
집 PC에서는 회사 내부망 주소에 직접 접속할 수 없다.
예를 들어 사내망 웹페이지 주소가 다음과 같다고 하자.
https://internal.example.local
집 PC에서는 이 주소가 직접 열리지 않을 수 있다.
하지만 RustDesk TCP 터널링을 사용하면 집 PC의 로컬 포트를 회사 Ubuntu PC가 접근 가능한 사내망 서비스로 연결할 수 있다.
예를 들어 집 PC의 127.0.0.1:8443을 회사 내부의 internal.example.local:443으로 연결하면 다음과 같은 구조가 된다.
집 PC Chrome
→ 127.0.0.1:8443
→ RustDesk TCP Tunnel
→ 회사 Ubuntu PC
→ internal.example.local:443
즉, 집 PC에서는 로컬 주소로 접속하지만 실제로는 회사 Ubuntu PC를 통해 사내망 웹페이지에 접속하는 방식이다.
중요한 점은 이것이 회사 공유기나 방화벽의 포트포워딩 설정이 아니라는 점이다.
공유기 포트포워딩:
외부에서 회사 내부로 들어오는 포트를 네트워크 장비에서 직접 열어주는 것
RustDesk TCP 터널링:
이미 연결된 RustDesk 통로를 이용해서 집 PC의 로컬 포트를 회사 PC의 포트로 전달하는 것
즉, 회사 네트워크 장비 설정 권한이 없어도 RustDesk 연결이 가능하면 사용할 수 있다.
3. RustDesk TCP 터널링 기본 개념
RustDesk TCP 터널링에서 설정해야 하는 값은 보통 세 가지다.
Local port
Remote host
Remote port
의미는 다음과 같다.
Local port:
집 PC에서 열 포트
Remote host:
회사 Ubuntu PC에서 접속할 대상 주소
Remote port:
회사 Ubuntu PC에서 접속할 대상 포트
예를 들어 사내망 웹페이지가 HTTPS라면 보통 원격 포트는 443이다.
Local port: 8443
Remote host: internal.example.local
Remote port: 443
이 경우 집 PC에서는 다음 주소로 접속한다.
https://127.0.0.1:8443
연결 흐름은 다음과 같다.
집 PC 브라우저
→ 127.0.0.1:8443
→ RustDesk TCP 터널
→ 회사 Ubuntu PC
→ internal.example.local:443
4. 사내망 웹페이지 포트 확인
사내망 웹페이지가 어떤 포트를 사용하는지 확인해야 한다.
보통 주소가 다음처럼 시작하면 포트를 추정할 수 있다.
http://주소 → 80번 포트
https://주소 → 443번 포트
회사 Ubuntu PC에서 다음 명령으로 확인할 수 있다.
curl -vI http://internal.example.local
만약 결과가 다음처럼 나온다면,
HTTP/1.1 308 Permanent Redirect
Location: https://internal.example.local/
HTTP 80번으로 접속했지만 HTTPS 443번으로 리다이렉트된다는 뜻이다.
이 경우 실제 터널링 대상은 보통 다음과 같다.
Remote host: internal.example.local
Remote port: 443
HTTPS 접속을 직접 확인하려면 다음을 실행한다.
curl -vkI https://internal.example.local
정상 응답 예시는 다음과 같다.
HTTP/1.1 200 OK
또는 로그인 페이지, 리다이렉트, 권한 관련 응답이 나와도 터널 대상 확인에는 충분하다.
5. RustDesk TCP 터널링으로 사내망 웹페이지 접속하기
RustDesk에서 TCP 터널링을 추가한다.
예시 설정값은 다음과 같다.
Local port: 8443
Remote host: internal.example.local
Remote port: 443
의미는 다음과 같다.
집 PC의 127.0.0.1:8443
→ RustDesk TCP 터널
→ 회사 Ubuntu PC
→ internal.example.local:443
집 Windows PowerShell에서 연결 확인을 한다.
Test-NetConnection 127.0.0.1 -Port 8443
정상이라면 다음처럼 나온다.
TcpTestSucceeded : True
PowerShell에서는 curl이 Invoke-WebRequest 별칭일 수 있으므로 curl.exe를 사용한다.
curl.exe -vkI https://127.0.0.1:8443/
다만 HTTPS 사이트는 접속 도메인 이름이 중요할 수 있다.127.0.0.1로 접속하면 인증서 이름이나 SNI 문제로 실패할 수 있다.
이럴 때는 실제 도메인 이름을 유지한 채 127.0.0.1로 접속하도록 테스트할 수 있다.
curl.exe -vkI --resolve internal.example.local:8443:127.0.0.1 https://internal.example.local:8443/
단, 서버가 443 포트 기준으로 리다이렉트를 강제하거나 포트가 바뀌면 동작이 달라질 수 있다.
6. 브라우저에서 사내망 웹페이지 접속하기
방법 1: hosts 파일 수정 없이 크롬만 따로 실행
테스트용으로는 이 방법이 편하다.
집 PC PowerShell에서 다음 명령을 실행한다.
& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--user-data-dir="$env:TEMP\chrome-work-intranet" `
--host-resolver-rules="MAP internal.example.local 127.0.0.1" `
"https://internal.example.local:8443"
이 크롬 창에서만 internal.example.local이 127.0.0.1로 해석된다.
실제 연결은 다음 흐름을 탄다.
Chrome
→ 127.0.0.1:8443
→ RustDesk TCP 터널
→ 회사 Ubuntu PC
→ internal.example.local:443
방법 2: hosts 파일 수정
매번 명령어로 크롬을 실행하기 귀찮다면 hosts 파일을 수정할 수 있다.
관리자 권한으로 메모장을 실행한다.
notepad C:\Windows\System32\drivers\etc\hosts
맨 아래에 추가한다.
127.0.0.1 internal.example.local
DNS 캐시를 초기화한다.
ipconfig /flushdns
이제 크롬에서 접속한다.
https://internal.example.local:8443
단, RustDesk 터널이 꺼져 있으면 접속이 실패한다.
작업이 끝난 뒤에는 hosts 파일의 해당 줄을 주석 처리하거나 삭제하는 것이 좋다.
# 127.0.0.1 internal.example.local
참고: Local port를 443으로 쓰는 경우
사내 웹페이지가 https://internal.example.local처럼 포트 없이 열려야 하고, 리다이렉트 때문에 :8443 사용이 불편하다면 로컬 포트를 443으로 잡을 수도 있다.
Local port: 443
Remote host: internal.example.local
Remote port: 443
이 경우 hosts 파일에 다음을 추가한다.
127.0.0.1 internal.example.local
브라우저에서는 포트 없이 접속한다.
https://internal.example.local
다만 집 PC에서 이미 443 포트를 다른 프로그램이 사용 중이면 이 방식은 사용할 수 없다.
확인은 다음 명령으로 한다.
netstat -ano | findstr :443
7. SSH 터널링 설정
회사 Ubuntu PC에 SSH 서버가 설치되어 있고 22번 포트가 열려 있다면 RustDesk TCP 터널링으로 SSH 접속을 할 수 있다.
7-1. 회사 Ubuntu에서 SSH 서버 확인
회사 Ubuntu에서 SSH 서버가 설치되어 있는지 확인한다.
systemctl status ssh
설치되어 있지 않다면 설치한다.
sudo apt update
sudo apt install openssh-server
SSH 서버를 실행하고 부팅 시 자동 실행되게 설정한다.
sudo systemctl enable --now ssh
22번 포트가 열려 있는지 확인한다.
ss -ltnp | grep :22
Ubuntu 방화벽이 켜져 있다면 SSH를 허용한다.
sudo ufw allow 22/tcp
sudo ufw reload
방화벽이 꺼져 있다면 이 과정은 필요 없다.
sudo ufw status
8. RustDesk TCP 터널링으로 SSH 연결
RustDesk에서 회사 Ubuntu PC에 연결한 뒤 TCP 터널링을 추가한다.
Local port: 10022
Remote host: 127.0.0.1
Remote port: 22
의미는 다음과 같다.
집 PC의 127.0.0.1:10022
→ RustDesk TCP 터널
→ 회사 Ubuntu PC의 127.0.0.1:22
집 Windows PowerShell에서 연결 테스트를 한다.
Test-NetConnection 127.0.0.1 -Port 10022
정상이라면 다음처럼 나온다.
TcpTestSucceeded : True
이제 집 Windows에서 SSH 접속을 한다.
ssh -p 10022 사용자명@127.0.0.1
예를 들어 Ubuntu 계정이 ubuntuuser라면 다음과 같다.
ssh -p 10022 ubuntuuser@127.0.0.1
이제 집 PC에서 접속하는 것처럼 보이지만 실제로는 다음 구조로 연결된다.
집 Windows SSH
→ 127.0.0.1:10022
→ RustDesk TCP 터널
→ 회사 Ubuntu SSH 서버:22
9. RDP 원격 데스크톱 터널링 설정
Ubuntu 24.04에서는 원격 데스크톱 기능을 통해 RDP 접속을 사용할 수 있다.
RDP 기본 포트는 보통 3389이다.
9-1. 회사 Ubuntu에서 RDP 활성화
Ubuntu에서 설정을 연다.
Settings
→ System
→ Remote Desktop
사용 목적에 따라 다음 중 하나를 켠다.
Remote Login:
새 원격 로그인 세션으로 접속하는 방식
Desktop Sharing:
현재 로그인된 화면을 공유하는 방식
로그인된 화면 공유가 필요하면 Desktop Sharing 방식이 필요할 수 있다.
반대로 원격 접속 전용 세션이 필요하다면 Remote Login 방식이 더 편할 수 있다.
방화벽이 켜져 있다면 3389 포트를 허용한다.
sudo ufw allow 3389/tcp
sudo ufw reload
RDP 포트가 열려 있는지 확인한다.
ss -ltnp | grep :3389
10. RustDesk TCP 터널링으로 RDP 연결
RustDesk에서 회사 Ubuntu PC에 연결한 뒤 TCP 터널링을 추가한다.
Local port: 13389
Remote host: 127.0.0.1
Remote port: 3389
의미는 다음과 같다.
집 PC의 127.0.0.1:13389
→ RustDesk TCP 터널
→ 회사 Ubuntu PC의 127.0.0.1:3389
집 Windows PowerShell에서 확인한다.
Test-NetConnection 127.0.0.1 -Port 13389
정상이라면 다음처럼 나온다.
TcpTestSucceeded : True
이제 Windows 원격 데스크톱 클라이언트로 접속한다.
mstsc /v:127.0.0.1:13389
또는 시작 메뉴에서 원격 데스크톱 연결을 실행한 뒤 다음 주소를 입력한다.
127.0.0.1:13389
구조는 다음과 같다.
집 Windows 원격 데스크톱 클라이언트
→ 127.0.0.1:13389
→ RustDesk TCP 터널
→ 회사 Ubuntu PC:3389
11. 왜 집 PC에서 회사 Ubuntu IP로 직접 접속하면 안 되나?
집 PC에서 다음처럼 직접 접속하려고 하면 실패할 수 있다.
mstsc /v:172.16.x.x:3389
ssh 사용자명@172.16.x.x
이유는 회사 Ubuntu PC가 회사 내부망의 사설 IP를 사용하기 때문이다.
집 PC는 회사 내부망에 직접 들어와 있는 것이 아니므로 해당 IP로 바로 접속할 수 없다.
따라서 항상 RustDesk 터널의 로컬 포트로 접속해야 한다.
RDP:
mstsc /v:127.0.0.1:13389
SSH:
ssh -p 10022 사용자명@127.0.0.1
사내망 웹페이지:
https://127.0.0.1:8443
정리하면 다음과 같다.
잘못된 접근:
집 PC → 회사 내부 IP:포트
올바른 접근:
집 PC → 127.0.0.1:로컬포트 → RustDesk 터널 → 회사 Ubuntu:대상포트
12. RDP와 RustDesk 원격화면의 차이
RustDesk 원격화면은 회사 Ubuntu 화면 전체를 영상처럼 전송한다.
집 PC
→ RustDesk 화면 전송
→ 회사 Ubuntu 화면 조작
반면 RDP 터널링은 집 PC의 RDP 클라이언트가 회사 Ubuntu의 RDP 서비스에 직접 접속하는 구조다.
집 PC RDP 클라이언트
→ RustDesk TCP 터널
→ 회사 Ubuntu RDP 서비스
일반적으로 단순 화면 공유보다 RDP가 더 선명하고 반응성이 좋을 수 있다.
특히 터미널, 브라우저, 문서 작업, 개발 도구 사용에서는 RDP가 더 편할 수 있다.
다만 원격지 Ubuntu의 해상도가 매우 크면 여전히 불편할 수 있다.
예를 들어 회사 Ubuntu 해상도가 다음과 같고,
회사 Ubuntu: 7680 x 2160
집 PC 해상도가 다음과 같다면,
집 Windows: 2560 x 1440
원격 화면이 너무 커서 스크롤이나 화면 이동이 불편할 수 있다.
이 경우에는 회사 Ubuntu의 원격 작업용 해상도를 낮추거나, RDP 설정에서 화면 크기 조정을 사용하는 것이 좋다.
13. 원격 데스크톱 대체: NoMachine
RDP 외에 NoMachine도 사용할 수 있다.
NoMachine은 Linux 원격 데스크톱 대체 프로그램으로, 환경에 따라 RDP보다 화면 품질이나 반응속도가 좋을 때가 있다.
기본 포트는 보통 4000이다.
RustDesk TCP 터널링으로 NoMachine을 쓰려면 다음과 같이 잡을 수 있다.
Local port: 14000
Remote host: 127.0.0.1
Remote port: 4000
NoMachine 클라이언트에서는 다음으로 접속한다.
Host: 127.0.0.1
Port: 14000
Protocol: NX
다만 실제 체감 속도나 입력 문제는 환경에 따라 다르다.
내 환경에서는 기대보다 느렸고, 입력 제어 문제도 있어서 최종적으로는 삭제했다.
Ubuntu에서 NoMachine 삭제 명령은 다음과 같다.
sudo apt purge nomachine
sudo apt autoremove
sudo apt autoclean
sudo rm -rf /usr/NX /etc/NX /var/NX
rm -rf ~/.nx
14. 매번 터널링을 켜야 하나?
RustDesk TCP 터널링은 사용할 때마다 켜져 있어야 한다.
예를 들어 RDP 터널은 다음과 같다.
집 PC RDP 클라이언트
→ 127.0.0.1:13389
→ RustDesk TCP 터널
→ 회사 Ubuntu PC:3389
RustDesk TCP 터널링 창을 닫으면 중간 통로가 끊어진다.
따라서 매번 사용할 때 순서는 다음과 같다.
1. RustDesk 실행
2. 회사 Ubuntu PC에 연결
3. TCP 터널링 추가 또는 실행
4. 집 PC에서 브라우저, SSH, RDP 클라이언트로 127.0.0.1 포트에 접속
사내망 웹페이지:
https://127.0.0.1:8443
SSH 접속:
ssh -p 10022 사용자명@127.0.0.1
RDP 접속:
mstsc /v:127.0.0.1:13389
15. RustDesk 대체 프로그램
RustDesk TCP 터널링 외에도 비슷한 목적의 도구들이 있다.
Tailscale
집 PC와 회사 PC를 같은 가상 사설망에 넣는 방식이다.
설정이 잘 되면 사내 리소스 접근이 RustDesk 터널보다 자연스럽다.
집 PC
→ Tailscale
→ 회사 PC
→ 사내망
RustDesk TCP 터널링의 대체로 가장 먼저 검토할 만하다.
ZeroTier
Tailscale과 비슷한 오버레이 네트워크 도구이다.
가상 LAN을 구성해서 서로 다른 네트워크의 PC를 같은 네트워크처럼 묶을 수 있다.
Cloudflare Tunnel
회사에서 Cloudflare를 사용하거나 Zero Trust 환경을 운영한다면 좋은 선택이다.
다만 개인이 임의로 쓰기보다는 회사 전산팀이 공식적으로 구축하는 방식에 가깝다.
frp, rathole, chisel
VPS 같은 공인 IP 서버를 중계 서버로 두고 리버스 터널을 만드는 방식이다.
집 PC
→ VPS
→ 회사 PC에서 미리 연결한 터널
→ 사내망
강력하지만 회사 보안 정책상 민감할 수 있다.
ngrok
임시 테스트용으로 편리하다.
하지만 외부 공개 주소가 생기기 때문에 사내망 접속용으로 장기 사용하기에는 적합하지 않다.
16. 정리
RustDesk 원격화면으로 회사 Ubuntu를 직접 조작하면 느릴 수 있다.
집 PC
→ RustDesk 원격화면
→ 회사 Ubuntu PC 화면 조작
대신 RustDesk TCP 터널링을 사용하면 집 PC의 브라우저, SSH 클라이언트, RDP 클라이언트가 회사 Ubuntu 또는 사내 서비스에 직접 연결되는 것처럼 사용할 수 있다.
사내망 웹페이지 접속용 터널:
Local port: 8443
Remote host: internal.example.local
Remote port: 443
SSH 접속용 터널:
Local port: 10022
Remote host: 127.0.0.1
Remote port: 22
RDP 접속용 터널:
Local port: 13389
Remote host: 127.0.0.1
Remote port: 3389
집 PC에서 접속:
# 사내망 웹페이지
https://127.0.0.1:8443
# SSH
ssh -p 10022 사용자명@127.0.0.1
# RDP
mstsc /v:127.0.0.1:13389
핵심은 다음과 같다.
사내 IP로 직접 접속하는 것이 아니라,
집 PC의 localhost 포트를 RustDesk 터널로 회사 Ubuntu PC의 사내 서비스에 연결한다.
이 방식은 회사 PC가 공인 IP가 아니어도 사용할 수 있고, 공유기 포트포워딩 설정 없이도 가능하다.
다만 회사 내부망 접근과 관련된 작업이므로 반드시 회사 보안 정책에 맞게 사용해야 한다.
'컴퓨터' 카테고리의 다른 글
| Tapo H200 D230 녹화 영상 다운로더 (1) | 2026.07.12 |
|---|---|
| SK 통신사 모뎀 + iptime 공유기 환경에서 외부 VPN 접속 구축기 (WireGuard) (0) | 2026.05.04 |
| GitHub 대용량 모델 파일 관리: 자동 분할 및 병합 (2) | 2026.02.06 |
| 리눅스 터미널 환경 구성 (3) | 2025.06.19 |
| i9-13900k 언더볼팅 ASRock (274) | 2023.12.05 |