Konqueror를 위한 DNS 프록시 설치하기 (pdnsd)

octaphial의 이미지

새 학교에 도착해서 인터넷을 좀 하려니 인터넷 관리자가 방에 찾아와서 DNS 쿼리를 너무 써서 망에 문제가 생긴다고 하길래, 처음에는 무슨 소린가 하다가 좀 찾아보니 Konqueror에 문제가 있었습니다. 그게 파이어폭스에는 가령 내부에 DNS 캐시를 가지고 있어서 문제가 없는데 Konqueror에는 그런 장치가 없어서 포털 사이트에 접속하면 순간적으로 엄청난 양의 DNS 쿼리를 보내는 것이었습니다. 그래서 결국 DNS 프록시를 설치해서 해결을 봤습니다.

원리는 간단해서 로컬에 캐시 역할을 하는 프록시 DNS 서버를 설치합니다. 그리고 그 DNS로 설정하면 알아서 캐싱이 되는 방식입니다.

127.0.0.1 -> 127.0.0.1:53 (로컬의 DNS 프록시) -> X.Y.Z.W:53 (진짜 DNS)

저는 pdnsd라는 놈으로 골랐습니다. 우분투에서 설치해 보면 예시용 /etc/pdnsd.conf가 이미 설치되어 있습니다. 거기서 man pdnsd를 참조해서 주석 두어 군데 풀고 DNS를 원하는 곳으로 설정합니다. 마지막으로 네트워크의 DNS 설정을 127.0.0.1로 맞추면 끝입니다.

Forums: 
atie의 이미지

개인용으로 쓰는 dns가 있군요. 찾아보려고 하지 않으면 접하기 힘든 정보인데 이왕 강좌에 올리셨으니 "두어 군데" 주석 푼 것도 알려주시면 좋겠습니다.
----
I paint objects as I think them, not as I see them.
atie's minipage

----
I paint objects as I think them, not as I see them.
atie's minipage

octaphial의 이미지

global {
        perm_cache=512;
        cache_dir="/var/cache/pdnsd";
        max_ttl=604800;
        run_as="pdnsd";
        paranoid=on;
#       next setting allows ppp/ip-up update the name servers -- ABa / 20040213
        status_ctl=on;
        server_port=53;
        server_ip="127.0.0.1";
}
 
server {
        ip="X.Y.Z.W";
        timeout=30;
        interval=30;
        uptest=ping;
        ping_timeout=50;
        purge_cache=off;
}

별 건 아니구요, 위의 server_port, server_ip 주석을 풀고, 아래 server { ... } 부분이 전부 주석 처리되어 있어서 그걸 풀고 ip 부분을 실제 DNS 서버 주소로 채우면 됩니다. 예시용 pdnsd.conf에는 아래에 별별 것이 있는데 다 지우고 사용합니다. 그리고 PPP나 DHCP를 사용할 경우에는 매번 resolv.conf가 바뀌므로 그에 대한 대책을 세우셔야 합니다. (DHCP의 경우에는 dhcpcd.conf를 손보는 게 가장 나을 듯하네요.) 저는 해당이 없습니다.

feanor의 이미지

저는 PowerDNS의 캐시 서버(데비안의 pdns-recursor 패키지)를 같은 용도로 쓰고 있습니다.

김정균의 이미지

흠 그정도라면 nscd 가 더 낳지 않나요?

danskesb의 이미지

낳 -> 낫.
저도 Konqueror를 이따금씩 쓰기 때문에 로컬 DNS 캐시 만들기는 상당히 유용하게 쓸 것 같습니다. 그래도 Konqueror에 DNS 캐시를 구현하는 게 가장 좋은 방법이라고 생각합니다.
---- 절취선 ----
http://blog.peremen.name

김정균의 이미지

글쎄요. 굳이 시스템의 glibc 에서 이미 지원을 하는 nscd 를 놓고 따로 pdnsd를 구동시킬 이유가 있을까 궁금하군요. nscd 의 존재를 몰라서 pdnsd 를 사용하겠다는 것이라면 모르겠지만요. 뭐 개인차이기는 하겠지요. :-)

atie의 이미지

저야 누가와서 dns 어떠니하고 이야기할 경우가 없으니 위에 거론된 세 가지 프로그램을 써 볼 기회가 언제일지 알 수는 없지만 궁금해서 셋의 데비안 패키지 설명을 찾아보았습니다. 이 설명만을 가지고 보면 octaphial님이 문제의 경우에 맞는 것을 잘 고른 듯 합니다.

