출장지 숙소의 WiFi 로 집에 있는 라즈베리파이에 연결 성공하면서 VPN의 성공적인 셋팅에 큰 재미와 보람을 느끼게 되었다. 동시에 이제 집에 있는 기기들에 접속할 때, 숫자로 된 ip 주소가 아니라 Nas, Desktop 과 같은 문자열로 인식하여 접속한다면 더 편할 것 같다는 생각이 들었다.
즉, 라즈베리파이에 DNS 서버 역할을 맡기고 각 장비의 IP에 도메인 이름(A 레코드) 을 붙여주어 id@장비이름.local 같은 형태로 접근하려 한다. 이렇게 DNS 를 구축하면 내부 전용 DNS라서 외부 공개도 필요 없고, 사용시에 192.168.0.20 과 같은 IP주소를 모두 기억해서 입력 할 필요 없이 깔끔하게 사용할 수 있을 것 이다.
1. dnsmasq 설치하기
dnsmasq는 리눅스에서 동작하는 아주 가볍고 빠른 DNS + DHCP 서버다. 한마디로, 우리 집 네트워크 안에서"IP 주소에 이름을 붙여주는 전화번호부 역할" 을 해주는 녀석이라고 보면 된다. 2001년 경에 Simon Kelley (사이먼 켈리) 라는 선생님께서 오픈 소스로 만들어주셨다.
라즈베리파이에 이 dnsmasq 를 설치한다.
sudo apt update
sudo apt install dnsmasq

패키지를 설치하면서, 설치 과정을 항상 유심히 봐야하는데, 중간에 Failed 가 뜰 수 있기 때문이다.
패키지간 의존성 문제(선 설치해야하는 패키지가 있어야 하는경우)도 있을 수도 있고, 또 다른 문제로 패키지 설치가 안될 수 가 있는데, 지금의 경우는 리눅스가 기본적으로 53번 포트를 사용하고 있기 때문에 오류가 발생하였다.
여기서 선택지는 1, dnsmasq 를 다른 포트로 설정하거나, 2. 시스템이 사용하는 sysyem-resolved 를 비활성화 하고, 53번 포트를 dnsmasq 가 사용하도록 하는 것이다. 얼핏 보면 dnsmasq 를 다른 포트로 설정해주는게 기존 포트를 살리면서도 새로운 패키지를 이용할 수 있을 것 처럼 보일 수 있다. 하지만, 앞으로 있을 모든 dns 요청은 대부분 53번 포트로 올 것이기 때문에, 이 요청들을 하나하나 dnsmasq 포트로 설정하는게 더 복잡할 것 같기 때문에, 2번 방법으로 진행한다.
2. dnsmasq 를 기본 dns 로 사용하기
2-1. systemd-resolved 를 끈다
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
2-2. /etc/resolve.conf 링크를 수정한다
sudo rm /etc/resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
2-3. dnsmasq 를 재시작 한다.
sudo systemctl restart dnsmasq
2-4. 53번 포트를 어떤 패키지가 점유 중인지 확인한다.
sudo lsof -i :53
이제 dnsmasq 가 로컬 DNS 서버로 사용된다.!!
3. 설정파일 만들기
설정파일에 내가 사용할 hostname 과 장비의 ip 를 매핑하여 등록한다. 원래는 도메인 이름을 붙여서 사용자ID@hostname.domain 식으로 사용하지만, 나는 사용자ID@raspberrypi, 혹은 사용자ID@Desktop 식으로 사용할 것이기 때문에, 설정파일을 만들고, 호스트 이름이 적힌 파일을 따로 만들어 관리할 것이다.
3-1. 기본 설정파일 작성
sudo vi /etc/dnsmasq.d/simple-hosts.conf

내용은 위와 같이 입격하여 simple-host.conf 파일을 만들어준다.
3-2. /etc/dnsmasq.hosts 파일 작성
일단 자주 사용할 장비들만 매핑하여 파일을 생성한다. 앞으로 더 사용할 장비는 dnsmasq.hosts에 장비와 ip 를 추가하면 된다.
192.168.0.54 raspberrypi
192.168.0.27 desktop
192.168.0.20 sysnologynas
3-3. 설정이 바뀌었으니 dnsmasq 를 재시작 해준다.
sudo systemctl restart dnsmasq
4. VLAN 클라이언트의 설정
기본 DNS 를 라즈베리파이로 바꿔준다.
나 같은 경우는 ssh 접속 프로그램인 MobaExterm 을 사용하고 있기 때문에, 데스크탑에서 바로 맥북으로 접속하고, wireGuard 폴더 아래에 있는 client.conf 파일에서 DNS = 8.8.8.8 에서 라즈베리파이의 주소인 192.168.0.54 로 바꿔준다.

5. VPN 접속 후 사용해보기
맥북으로 접속하여 wireguard 를 통해 VPN 연결을 한다.
5-1. ssh kang@raspberrypi 로 접속 시도한다.

5-2. ssh kkace22@synologynas 로 접속 시도한다.

해장 장비에 등록된 매핑 정보로 잘 동작 되는 것을 확인할 수 있다.
6. 마무리
DNS 는 설정이 잘못되면 인터넷 연결이 되지 않기 때문에 함부로 건드리면 안되는 것이라는 생각이 강했는데, 간단하게 내가 사용하고 싶은 설정들을 추가하여 편리하게 사용할 수 있게 되어 좋았다. 이제 집 안에 있는 기기들은 내가 기억하기 쉬운 이름들로 등록하여 접속할 수 있으니 ip 주소를 하나하나 외울 필요가 없어졌다. 하지만 DHCP 동작으로 IP 주소가 변경될 것을 방지하여, 고정적으로 접속할 필요가 있는 장비들은 라우터 설정에서 ip 를 고정하도록 해야한다.
다음엔, 외부 장소에서 VPN 을 통해 라즈베리파에이 접속하고, WOL 라는 기능으로 장비의 전원을 up & down 하는 기능을 실습해 보려고 한다. 이 기능을 구축해 놓으면, 이제 언제 어디서든 집에 있는 내 기기에 접속할 수 있다는 안정감(?) 이 생길 것 같다.
'네트워크 공부 & 실습 > 네트워크 실습' 카테고리의 다른 글
| [Network] Nas 가 죽으면 알림 받기 (5) | 2025.06.26 |
|---|---|
| [Network] static ip 를 셋팅하여 기기간 통신하기. (2) | 2025.06.19 |
| [Network] AWS 탈퇴 및 Blog 스크랩 자동화 스크립트 셋팅하기 (to 라즈베리파이) (2) | 2025.05.28 |
| [Network] 모니터링 자동화 스크립트 파일 -> 라즈베리 파이로 이동하기 (2) | 2025.05.27 |
| [VPN] Raspberry Pi 를 VPN 의 EndPoint 로 만들기 (1) | 2025.05.26 |