밖에서 집 안 NAS나 홈서버에 접속해야 할 때가 있습니다. 서비스별로 포트를 하나씩 열 수도 있지만, 직접 운영해보면 관리가 금방 복잡해집니다. 그래서 저는 외부 접속은 먼저 VPN으로 집 네트워크 안에 들어오는 방식을 기준으로 잡습니다.
작업 기준은 Rocky Linux 9.x / Docker Compose v2 / ipTIME 공유기 / WireGuard 클라이언트 조합입니다. ipTIME은 모델과 펌웨어에 따라 WireGuard 지원 여부가 다르니, 관리 화면에서 VPN 메뉴를 먼저 확인하는 편이 좋습니다.

외부 접속을 VPN으로 묶는 이유
집 안에서만 쓰는 NAS, 홈서버, 프린터, 내부 대시보드는 보통 192.168.0.10, 192.168.0.20 같은 사설 IP 대역에 있습니다. 외부에서는 이 주소로 바로 접근할 수 없기 때문에, 집 공유기나 VPN 서버가 중간 통로 역할을 해야 합니다.
포트포워딩으로 서비스를 직접 열면 처음 설정은 쉬워 보입니다. 하지만 서비스가 늘어날수록 열어둔 포트와 인증 방식을 따로 관리해야 합니다. 반면 WireGuard를 쓰면 외부 기기가 집 안 네트워크에 들어온 것처럼 동작해서, 내부 IP로 NAS나 서버에 접근할 수 있습니다.
| 방식 | 주요 특징 | 추천 대상 |
|---|---|---|
| WireGuard 직접 구성 | 홈서버나 NAS에 VPN 서버 설치 | Linux 서버나 Docker를 다루는 사용자 |
| ipTIME VPN 기능 | 공유기 관리 화면에서 설정 | 간단한 원격 접속이 필요한 사용자 |
| 포트포워딩 직접 개방 | 서비스 포트를 외부에 노출 | 임시 테스트 정도에 적합 |
WireGuard 구성 흐름
WireGuard는 서버와 클라이언트가 서로의 공개키를 등록하는 구조입니다. 서버에는 집 안으로 들어올 클라이언트 정보를 넣고, 노트북이나 휴대폰에는 집으로 접속할 서버 정보를 넣습니다.
Linux 서버에서 직접 구성한다면 기본 흐름은 아래처럼 시작합니다.
sudo dnf install wireguard-tools
wg genkey | tee privatekey | wg pubkey > publickey
서버 설정은 다음과 같은 형태입니다.
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = 서버_개인키
[Peer]
PublicKey = 클라이언트_공개키
AllowedIPs = 10.8.0.2/32
클라이언트 쪽 설정에서는 집 공인 IP나 DDNS 주소를 Endpoint에 넣습니다.
[Interface]
Address = 10.8.0.2/24
PrivateKey = 클라이언트_개인키
DNS = 192.168.0.1
[Peer]
PublicKey = 서버_공개키
Endpoint = example.iptime.org:51820
AllowedIPs = 192.168.0.0/24, 10.8.0.0/24
PersistentKeepalive = 25
여기서 핵심은 AllowedIPs입니다. 집 내부망만 VPN으로 보내려면 192.168.0.0/24처럼 내부 대역을 넣습니다. 외부 인터넷 트래픽까지 모두 집을 거치게 하려면 0.0.0.0/0을 쓰지만, 홈서버 접속 목적이라면 내부망만 보내는 구성이 보통 더 간단합니다.

ipTIME에서 확인할 설정
ipTIME을 사용한다면 먼저 DDNS, 포트포워딩, VPN 메뉴를 확인합니다. 집 인터넷은 공인 IP가 바뀔 수 있으므로 DDNS를 설정해두면 외부 접속 주소를 고정된 것처럼 쓸 수 있습니다.
WireGuard 서버를 홈서버에 올렸다면 ipTIME에서는 UDP 포트 하나만 서버로 넘겨주면 됩니다.
| 항목 | 설정 위치 | 값 예시 | 확인할 점 |
|---|---|---|---|
| ipTIME DDNS | 고급 설정 또는 특수 기능 메뉴 | example.iptime.org |
외부 접속 주소로 사용 |
| 포트포워딩 | NAT/라우터 관리 | UDP 51820 → 서버 IP |
TCP가 아니라 UDP로 설정 |
| 내부 서버 IP | DHCP 고정 할당 | 192.168.0.10 |
서버 IP가 바뀌면 접속이 끊김 |
| WireGuard 클라이언트 | 모바일 앱 또는 PC 앱 | 설정 파일 import | QR 등록이 가능하면 편함 |
공유기 자체에서 WireGuard 서버 기능을 지원한다면 홈서버에 따로 설치하지 않아도 됩니다. 다만 ipTIME은 모델별 차이가 있으니, 관리 페이지에 해당 메뉴가 없다면 펌웨어 업데이트와 지원 모델 여부를 확인해야 합니다. 이 부분은 현재 사용하는 공유기 모델 기준으로 확인하는 것이 안전합니다.
외부망에서 접속 테스트하기
설정을 마친 뒤에는 집 와이파이에 붙은 상태로 테스트하면 결과가 헷갈릴 수 있습니다. 휴대폰을 LTE나 5G로 바꾼 다음 WireGuard를 켜고 내부 IP로 접속해보는 편이 확실합니다.
예를 들어 NAS가 192.168.0.20이면 브라우저에서 해당 내부 주소로 접속해봅니다. SSH 서버라면 아래처럼 확인할 수 있습니다.
ssh [email protected]
접속이 안 될 때는 보통 공유기 포트포워딩, 서버 방화벽, AllowedIPs 대역에서 막힙니다. 특히 Rocky Linux 계열은 firewalld가 켜져 있는 경우가 많아서 UDP 51820 허용 여부를 함께 확인해야 합니다.
sudo firewall-cmd --add-port=51820/udp --permanent
sudo firewall-cmd --reload
운영할 때 주의할 점
VPN이라고 해서 아무렇게나 열어두면 안 됩니다. 클라이언트 설정 파일에는 개인키가 들어가므로 메신저나 공개 저장소에 올리면 안 됩니다. 가족 기기나 노트북마다 키를 따로 만들고, 분실한 기기는 서버 설정에서 해당 Peer만 지우는 방식이 관리하기 좋습니다.

집 밖에서 홈네트워크에 접근하는 목적이라면 처음부터 모든 서비스를 외부에 공개할 필요는 없습니다. WireGuard + ipTIME DDNS + UDP 포트포워딩 하나만 잡아도 NAS, 홈서버, 내부 웹페이지 접근은 꽤 깔끔하게 정리됩니다. 설정 후에는 외부망에서 실제 접속 테스트를 해두고, 공유기 펌웨어와 서버 방화벽 상태를 주기적으로 확인하는 정도면 일상적인 홈서버 운영에는 충분합니다.
답글 남기기