pdnsd (Proxy DNS Server)
pdnsd는 캐시된 내용을 종료시 하드디스크에 저장을 하는 영구적인 캐싱 방식의 프록시 dns 서버이고, 예를 들어 다이얼인 네트웍에서 dns 서버가 다운되었거나 연결되지 않을 경우 등을 대비해서 고안된 것입니다. pdnsd는 예를 들어 프로그램 시작시 dns 참조를 하고 그 동작을 변경하는 설정을 지원하지 않는 프로그램을 위하여, 멈춰진 dns 조회의 결과 때문에 자주 프로그램이 몇 분 동안 대기하거나 심지어 프로그램이 죽는 경우를 방지합니다. 유닉스 버전의 넷스케이프가 이러한 동작을 하는 예입니다.

pdns-recursor (PowerDNS recursor)
PowerDNS는 간단한 zone 파일부터 관계형 데이타베이스에 이르기까지 많은 수의 다른 백엔드를 지원하고 로드 밸런싱과 장애극복 알고리즘을 가지는 다목적의 네임서버입니다. PowerDNS는 속도와 보안을 강조하고 있습니다. 이 재귀형 네임서버는 인터넷에 나아가 다른 도메인에 대한 조회를 분석합니다.

nscd (Name Service Cache Daemon)
실행 중인 프로그램을 위하여 passwd, group과 호스트 참조를 처리하는 데몬이고 다음의 조회를 위하여 결과를 캐시합니다. LDAP, NIS 또는 NIS+와 같은 느린 서비스를 사용하는 경우에만 이 패키지를 설치하여야 합니다.
----
I paint objects as I think them, not as I see them.
atie's minipage

----
I paint objects as I think them, not as I see them.
atie's minipage

김정균의 이미지

nscd (Name Service Cache Daemon)
실행 중인 프로그램을 위하여 passwd, group과 호스트 참조를 처리하는 데몬이고 다음의 조회를 위하여 결과를 캐시합니다. LDAP, NIS 또는 NIS+와 같은 느린 서비스를 사용하는 경우에만 이 패키지를 설치하여야 합니다.

이 부분은 잘못된 설명인 것 같습니다. nscd 의 가장 큰 기능은 dns resolving 을 caching 하는 것입니다. 그 외의 passwd, group, hosts 등은 그 외의 부가기능입니다. 즉 pdnsd 가 하는 역할을 nscd 가 충분히 한다는 얘기입니다. nscd 를 구동하신 후에, tcpdump 같은 것으로 53번을 덤프 떠 보시면 처음 몇번 간 이후로는 가지 않는 다는 것을 확인 하실 수 있습니다. 위의 설명에서 "LDAP, NIS 또는 NIS+와 같은 느린 서비스를 사용하는 경우에만 이 패키지를 설치하여야 합니다." 라고 하지만 굳이 nscd 를 구동하지 않을 이유가 없습니다. (저의 경우에는 passwd 만 nscd.conf 에서 캐시 하지 않도록 하고 사용하는 편입니다. passwd 가 캐싱될 경우 유저 추가등시에 헷갈리는 상황을 만들기도 합니다.)

atie의 이미지

데비안 패키지의 영문 번역을 한 것입니다. 아무래도 직접 쓰시는 분이 더 속속들이 장단점을 잘 알고 계실테니 사용 예를 지적해 주셔서 고맙습니다. 하드디스크에 캐싱된 결과를 저장할 수도 있나요? pdnsd의 경우는 저 위에 제가 개인용이라 쓸 때 만든이가 자신의 노트북에 사용하고자 해서라는 만든 동기를 보아서 그렇게 썼었던 것이라 nscd에 대해서는 그 점이 궁금합니다.
----
I paint objects as I think them, not as I see them.
atie's minipage

----
I paint objects as I think them, not as I see them.
atie's minipage

keizie의 이미지

DNS 포워딩에 추가로 간이 DHCP 역할도 합니다.

octaphial의 이미지

이 글에 덧글이 많이 달려서 무슨 일인가 하고 봤습니다. 저로서는 뭐 자세한 속사정은 알 도리가 없지만, 단지 구글에 konqueror dns cache 하고 물어봤을 때 가장 먼저 나온 대답대로 한 것 뿐이니까요. 그리고 어찌 되었던 간에 제가 선택한 pdnsd는 제 컴퓨터에서 본연의 기능을 다하고 있기 때문에 불만은 없습니다. 크기가 큰 것도 아니요, 의존성이 덕지덕지 달린 것도 아니요, 설정이 복잡한 것도 아니니까 말입니다.

jachin의 이미지

이힛, 이런게 있는 줄 알았으면 진작에 썼을텐데, 왜 모르고 있었는지...

좋은 팁 감사합니다. :)
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.