DNS 설정
NuFi는 dashboard.nufi.com, grafana.nufi.com 등 서브도메인 기반으로 서비스에 접속합니다. 설치 후 클라이언트 PC에서 이 도메인들이 NuFi 서버 IP로 해석되도록 로컬 DNS를 설정해야 합니다.
이 설정은 NuFi 서버가 아닌, 접속할 클라이언트 PC에서 진행합니다.
사전 확인
시작하기 전에 다음 정보를 준비합니다.
| 항목 | 설명 | 확인 방법 |
|---|---|---|
| NuFi 서버 IP | NuFi가 설치된 서버(마스터 노드)의 IP | 서버에서 ip addr show 실행 |
| 네트워크 연결 | 클라이언트 → 서버 간 통신 가능 | ping <서버 IP> |
ping이 안 되면 같은 네트워크에 있는지, 방화벽 설정을 확인하세요.
OS별 설정
- Windows
- macOS
- Linux
1. 현재 DNS 서버 확인
Acrylic의 upstream으로 설정할 기존 DNS 서버 IP를 먼저 확인합니다.
PowerShell을 관리자 권한으로 실행합니다.
시작 메뉴에서
powershell검색 → 관리자 권한으로 실행 클릭
Get-DnsClientServerAddress -InterfaceAlias (Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object -First 1).Name | Select-Object -ExpandProperty ServerAddresses
출력 예시:
192.168.10.123
여기서 나온 IP를 5단계에서 사용합니다. DNS 서버가 없거나 확인이 안 되면
8.8.8.8(Google 공용 DNS)을 사용합니다.
2. Chocolatey 설치
이미 설치되어 있으면 3번부터 진행합니다.
# 설치 확인 (버전이 나오면 이미 설치된 상태)
choco --version
# 설치되어 있지 않으면 실행
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
3. Acrylic DNS Proxy 설치
choco install acrylic-dns-proxy -y
4. 와일드카드 DNS 설정
<NuFi 서버 IP>를 실제 IP로 변경합니다.
$acrylicHosts = "C:\Program Files (x86)\Acrylic DNS Proxy\AcrylicHosts.txt"
$content = Get-Content $acrylicHosts
$content = $content | Where-Object { $_ -notmatch "nufi" }
$content += "<NuFi 서버 IP> *.nufi.com"
Set-Content $acrylicHosts $content -Encoding UTF8
5. 커스텀 DNS 서버 설정 (upstream)
Acrylic이 *.nufi.com 이외의 DNS 요청을 기존 DNS 서버로 전달하도록 설정합니다.
<기존 DNS 서버 IP>를 1단계에서 확인한 IP로 변경합니다.
$acrylicConf = "C:\Program Files (x86)\Acrylic DNS Proxy\AcrylicConfiguration.ini"
(Get-Content $acrylicConf) `
-replace 'PrimaryServerAddress=.*', 'PrimaryServerAddress=<기존 DNS 서버 IP>' `
-replace 'SinkholeIPv6Lookups=No', 'SinkholeIPv6Lookups=Yes' |
Set-Content $acrylicConf
6. Acrylic 서비스 재시작
Restart-Service -Name "AcrylicDNSProxySvc"
7. 네트워크 어댑터 DNS 변경
Acrylic이 upstream으로 기존 DNS를 사용하므로, 네트워크 어댑터의 DNS를 Acrylic(127.0.0.1)으로 설정합니다.
$adapter = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' } | Select-Object -First 1
Set-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -ServerAddresses @("127.0.0.1")
8. DNS 캐시 초기화
ipconfig /flushdns
9. 테스트
NuFi 도메인 확인:
nslookup dashboard.nufi.com 127.0.0.1
아래와 같이 NuFi 서버 IP가 출력되면 성공입니다.
Server: Unknown
Address: 127.0.0.1
Non-authoritative answer:
Name: dashboard.nufi.com
Address: <NuFi 서버 IP>
"Non-authoritative answer"는 로컬 DNS 프록시의 정상 응답입니다.
일반 도메인도 정상 동작하는지 확인합니다:
nslookup google.com 127.0.0.1
정리
DNS 설정이 더 이상 필요하지 않을 때 아래 순서대로 정리합니다.
반드시 DNS 복원을 먼저 한 후 Acrylic을 중지해야 합니다. DNS가 127.0.0.1인 상태에서 Acrylic을 먼저 중지하면 인터넷 연결이 끊깁니다.
# 1. DNS 먼저 복원
$adapter = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' } | Select-Object -First 1
Set-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -ResetServerAddresses
ipconfig /flushdns
# 2. Acrylic 서비스 중지
Stop-Service -Name "AcrylicDNSProxySvc"
1. Homebrew 설치
이미 설치되어 있으면 2번부터 진행합니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. dnsmasq 설치
brew install dnsmasq
3. 와일드카드 DNS 설정
<NuFi 서버 IP>를 실제 IP로 변경합니다.
echo 'address=/nufi.com/<NuFi 서버 IP>' >> "$(brew --prefix)/etc/dnsmasq.conf"
4. dnsmasq 실행
sudo brew services start dnsmasq
5. DNS resolver 설정
*.nufi.com 도메인만 dnsmasq로 라우팅합니다. 기존 DNS 설정에는 영향을 주지 않습니다.
sudo mkdir -p /etc/resolver
echo "nameserver 127.0.0.1" | sudo tee /etc/resolver/nufi.com
6. 테스트
ping dashboard.nufi.com
아래와 같이 NuFi 서버 IP가 출력되면 성공입니다.
PING dashboard.nufi.com (<NuFi 서버 IP>): 56 data bytes
64 bytes from <NuFi 서버 IP>: icmp_seq=0 ttl=64 time=5.160 ms
정리
DNS 설정이 더 이상 필요하지 않을 때 dnsmasq를 중단하고 resolver 파일을 삭제합니다.
sudo brew services stop dnsmasq
sudo rm /etc/resolver/nufi.com
1. 현재 DNS 서버 확인
dnsmasq의 upstream으로 설정할 기존 DNS 서버 IP를 먼저 확인합니다.
resolvectl status | grep "DNS Servers"
출력 예시:
DNS Servers: 192.168.10.1
여기서 나온 IP를 3단계에서 사용합니다. DNS 서버가 없거나 확인이 안 되면
8.8.8.8(Google 공용 DNS)을 사용합니다.
2. dnsmasq 설치
sudo apt install dnsmasq
3. 와일드카드 DNS 설정
<기존 DNS 서버 IP>와 <NuFi 서버 IP>를 실제 값으로 변경합니다.
echo 'server=<기존 DNS 서버 IP>' | sudo tee -a /etc/dnsmasq.conf
echo 'address=/nufi.com/<NuFi 서버 IP>' | sudo tee -a /etc/dnsmasq.conf
4. systemd-resolved stub listener 끄기
sudo sed -i 's/#DNSStubListener=yes/DNSStubListener=no/' /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved
5. resolv.conf를 127.0.0.1로 변경
dnsmasq가 upstream으로 기존 DNS를 사용하므로, resolv.conf는 dnsmasq(127.0.0.1)만 설정합니다.
sudo rm /etc/resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
6. dnsmasq 시작
sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq
7. 테스트
ping dashboard.nufi.com
아래와 같이 NuFi 서버 IP가 출력되면 성공입니다.
PING dashboard.nufi.com (<NuFi 서버 IP>): 56 data bytes
64 bytes from <NuFi 서버 IP>: icmp_seq=0 ttl=64 time=5.160 ms
정리
DNS 설정이 더 이상 필요하지 않을 때 아래 순서대로 정리합니다.
# 1. dnsmasq 중지
sudo systemctl stop dnsmasq
sudo systemctl disable dnsmasq
# 2. systemd-resolved 복원
sudo sed -i 's/DNSStubListener=no/DNSStubListener=yes/' /etc/systemd/resolved.conf
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved