스마트홈을 구축하고 나서 가장 먼저 떠오르는 아쉬움이 하나 있다. 바로 집 밖에서는 아무것도 제어할 수 없다는 점이다. Home Assistant를 로컬 네트워크에서만 쓰다 보면, 외출 중에 에어컨을 켜거나 조명 상태를 확인하고 싶을 때 결국 손을 쓸 수 없게 된다. 외부 접속 설정은 그래서 단순한 편의 기능이 아니라, 스마트홈의 완성도를 한 단계 끌어올리는 핵심 작업이다. 이번 글에서는 DuckDNS를 이용한 도메인 설정부터 포트포워딩, 그리고 보안 강화까지 실제 사용 관점에서 차근차근 정리해 보았다.
외부 접속이 필요한 이유와 전체 구조 이해하기
Home Assistant는 기본적으로 로컬 IP 주소(예: 192.168.0.x)를 통해서만 접근이 가능하다. 이 주소는 집 안의 공유기가 할당한 사설 IP이기 때문에, 외부 인터넷에서는 이 주소로 직접 접근하는 것이 불가능하다. 외부에서 접속하려면 크게 세 가지 요소가 갖춰져야 한다. 첫째, 공인 IP를 통해 트래픽을 내부 서버로 전달해 주는 포트포워딩, 둘째 유동적으로 바뀌는 공인 IP를 고정 도메인으로 연결해 주는 DDNS(동적 DNS), 셋째 통신을 암호화하는 HTTPS 인증서다. 이 세 가지가 맞물려야 외부에서 안전하게 Home Assistant에 접근할 수 있다.
DuckDNS 설정: 유동 IP 문제를 도메인으로 해결하기
가정용 인터넷은 대부분 공인 IP가 수시로 바뀌는 유동 IP 방식이다. 매번 바뀌는 IP를 기억하고 입력하는 것은 현실적으로 불가능하기 때문에, DuckDNS처럼 무료로 사용할 수 있는 DDNS 서비스를 활용하는 것이 일반적이다. DuckDNS는 내가원하는이름.duckdns.org 형식의 도메인을 무료로 제공하며, 현재 IP가 바뀌더라도 자동으로 도메인이 갱신되도록 설정할 수 있다.
먼저 duckdns.org에 접속해 GitHub, Google, Reddit 등 소셜 계정으로 로그인한다. 로그인 후 원하는 서브도메인 이름을 입력하고 add domain 버튼을 누르면 도메인이 생성된다. 화면 상단에 표시되는 토큰(token)은 나중에 꼭 필요하니 메모해 두자.
다음으로 Home Assistant의 애드온 스토어에서 DuckDNS 애드온을 설치한다. 설치 후 애드온 설정 탭에서 아래와 같이 구성한다.
{
"domains": ["내서브도메인.duckdns.org"],
"token": "DuckDNS에서_복사한_토큰",
"accept_terms": true,
"certfile": "fullchain.pem",
"keyfile": "privkey.pem"
}
accept_terms: true로 설정하면 DuckDNS 애드온이 Let’s Encrypt 인증서를 자동으로 발급하고 갱신해 준다. 이 인증서가 있어야 HTTPS 통신이 가능해진다. 설정을 저장하고 애드온을 시작하면, 잠시 후 SSL 인증서가 생성된다.
포트포워딩: 공유기가 트래픽을 전달하도록 설정하기
DuckDNS 도메인이 내 공인 IP를 가리키도록 설정했다면, 이제 공유기가 외부에서 들어오는 요청을 Home Assistant가 설치된 기기로 넘겨줄 수 있도록 포트포워딩(Port Forwarding)을 설정해야 한다.
공유기 관리 페이지에 접속한다. 대부분 브라우저 주소창에 192.168.0.1 또는 192.168.1.1을 입력하면 접근할 수 있다. 제조사마다 메뉴 이름이 다르지만 보통 NAT 설정, 가상 서버, 또는 포트포워딩이라는 메뉴를 찾으면 된다.
설정 내용은 다음과 같다.
| 항목 | 설정값 | 설명 |
|---|---|---|
| 외부 포트 | 8123 | 인터넷에서 들어오는 포트 번호 |
| 내부 IP | HA 설치 기기의 로컬 IP | 예: 192.168.0.100 |
| 내부 포트 | 8123 | HA가 실제로 수신하는 포트 |
| 프로토콜 | TCP | 웹 통신에 사용되는 프로토콜 |
주의할 점은 Home Assistant가 설치된 기기의 로컬 IP가 고정되어 있어야 한다는 것이다. 공유기의 DHCP 설정에서 해당 기기의 MAC 주소를 기반으로 IP를 고정하는 것을 추천한다. 그렇지 않으면 기기가 재부팅될 때마다 IP가 바뀌어 포트포워딩이 엉뚱한 곳을 가리킬 수 있다.
configuration.yaml에서 HTTPS 활성화하기
DuckDNS 애드온이 발급한 인증서를 실제로 사용하려면 configuration.yaml 파일에 HTTP 설정을 추가해야 한다. 파일 편집기 애드온이나 SSH를 통해 해당 파일을 열고 다음 내용을 추가한다.
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
저장 후 Home Assistant를 재시작하면 이제부터는 https://내서브도메인.duckdns.org:8123 주소로 외부에서 접속할 수 있게 된다.
함께 보면 좋은 글