BIND DNS 설정 문제..
안녕하세요. 번번히 KLDP 에서 신세지고 갑니다. 오늘도 잘 부탁드리겠습니다.
상황은 이렇습니다.
도메인 mydomain.com 을 호스팅회사A 를 통해 구입했습니다. 해당 도메인에 대한 네임서버를 자체 운영하기 위해서, ns.mydomain.com 호스트에 BIND 를 설치하고 루트파일과 zone파일을 설정하였습니다. mydomain.com 도메인을 등록할 때 NS1 은 ns.mydomain.com 으로 명시하였고, NS2 와 NS3 는 본 도메인 등록을 대행해준 호스팅회사A 가 엔드유저들에게 제공하는 네임서버 ns1.A.com 과 ns2.A.com 을 각각 명시하였습니다.
mydomain.com 도메인은 dyndns.com 이나 changeip.com 같이, 실시간 도메인 매칭 서비스를 제공해주기 위해 만들었습니다. 따라서 zone파일의 SOA 레코드에는 캐쉬 minimum 값을 0 으로 설정해서, 인터넷상의 모든 호스트는 항상 최신의 데이터를 받아갈 수 있게 했습니다. BIND 가 설치된 ns.mydomain.com 리눅스 박스에는 BIND 와 함께, 클라이언트로부터 도메인 정보 갱신 요청을 받아서 zone파일을 수정해주는 에이젼트가 함께 올라가 있습니다. 이 에이젼트는 클라이언트가 특정 도메인을 자신의 IP 로 갱신하도록 요청하면, zone 파일의 해당 레코드를 찾아서 수정한 뒤, named 를 재시작시키는 동작을 반복합니다.
문제는 이렇습니다.
위의 시나리오대로 작업을 다 진행해놓고 나니, 예기치 않은 문제가 발생했습니다. 두가지 상황입니다.
문제상황1) 인터넷에 연결된 임의의 호스트 hostA 에서는 mydomain.com 의 서브도메인인 www.mydomain.com 의 주소를 잘 resolve해냅니다. 그런데 다른 다른 네트워크에 속해있는 임의의 호스트 hostB 에서는 www.mydomain.com 을 resolve하지 못합니다. 이는, hostB 가 mydomain.com 도메인 등록 사항에 명시된 NS1 값인 ns.mydomain.com 로부터 www 서브도메인을 쿼리하는것이 아니라, 제3의 네임서버에 엉뚱한 쿼리를 날리기 때문인것으로 생각됩니다. 위 시나리오대로, 전 세계 인터넷의 모든 호스트에서 mydomain.com 도메인을 resolve 할때 항상 ns.mydomain.com 으로 쿼리하게 하려면 어떻게 해야 합니까?
문제상황2) 어떤 호스트에서는 이런 현상도 발생합니다.
subdomain1.mydomain.com -> resolve 성공
subdomain2.mydomain.com -> resolve 성공
subdomain3.mydomain.com -> resolve 할수 없음
subdomain4.mydomain.com -> resolve 성공
...
이런식으로, mydomain.com 에 등록된 여러 서브도메인중 몇몇개만 resolve 하지 못하는 것입니다. 이런 현상은 왜 발생하는건가요? 또 어떻게 해결할 수 있겠는지요.
감사합니다.
네임서버를 1차 , 2차 , 3차 모두 본인이 운영하는 네임서버로 설정하
네임서버를 1차 , 2차 , 3차 모두 본인이 운영하는 네임서버로 설정하시는 것이 좋을 듯 합니다.
위 글로는 2차,3차는 도메인 등록 대행사의 네임서버를 적은 것 같은데. 그곳에는 해당 네임서버 정보를 정상적으로 가져오지 못 하는 것이지요.
1차 네임서버가 정상작동 한다고 하지만, resolve 하는 곳에서도 모두 1차네임서버에서만 하는 것은 아닙니다.
설명이 좀 장황하게 되서 이해가 잘 안되고 있습니다. ;;;;아래
설명이 좀 장황하게 되서 이해가 잘 안되고 있습니다. ;;;;
아래 부분좀 자세히 써주세요
1. 실제 도메인명과 그 도메인 등록할때 입력한 1차 NS, 2차 NS
2. 그 NS1 의 resolv.conf 와 zone 파일 내용
3. 2차 NS 를 도메인 제공업체에서 서비스를 해주는 겁니까? (secondary)
4. DNS 캐쉬에 대한 정확하게 이해하고 계신지? (이건 질문임...)
http://kkanari.egloos.com/
1. 실제 도메인명과 그 도메인 등록할때 입력한 1차 NS, 2차 NS
1. 실제 도메인명과 그 도메인 등록할때 입력한 1차 NS, 2차 NS
죄송하지만 실제 도메인명은 공개하기가 조금 곤란합니다. mydomain.com 이라고 예를 들어드린것이고.. 도메인 등록할때 입력한 1차 NS 와 2차 NS, 그리고 3차 NS(까지 입력할 수 있더군요)는 이렇습니다.
1차 NS: ns.mydomain.com
2차 NS: ns1.changeip.com
3차 NS: ns2.changeip.com
changeip.com 는 이 도메인을 구입한 대행회사입니다.
2. 그 NS1 의 resolv.conf 와 zone 파일 내용
도메인 mydomain.com 의 zone파일 내용입니다.
3. 2차 NS 를 도메인 제공업체에서 서비스를 해주는 겁니까? (secondary)
네. 해주는겁니다. 위 1 질문에 답변드린 그 주소입니다.
4. DNS 캐쉬에 대한 정확하게 이해하고 계신지? (이건 질문임...)
DNS 캐쉬라는게.. 어떤 호스트에서 www.mydomain.com 를 한번 resolve 했으면, 그 도메인을 다시 참조할때 쿼리하지 않고 저장되어 있는 주소를 사용하는걸로 알고 있습니다. DNS 캐쉬를 보관할 시간은 네임서버에서 지정해주는것이고.. 위 zone파일의 설정에서 보시다싶이 0 으로 주어서 캐쉬를 하지 않도록, 즉 www.mydomain.com 을 참조할때마다 매번 쿼리해서 주소를 얻어가도록 했습니다. www.mydomain.com 에 대한 IP 주소는 클라이언트의 요청에 따라 수시로 바뀌니까요. 갱신된 값을 항상 적용할 수 있어야 하기 때문입니다.
[quote]전 세계 인터넷의 모든 호스트에서 mydomain.com 도
이 부분은 zone 파일 맨 위에
$TTL 0
만 넣어주면 됩니다. 물론 SOA 부분에 minimum 이 대체를 하기도 합니다. :D
그리도 named 를 restart 하는것보단 zone 파일이 수정되고 (시리얼도) refresh 하려면
# rndc reload
하는게 더 편합니다. :)
그리고 값이 잘못 쿼리가 된다는건 캐쉬 문제일 수도 있는데, $TTL 0 이라면 상관없는데 -.-
클라이언트가 윈도우라면, 아래와 같이 local cache 를 날려버릴 수 있습니다.
ipconfig /flushdns
뭐 저도 답변이 되드리지 못한거 같네요 -.- ;;;;
http://kkanari.egloos.com/
댓글 달기