필자는 집에서 다양한 테스트를 위해 3대의 미니PC와 1대의 NAS로 구성된 홈랩을 구축해 활용하고 있다. 이 홈랩에 이런 저런 가상머신과 응용프로그램 간 연동이 늘다 보니 더 이상 IP주소와 hosts 파일만으로는 관리가 어려워졌다. 그래서 시놀로지 NAS를 내부망 DNS 서버로 활용하기로 했다. 시놀로지 NAS의 용도는 참 무궁무진하다.
시놀로지 NAS에 DNS 서버 설치
시놀로지 NAS에 DNS 서버 자체를 설치하는 것은 매우 쉽다. 패키지 센터에서 DNS Server를 검색해 설치하기만 하면 된다.

설치된 DNS 서버를 실행하면 다음과 같이 비어있는 창이 실행된다.
정방향 기본 영역(Forward Primary Zone) 만들기
먼저 Zone(영역)을 만들어야 한다. 이 Zone(영역)은 도메인과 그 하위 도메인에 대한 DNS 정보를 관리하는 단위로서 하나의 DNS 서버가 책임지고 운영하는 관리 범위를 의미한다.

먼저 “생성” 버튼을 눌러 “기본 영역(primary zone)”을 생성해야 한다. 기본 영역은 DNS 서버가 직접 관리하는 도메인의 정보를 저장하고 관리하는 영역이다.
기본 영역 만들기 창이 열리면 다음과 같이 정방향 영역을 선택하고 사용할 도메인 이름과 기본 DNS 서버의 IP를 입력한다.

내부 도메인 이름은 집이나 회사 내에서만 사용할 비공인 도메인을 입력한다. 그렇기 때문에 .com 이나 .co.kr 등 공인 도메인을 넣으면 안된다. 이건 약속이다. 궂이 사용하자면 사용할 수 있겠지만 설정을 잘못하면 오작동의 가능성도 배제할 수 없기 때문에 국제적으로 약속된 .local, .internal, .home 등의 최상위 도메인과 192.168.x.x, 172.16.x.x 등 사설 IP 대역을 연결해 사용하는 것이 바람직 하다.
그래서 도메인 이름에는 blogger.local을 입력했다.
기본 DNS 서버는 DNS 서버로 사용할 시놀로지 NAS의 IP를 입력했다. 당연히 사설 IP다.
“저장”을 누르면 다음과 같이 붉은색 박스로 표시된 정방향 기본 영역이 만들어 진다.

아래의 두 영역은 역방향 기본 영역이다. 이 영역은 설정하지 않아도 일반적인 DNS Query를 처리하는데는 전혀 문제강 없다.
A 레코드 추가하기
정방향 기본 영역(Forward Primary Zone)은 도메인 주소를 IP 주소로 변환하는 데이터가 저장되는 영역이다. 그리고 가장 기본적으로 호스트 이름을 포함하는 도메인 주소와 IP 주소를 연결해 A 레코드를 생성해주면 된다. A 레코드는 Address Record를 줄여 부르는 용어다.
다음과 같이 등록한 도메인을 선택하고 마우스 우클릭을 한 다음 “리소스 레코드” 메뉴를 선택한다.

리로스 레코드 목록 창으로 가면 처음엔 아래 화면의 붉은색 레코드 하나만 있을 것이다. 정방향 기본 영역이 생성되면서 자동으로 등록되는 네임서버만 존재한다. 나머지는 추가로 등록한 A 레코드다.

도메인 주소로 IP를 변환할 때 사용되는 레코드가 A 레코드다. “생성” 메뉴에서 “A 유형”을 선택하면 된다.

다른 유형의 레코드에 대한 설명은 생략한다. A 유형을 선택하면 다음 화면과 같이 호스트 이름과 IP 주소를 입력하는 창이 실행된다.

뒤의 상위 도메인 주소는 고정되어 있는 것을 알 수 있다. 앞의 이름에 “호스트 네임”을 입력한다. 그리고 IP 주소에 실제 IP 주소를 입력하면 된다. 아래 붉은 상자가 실제로 등록된 화면이다.
여기까지만 진행하고 Windows, Mac, Linux 등에서 두 번째 DNS 서버 주소를 앞의 DNS 서버에서 정방향 기본 영역을 생성할 때 입력한 DNS 서버의 주소인 192.168.219.100을 입력해주면 내부망에서 등록한 *.blogger.local 도메인 주소를 IP 주소로 변환할 수 있다.
DNS 서버 스위치 및 이름 풀이 정책(NRPT) 설정 스크립트
문제는 외부에서 VPN을 통해 홈 네트워크에 연결한 경우 내부 도메인 주소의 DNS Query가 2차 DNS 서버로 등록한 내부 DNS 서버가 아닌 1차 DNS 서버로만 가고 2차 DNS 서버로는 요청이 가지 않는 경우가 발생한다. 특히 Windows의 PPTP VPN 연결 및 Split Tunneling을 사용하면 거의 100%의 확률로 이 문제가 발생한다.
그래서 다음의 파워쉘 스크립트를 작성해 관리자 권한으로 실행하도록 하여 문제를 해결했다.
# DNS Switch Script
# Windows 11 PowerShell
# 현재 연결된 Wi-Fi SSID 가져오기
$ssid = (netsh wlan show interfaces) |
Select-String 'SSID' |
ForEach-Object { ($_ -split ':')[1].Trim() } |
Select-Object -First 1
# 네트워크 어댑터 이름 (Wi-Fi 기준, 필요시 Ethernet으로 변경)
$adapter = "Wi-Fi"
Write-Host "현재 연결된 SSID: $ssid"
# PPTP VPN 연결 상태 확인
$vpnStatus = (Get-VpnConnection -Name "PPTP_AX600M" -ErrorAction SilentlyContinue).ConnectionStatus
$isVpnConnected = ($vpnStatus -eq "Connected")
if ($ssid -eq "blogger-5g" -or $ssid -eq "blogger.pe.kr-2g" -or $isVpnConnected) {
Write-Host "내부망 SSID 또는 외부망에서 홈 VPN 연결 감지됨 → NAS DNS 우선 적용"
Set-DnsClientServerAddress -InterfaceAlias $adapter -ServerAddresses ("192.168.219.100","164.124.101.2")
} else {
Write-Host "외부망 SSID 감지됨 → 공용 DNS 우선 적용"
Set-DnsClientServerAddress -InterfaceAlias $adapter -ServerAddresses ("164.124.101.2","192.168.219.100")
}
# blogger.local 도메인에 대해서는 무조건 내부 DNS 서버로 이름 풀이를 요청하도록 강제 설정
Add-DnsClientNrptRule -Namespace ".blogger.local" -NameServers "192.168.219.100"
이 스크립트를 적용하니 외부에서 PPTP VPN 터널 연결 후에도 홈 네트워크의 홈랩 환경 장비들을 잘 찾고 있다.
#시놀로지NAS #DNS서버
답글 남기기