Keepalived 로 VIP 를 올린 뒤 그 주소를 nslookup 으로 조회하면 다음이 나온다.
** server can't find 100.23.18.172.in-addr.arpa.: NXDOMAIN
nslookup <IP> 는 정방향(A) 조회가 아니라 역방향(PTR) 조회다. 질의 이름은 IP 를 뒤집은 100.23.18.172.in-addr.arpa(실제 주소는 172.18.23.100) 이며, 응답한 DNS 서버가 이 영역을 관장하지 않거나 PTR 레코드가 없으면 NXDOMAIN 이 돌아온다.
이 메시지는 Keepalived · VIP · ARP · 커널 설정과 아무 관계가 없다. 그 IP 의 역방향 영역을 아무도 관리하고 있지 않다는 뜻일 뿐이며, 사내 VIP 에서는 이 상태가 오히려 일반적이다.
| 상황 | PTR 필요 여부 |
|---|---|
| 외부로 메일을 보내는 SMTP 서버 | 필요. 수신 측이 역방향 조회 결과로 걸러낸다 |
Kerberos · AD 연동 중 rdns 를 켠 클라이언트 |
필요. 호스트 이름을 역방향으로 정규화한다 |
| 보안 장비 · 감사 로그에서 이름 표기를 요구 | 상황에 따라 |
| 웹 · API · DB · 클러스터 내부 VIP | 대체로 불필요 |
Kerberos 는 /etc/krb5.conf 의 [libdefaults] rdns 값에 달려 있다. MIT krb5 는 이 값이 참이면 서비스 호스트 이름을 역방향 조회로 정규화하므로, 역방향이 없거나 틀리면 Server not found in Kerberos database 로 이어진다. 역방향을 관리할 수 없는 환경이면 rdns = false 로 두는 편이 안전하다.
관리 중인 DNS 서버가 있으면 역방향 영역에 PTR 을 추가한다. 존 파일 작성 규칙은 DNS 레코드 종류와 존 파일 작성 을 따른다.
; 23.18.172.in-addr.arpa 영역
100 IN PTR vip.example.com.
정방향(A)도 함께 있어야 한다. 서비스 접근은 이름으로 하고 역방향은 확인용이다.
/etc/hosts 는 nslookup · dig 결과를 바꾸지 못한다. 두 명령은 DNS 프로토콜로 직접 질의하고 glibc 리졸버의 nsswitch.conf 경로를 타지 않는다. hosts 에 넣으면 ping · curl · 애플리케이션은 이름을 인식하지만 NXDOMAIN 메시지는 그대로 남는다.
메시지 자체를 없애려면 DNS 서버를 하나 두는 수밖에 없다. 서버 몇 대 규모라면 BIND 보다 dnsmasq 가 가볍다.
dnf install -y dnsmasq
# /etc/dnsmasq.d/vip.conf
address=/vip.internal/172.18.23.100
ptr-record=100.23.18.172.in-addr.arpa,vip.internal
systemctl enable --now dnsmasq
# 클라이언트의 /etc/resolv.conf 에 이 서버를 nameserver 로 지정한 뒤
nslookup vip.internal
nslookup 172.18.23.100
ptr-record 의 첫 인자는 뒤집은 이름이다. IP 를 그대로 적으면 동작하지 않는다.
이름은 .local 대신 .internal 처럼 충돌 없는 접미사를 쓴다. .local 은 mDNS(Avahi · Bonjour)가 가로채는 예약 용도라 리눅스 · macOS 가 섞인 망에서 조회가 엉킬 수 있다.
역방향 조회는 VIP 동작 여부와 무관하므로 확인은 L2 · L3 수준에서 한다.
# 어느 노드가 VIP 를 들고 있는지
ip -4 addr show | grep 172.18.23.100
# ARP 레벨에서 소유자(MAC) 확인 - 인터페이스 지정이 필수다
arping -c 3 -I ens192 172.18.23.100
# 주소 중복 검사. 응답이 있으면 충돌이다
arping -D -I ens192 172.18.23.100
arping: Suitable device could not be determined. Please, use option -I. 는 오류가 아니라 인터페이스를 고르지 못했다는 뜻이다. arping 은 라우팅 테이블을 보지 않으므로 NIC 가 여러 개면 자동 선택이 실패한다. ip a 로 이름을 확인해 -I 로 지정한다.
전환 시험은 MASTER 에서 systemctl stop keepalived 한 뒤 다른 노드에서 arping 으로 MAC 이 바뀌는지 본다.