Mobile-DNS 구축(feat. dnsmasq)

Asher·2026년 3월 31일

Linux

목록 보기
3/3
post-thumbnail

0. 도입

Mobile 환경 QA를 하다 보면 한 번쯤 꼭 부딪히는 문제가 있습니다.
바로 “모바일에서 staging 환경을 어떻게 자연스럽게 테스트할 것인가?” 입니다.

Mobile QA에서 겪는 현실적인 문제

PC 환경에서는 비교적 간단합니다.
/etc/hosts 파일만 수정하면 특정 도메인을 원하는 IP로 매핑해서, staging 서버로 트래픽을 보낼 수 있기 때문입니다.

하지만 모바일 환경은 이야기가 다릅니다.

  • 모바일 환경에서는 /etc/hosts 파일을 직접 수정하기 어려움
  • 서비스 도메인을 IP로 직접 입력하거나 우회 방법을 써야 하는 번거로움 존재
  • 실제 서비스 도메인을 기반으로 한 동작(쿠키, 인증 등)을 검증하기 어려움

결국, “진짜 사용자 환경과 동일한 QA”를 하기가 쉽지 않습니다.

이 문제를 해결하기 위해 접근한 방식은 단순합니다.
모바일에서 hosts 수정은 어렵지만, Wi-Fi에 연결된 DNS 서버는 변경할 수 있습니다.

여기서 등장하는 게 바로 dnsmasq 입니다.

구성 아이디어

구성은 생각보다 단순합니다.

  1. 간단한 DNS 서버(dnsmasq) 구축
  2. 특정 도메인을 staging IP로 강제 매핑
  3. 테스트용 Wi-Fi에서 해당 DNS를 사용하도록 설정

이렇게 되면?

test.example.com → (DNS) → staging IP
🎯 목적

이 구조의 핵심 목적은 명확합니다.

모바일 테스트 환경에서도 실제 서비스 도메인을 그대로 사용
요청은 staging 서버로 전달
테스트 단말은 Wi-Fi 연결만으로 자동 세팅 완료

👉 즉,
“아무 설정 없이 QA 가능한 환경”을 만드는 것

기대 효과

이 방식의 장점은 꽤 강력합니다.

✅ 1. QA 준비 시간 단축
매번 IP 입력하거나 별도 설정할 필요 없음
Wi-Fi 연결만 하면 바로 테스트 가능
✅ 2. 실제 환경과 동일한 테스트
도메인을 그대로 사용
쿠키 / 인증 / 세션 / 리디렉션 정상 동작
✅ 3. 테스트 일관성 확보
QA 인원마다 환경 차이 없음

에뮬레이터나 IP 직접 입력 방식은 결국 한계가 있습니다.

하지만 DNS 기반으로 진행하면 가장 현실에 가까운 QA 환경을 만들 수 있어 간단하게 구축하는 방법을 소개하고자 합니다.


1. 구성도

앞서 이야기 한 것처럼 생각보다 구축은 간단합니다.
테스트 DNS 서버에 dnsmasq 패키지를 설치한 후, QA 환경에 맞게 config 파일을 수정해주면 됩니다.

  • 구축 환경
    • OS : Ubuntu 24.04
    • Dnsmasq : version 2.90

2. DNS 서버 구축

2.1 dnsmasq 설치

  • dnsmasq 설치
apt update
apt update dnsmasq
  • 로컬 DNS Resolver 변경

대부분 리눅스에서 systemd-resolved는 기본으로 떠있고,

127.0.0.53:53  ← systemd-resolved (stub resolver)

이미 systemd-resolver가 53번 포트 점유하고 있어 dnsmasq로 Resolver를 변경합니다.

vi /etc/systemd/resolved.conf

## resolved.conf 
#Cache=no-negative
#CacheFromLocalhost=no
DNSStubListener=no
#DNSStubListenerExtra=
rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved
systemctl restart dnsmasq
  • 서비스 체크
netstat -nltp

2.2 dnsmasq 설정 변경

  • config 설정 변경
vi /etc/dnsmasq.conf

## dnsmasq.conf
interface=ens3 # 각 서버 네트워크 인터페이스에 맞게 조정
bind-interfaces
log-queries
log-facility=/var/log/dnsmasq.log
local-service
# 상위 DNS 서버 지정 (dnsmasq가 모르는 도메인은 여기로 물어봄)
server=1.1.1.1
server=8.8.8.8

# 로컬 도메인 우선 참조
domain-needed
bogus-priv
  • resolver 설정 변경
vi /etc/resolv.conf
nameserver 127.0.0.1
#nameserver 1.1.1.1 # 기존 nameserver 주석처리
search openstacklocal
  • dnsmasq 재시작
systemctl restart dnsmasq.service
systemctl status dnsmasq.service


3. DNS 사용 방법

  • host 설정

    • /etc/hosts 에서 host 설정 진행
    • CNAME으로 위임된 Domain은 CNAME까지 hosts 설정
  • host 설정 후 dnsmasq 재시작

systemctl restart dnsmasq.service

3.1 iOS Wi-Fi 설정

  • Wi-Fi 연결 후 설정 진입
  • DNS 구성 클릭
  • DNS: 수동, DNS 서버: DNS 서버 IP입력

3.2 Android 설정

  • Wi-Fi 연결 후 더보기 열기
  • DNS: 고정, DNS1: 서버 IP입력

3.3 정상 질의 확인

  • dnsmasq.log 확인
tail -f /var/log/dnsmasq.log


모바일 환경에서는 단순한 설정 하나도 제약이 많지만,
DNS를 활용하면 오히려 더 유연하고 강력한 테스트 환경을 구성할 수 있습니다.

이번 구성을 통해 Wi-Fi 연결만으로 staging 환경을 자연스럽게 검증할 수 있는 QA 환경을 만들 수 있었고, 실제 사용자와 동일한 조건에서 테스트할 수 있다는 점에서 큰 의미가 있었습니다.

profile
System Engineer의 발전기록

0개의 댓글