Blackjack ile ve Google Public DNS'den daha hızlı kendi yerel DNS'nizi (PDNSD) oluşturma. Yerel bir ağ için önbelleğe alınan bir DNS sunucusu (BIND) kurma Eğitim nasıl gidiyor?

İyi seyirler okuyucular. Mevcut makalede teorik materyale devam ederek pratik bir örnek ele almak istiyorum. kurulumlar ve ayarlar farklı BIND sunucusu yapılandırmaları. Anlatacağım yazıda DNS önbellek ayarı ve dolu DNS ana sunucusu. Açıklamaya genel kavramlarla ve herhangi bir organizasyonu düzenlemek için gerekli adımlarla başlayacağım. DNS sunucuları.

Genel bilgi

Adlandırılmış parçası olan bir iblis bind9 paketi ve olmak Alan adı sunucusu. adlı iblis herhangi bir türdeki sunucuların işlevlerini uygulayabilir: ana, köle, önbellek. Yukarıdaki diyagramda, ana olanı olabildiğince şeffaf bir şekilde göstermeye çalıştım. BIND DNS sunucusu nasıl çalışır?. İşin büyük kısmını yapan ikili, /usr/sbin/adlandırılmış. Ayarlarını, adı verilen ana yapılandırma dosyasından alır. adlandırılmış.conf ve katalogda yer alan /etc/bağlama. ana yapılandırmada tarif sunucu çalışma dizini, genellikle bir dizin /var/önbellek/bağlama, içinde yattıkları bölge açıklama dosyaları ve diğer hizmet dosyaları. Yazışma bölge adları Ve bölge açıklama dosyası setleri bölge bölümü parametreli dosya. bölge bölümü ayrıca bu sunucunun bölge için sorumluluk türünü (master, slave, vb.) ayarlar ve ayrıca mevcut bölge için özel parametreleri tanımlar (örneğin, mevcut bölge için isteklerin hangi arabirimde işleneceği). Bölge açıklama dosyalarında bölge parametrelerini ve kaynak kayıtlarını içerir (bu paragrafta belirtilen yollar, Linux dağıtımına veya parametrelerine bağlı olarak değişebilir).

Bu genel şema gelecekte belirli konfigürasyonları düşünürken kafanızın karışmamasına yardımcı olacak işler.

Programın 4. sürümü için yapılandırma dosyasının biçimi, sekizinci ve dokuzuncu sürümlerde kullanılandan farklıdır. BAĞLAMA. Yeni bir tane kurmayı sabırsızlıkla beklediğim göz önüne alındığında DNS sunucu ve eski versiyon Ayarlamanın amacını görmüyorum, bu nedenle yeni sürümün yapılandırmasını dikkate alacağım.

İlk veri

DNS'nin düzgün çalışması için bir . Bu makaledeki DNS, bir Debian dağıtımı üzerinde kurulacak ve diğer dağıtımların özellikleri de not edilecektir. Stant ağı yapılandırması aşağıdaki gibidir:

Dns:~# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet statik adresi 10.0.0.152 ağ maskesi 255.255.255.0 ağ geçidi 10.0.0.254 auto eth1 iface eth1 giriş statik adresi 192.168.1.1 ağ maskesi 255.255.255.0

Nerede 10.0.0.152/24 - harici arayüz (sağlayıcı tarafından tahsis edilen alt ağ), 192.168.1.1/24 - dahili (Yerel ağ). Özel bölgenin adı example.com olacaktır. ile örnekte bağımlı sunucu, ikincil sunucu IP üzerinde yer alacaktır 10.0.0.191 .

BIND9'u yükleme

DNS sunucusunun çalışması için ihtiyacınız olan bağlama9 (bazı dağıtımlarda - bağlamak ). Şemada belirtildiği gibi - ana yapılandırma dosyası BAĞLAMA dosya mı adlandırılmış.conf (verilen dosya bir dizine yerleştirilebilir /vesaire, bazen içinde /etc/bağlama).

Parametreler (sözdizimi) adlı.conf

adlandırılmış.conf dosyası sözdizimi aşağıdaki kurallara uyar:

IP adresleri- IP listesi ";" ile ayrılmalıdır. , 192.168.1.1/24 veya 192.168.1.1/255.255.255.0 formatında bir alt ağ belirtmek mümkündür (IP'yi hariç tutmak için önüne bir işaret koymanız gerekir!), adları belirtmek mümkündür "herhangi bir", "yok", "yerel ana bilgisayar"çift ​​tırnak içinde.

Yorumlar- #, // ile başlayan ve /* ve */ içindeki satırlar yorum olarak kabul edilir.

İÇİNDE bölge açıklama dosyaları -sembol @ yapılandırma dosyasında belirtilen bölgenin adını tutan bir "değişken" adlandırılmış.conf veya @ yönergesinde $menşei geçerli bölge açıklaması.

Her biri tamamlanmış hat parametreler bir karakterle bitmelidir; .

EKL bölümü

Acl (erişim kontrol listesi)- adlandırılmış bir ağ listesi belirlemenizi sağlar. Bölüm Formatı: acl "ağ_adı" (ip; ip; ip; );

Seçenekler bölümü

Seçenekler bölümü setleri küresel seçenekler tüm bölgeleri kontrol eden yapılandırma dosyası. Bu bölüm aşağıdaki formata sahiptir: seçenekler(seçenekler_bölüm_seçenekler);. Seçenekler içinde "iç içe" olabilir Bölge bölümü, genel ayarları geçersiz kılarken. Sık kullanılan seçenekler ifadeleri:

  • sorguya izin ver ( ip_listesi} - Yalnızca şuradan gelen sorgulara yanıt verilmesine izin verir: ip_listesi. Değilse, sunucu tüm isteklere yanıt verir.
  • izin-özyineleme ( ip_listesi} - Yinelemeli sorgular, ip_list'ten gelen isteklerde yürütülecektir. Geri kalanı için - yinelemeli. Parametre ayarlanmazsa, sunucu tüm ağlar için yinelemeli sorgular gerçekleştirir.
  • transfere izin ver( ip_listesi} - Bölgeyi sunucudan almasına izin verilen sunucuların listesini belirtir (temel olarak, bağımlı sunucular burada belirtilir)
  • dizin /yol/to/work/dir- sunucunun çalışma dizinine giden mutlak yolu belirtir. Bu ifade sadece seçenekler bölümünde geçerlidir.
  • ileticiler ( ip bağlantı noktası.} - ana bilgisayar adreslerini ve gerekirse isteklerin iletileceği bağlantı noktalarını gösterir (genellikle burada ISP'lerin DNS sağlayıcıları belirtilir).
  • ileri SADECE veya ileri BİRİNCİ - parametre Birinci DNS sunucusuna forwarders parametresinde belirtilen DNS sunucularını kullanarak adları çözümlemeye çalışması talimatını verir ve yalnızca bu sunucuları kullanarak adı çözümleyemezse adın kendisini çözümlemeye çalışır.
  • bildirmek EVET|HAYIR - EVET- bağımlı sunucuyu bölgedeki değişiklikler hakkında bilgilendirin, HAYIR- haber verme.
  • özyineleme EVET|HAYIR - EVET- müşteri tarafından istenirse özyinelemeli sorguları yürütün, HAYIR- yürütme (yalnızca yinelemeli sorgular). Cevap önbellekte bulunursa önbellekten döndürülür. (yalnızca Seçenekler bölümünde kullanılabilir)

Bölge bölümü

Bölge(ler)in açıklamasını belirtir. Bölüm Formatı: alan( zone_section_deyimleri}; Operatörler en sık kullanılanlar:

  • güncellemeye izin ver( ip_listesi} - Belirli bir bölgeyi dinamik olarak güncellemesine izin verilen sistemleri belirtir.
  • dosya "dosya adı " - bölge seçenekleri dosyasının yolunu belirtir (dizin ifadesiyle seçenekler bölümünde belirtilen dizinde bulunmalıdır)
  • ustalar( ip_listesi} - ana sunucuların listesini belirtir. (yalnızca bağımlı bölgelerde izin verilir)
  • tip" bölge_türü " - mevcut bölümde açıklanan bölge tipini belirtir, bölge_tipi aşağıdaki değerleri alabilir:
    • ileri- bu bölgeye gelen istekleri yönlendiren yönlendirme bölgesini belirtir.
    • ipucu- yardımcı bölgeyi gösterir ( verilen tip cevabı önbellekte bulamazsa sunucunun iletişim kuracağı kök sunucular hakkında bilgi içerir)
    • usta- geçerli bölge için ana sunucu olarak çalışacağını gösterir.
    • köle- Geçerli bölge için bağımlı sunucu olarak çalışmayı belirtir.

Ek yapılandırma seçenekleri

Bölge dosyalarındaki zaman değerleri varsayılan olarak, aşağıdaki harflerden birinin takip etmediği saniye cinsinden belirtilir: S - saniye, M - dakika, H - saat, D - gün, W - hafta. Buna göre giriş 2sa20dk5sn 2 saat 20 dakika 5 saniye değerine sahip olacak ve 8405 saniyeye karşılık gelecektir.

İle bitmeyen tüm ana bilgisayar adı/girişleri nokta sayar FQDN dışı adı ve mevcut bölgenin adı ile tamamlanacaktır. Örneğin, examplele.com bölge dosyasındaki bir domen girişi, domen.examle.com FQDN adına genişler. .

İÇİNDE BIND yapılandırma dosyaları aşağıdakiler geçerli olabilir direktifler:

  • $TTL- geçerli bölgedeki tüm kayıtlar için varsayılan TTL'yi tanımlar.
  • $menşei- zone adını, adlı.conf dosyasında belirtilenden değiştirir. Aynı zamanda, bu direktifin kapsamı "yukarıda" genişlemez (yani, dosya $INCLUDE direktifi tarafından dahil edilmişse, $ORIGN'ın kapsamı ebeveyni kapsamaz).
  • $DAHİL- belirtilen dosyayı bölge dosyasının bir parçası olarak içerir.

Ayrı ayrı tarif etmek isterim transfere izin ver parametresi ( 10.0.0.191; );. Bu parametre, bölgenin bir kopyasını indirmesine izin verilen sunucuları tanımlar - Lafta sunucu bağımlısı. Aşağıdaki örnekte, ayarı analiz edeceğiz bağımlı DNS.

Günlüğe kaydetmenin düzgün çalışması için uygun dizini oluşturmanız ve gerekli hakları atamanız gerekir:

Dns:~# mkdir /var/log/bind/ dns:~# chmod 744 /var/log/bind/ dns:~# ps aux | grep adlı bağlama 4298 0.0 3.4 46792 13272 ? Ssl Jul05 0:00 /usr/sbin/named -u bağ kökü 4815 0,0 0,1 3304 772 pts/4 S+ 18:19 0:00 grep adlı dns:~# chown bind /var/log/bind/ dns:~# ls -ld /var/log/bind/ drwxr--r-- 2 bağ kökü 4096 6 Temmuz 18:18 /var/log/bind/

Dns:~# cat /var/cache/bind/example.com $TTL 3D @ IN SOA ns.example.com. root.example.com. (2011070601 ; seri 8H ; 2H yenile ; 2W yeniden dene ; 1D sona eriyor) ; minimum @ IN NS ns.example.com. @ IN NS ns2.example.com. @ IN A 10.0.0.152 @ IN MX 5 mx.example.com. ns IN A 10.0.0.152 ns2 IN A 10.0.0.191 mx IN A 10.0.0.152 www IN CNAME @

in-addr.arpa etki alanında olduğu gibi.

Dns:~# cat /var/cache/bind/0.0.10.in-addr.arpa $TTL 3600 @ IN SOA ns.examle.com. root.example.com. (2007042001 ; Seri 3600 ; Yenile 900 ; Yeniden Dene 3600000 ; Sona Erme 3600) ; Minimum IN NS ns.examle.com. IN NS ns2.example.com. 152 IN PTR sınavı.com. 191 IN PTR ns.example.com. * IN PTR sınavle.com. dns:~# cat /var/cache/bind/1.168.192.in-addr.arpa $TTL 3600 @ IN SOA ns.examle.com. root.example.com. (2007042001 ; Seri 3600 ; Yenile 900 ; Yeniden Dene 3600000 ; Sona Erme 3600) ; Minimum IN NS ns.examle.com. IN NS ns2.example.com. * IN PTR sınavle.com.

Ağımız küçük, ağda çok az makine olduğu varsayılıyor. Tüm ağ hizmetleri aynı host example.com'da barındırılır, dolayısıyla hem ana DNS (ns.example.com.) hem de posta sunucusu (mx.example.com.) aynı makineye (10.0.0.152) işaret eder.

Bölge için ikincil (köle) yetkili sunucu

ana işlev sunucu bağımlısı- bölge açıklamasının ana sunucu ile otomatik senkronizasyonu. Bu görev belge tarafından düzenlenir RFC 1034 Bölümde 4.3.5. Bu belgeye göre, AXFR isteği kullanılarak sunucular arasında veri alışverişi yapılması önerilir. Bu istek için, tüm bölgenin tek bir TCP bağlantısında (RFC 1035) aktarılması gerekir.

Ayrıca, bağımlı DNS sunucusu ana sunucu ile yükü paylaşır veya ilk sunucuda bir arıza olması durumunda tüm yükü devralır.

devam etmeden önce bağımlı bir DNS sunucusu yapılandırma, aşağıdaki komutu kullanarak bölgeyi ikincilden manuel olarak alabileceğinizi doğrulamanız gerekir:

[e-posta korumalı]:~# [email protected] ornek.com. axfr;<<>> DiG 9.7.3<<>> @10.0.0.152 ornek.com. axfr; (1 sunucu bulundu) ;; genel seçenekler: +cmd example.com. 259200 IN SOA ns.example.com. root.example.com. 2011070801 28800 7200 1209600 86400 example.com. 259200 IN NS ns.example.com. örnek.com. 259200 IN NS ns2.example.com. örnek.com. 259200 IN A 10.0.0.152 example.com. 259200 IN MX 5 mx.example.com. mx.example.com. 259200 IN A 10.0.0.152 ns.example.com. 259200 IN A 10.0.0.152 ns2.example.com. 259200 IN A 10.0.0.191 www.example.com. 259200 IN CNAME example.com. örnek.com. 259200 IN SOA ns.example.com. root.example.com. 2011070801 28800 7200 1209600 86400;; Sorgu süresi: 14 msn;; SUNUCU: 10.0.0.152#53(10.0.0.152) ;; NE ZAMAN: 8 Temmuz Cuma 15:33:54 2011 ;; XFR boyutu: 11 kayıt (mesaj 1, bayt 258)

  1. kopyala yapılandırma dosyası adlı.conf ana sunucudan;
  2. Yer değiştirmek ana parametre yazın Açık köle tipi
  3. Parametre transferine izin ver ( 10.0.0.191; ); yer değiştirmek Açık ustalar( 10.0.0.152;); ikincil olacağı bölgelerde;
  4. Bölgeleri sil, mevcut sunucu tarafından sunulmayacak, köle yinelemeli isteklere yanıt vermeyecekse, kök dahil;
  5. Dizinler oluşturönceki örnekte olduğu gibi günlükler için.

Toplamda, bağımlı sunucu yapılandırmasını elde ederiz:

[e-posta korumalı]:~# cat /etc/bind/named.conf options ( "/var/cache/bind" dizini; allow-query ( any; ); // tüm arabirimlerden gelen istekleri yanıtla yineleme no; // özyinelemeli istekleri devre dışı bırak auth- nxdomain hayır; // RFC1035 uyumluluğu için v6'yı dinle ( yok; ); // IPv6 sürümü "bilinmiyor"a ihtiyacımız yok; // yanıtlarda DNS sunucusu sürümünü gösterme ); // aşağıda açıklanan bölgeler, sunucuyu geridöngü arayüzleri için ve ayrıca yayın bölgeleri (RFC 1912'ye göre) için yetkili olarak tanımlar bölge "localhost" ( tip master; file "localhost"; ); bölge "127.in-addr.arpa" ( master yazın; dosya "127.in-addr.arpa"; ); bölge "0.in-addr.arpa" ( master yazın; dosya "0.in-addr.arpa"; ); bölge "255.in-addr.arpa" ( master yazın; dosya "255.in-addr.arpa"; ); // ana bölge "example.com" bölgesinin açıklaması ( slave yazın; "example.com" dosyası; masters ( 10.0.0.152; ); ); //ters bölge açıklaması bölge "0.0.10.in-addr.arpa" ( tip bağımlı; dosya "0.0.10.in-addr.arpa"; masters ( 10.0.0.152; ); ); // günlüğe kaydetme ayarları günlüğe kaydetme ( kanal "çeşitli" ( dosya "/var/log/bind/misc.log" sürüm 4 boyut 4m; yazdırma zamanı EVET; yazdırma ciddiyeti EVET; yazdırma kategorisi EVET; ); kanal "sorgu" ( dosya "/var/log/bind/query.log" sürüm 4 boyut 4m; yazdırma zamanı EVET; yazdırma önem derecesi HAYIR; yazdırma kategorisi HAYIR; ); kategori varsayılanı ("misc"; ); kategori sorguları ("sorgu "; ); );

yeniden başlattıktan sonra bağımlı sunucu dizindeki dosyaların varlığıyla belirtildiği gibi, ihtiyaç duyduğu bilgileri ana sunucudan güvenli bir şekilde kopyalayacaktır:

[e-posta korumalı]:~# ls -la /var/cache/bind/ toplam 28 drwxrwxr-x 2 kök bağlama 4096 8 Temmuz 18:47 . drwxr-xr-x 10 kök kök 4096 8 Temmuz 15:17 .. -rw-r--r-- 1 bind bind 416 8 Temmuz 18:32 0.0.10.in-addr.arpa ...... - rw-r--r-- 1 bağlama bağlama 455 8 Temmuz 18:32 example.com ........

Temel olarak, /stroallow-transfer (pngp bağımlı sunucu bölgenin bir kopyasını kendi dosya sisteminde tutamayabilir. Bu kopya yalnızca DNS başlangıcında gereklidir. Dosya sisteminde bölgenin bir kopyasına sahip olmak, bağımlı DNS'nin başlatılması sırasında ana sunucu kullanılamıyorsa çökmeyi önleyebilir. Bölge bölümünde dosya seçeneğini belirtmezseniz kopya oluşturulmaz.

DNS BIND için netfilter() yapılandırması

Aslında, sunucuyu yapılandırdıktan sonra korumak güzel olurdu. Sunucunun 53/udp bağlantı noktasında çalıştığını biliyoruz. Hakkındaki makaleyi okuduktan ve aşina olduktan sonra, ağ trafiği filtreleme kuralları oluşturabilirsiniz:

Dns ~ # iptables-save # DNS için genel iptables kuralları *filter:INPUT DROP :FORWARD DROP :OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate İLGİLİ,KURULAN -j KABUL -A GİRİŞ -m conntrack --ctstate INVALID -j DROP #, DNS sunucusuna yerel ağ erişimine izin verir: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 53 -m conntrack - -ctstate YENİ -j KABUL -A ÇIKIŞI -o lo -j KABUL -A ÇIKIŞI -p icmp -j KABUL -A ÇIKIŞI -p udp -m udp --sport 32768:61000 -j KABUL -A ÇIKIŞI -p tcp -m tcp --sport 32768:61000 -j ACCEPT -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # giden sorgular yapmak için DNS sunucusu erişimine izin verir -A OUTPUT -p udp -m udp --dport 53 -m conntrack - -ctstate YENİ -j TAAHHÜT KABUL ET

Bu tipik bir örnek! Görevleriniz ve ağ yapılandırmanız için iptables kuralları belirlemek için, yukarıdaki makaleleri okuyarak netfilter'ın Linux'ta nasıl çalıştığını anlamanız gerekir.

Sorun giderme

DNS sorunlarını tanımlamanın ana kaynağı . Yoluyla ilgili bir hata yaptığımda, başlatma hatalarına bir örnek: çekirdek sunucular bölge dosyası:

5 Temmuz 18:12:43 dns-sunucusu adı: başlangıç ​​BIND 9.7.3 -u bağlama 5 Temmuz 18:12:43 dns-sunucusu adı: "--prefix=/usr" "--mandir=/usr/ ile oluşturuldu share/man" "--infodir=/usr/share/info" "--sysconfdir=/etc/bind" "--localstatedir=/var" "--enable-threads" "--enable-largefile" "- -with-libtool" "--enable-shared" "--enable-static" "--with-openssl=/usr" "--with-gssapi=/usr" "--with-gnu-ld" "- -with-dlz-postgres=hayır" "--with-dlz-mysql=hayır" "--with-dlz-bdb=yes" "--with-dlz-filesystem=yes" "--with-dlz-ldap =yes" "--with-dlz-stub=yes" "--with-geoip=/usr" "--enable-ipv6" "CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2" "LDFLAGS=" " CPPFLAGS=" 5 Temmuz 18:12:43 dns-sunucusu adı: açık dosyalarda sınır 1024'ten 1048576'ya ayarlandı 5 Temmuz 18:12:43 dns-sunucusu adı: 1 işçi iş parçacığı kullanan 1 CPU bulundu 5 Temmuz 18:12: 43 dns-sunucusu adı: 4096 yuvaya kadar kullanma 5 Temmuz 18:12:43 dns-sunucusu adı: "/etc/bind/named.conf"tan yapılandırma yükleme 5 Temmuz 18:12:43 dns-sunucusu adı: okuma oluşturuldu - "/etc/bind/b" dosyasındaki güvenilir anahtarlarda ind.keys" 5 Temmuz 18:12:43 dns-sunucusu adı: varsayılan UDP/IPv4 bağlantı noktası aralığı kullanılıyor: 5 Temmuz 18:12:43 dns-sunucusu adı: varsayılan UDP/IPv6 bağlantı noktası aralığı kullanılıyor: 5 Temmuz 18:12: 43 dns-sunucusu adı: IPv4 arabiriminde dinleme lo, 127.0.0.1#53 5 Temmuz 18:12:43 dns-sunucusu adı: IPv4 arabiriminde dinleme eth1, 192.168.1.1#53 5 Temmuz 18:12:43 dns-sunucusu adlandırılmış: dinamik DNS için oturum anahtarı oluşturuluyor 5 Temmuz 18:12:43 dns-sunucusu adlandırılmış: "/etc/bind/db.root" kaynağından kök ipuçları yapılandırılamadı: dosya bulunamadı 5 Temmuz 18:12:43 dns-sunucusu adlandırılmış: yükleme yapılandırması: dosya bulunamadı # dosya bulunamadı 5 Temmuz 18:12:43 dns-sunucusu adı: çıkılıyor (önemli hata nedeniyle) 5 Temmuz 18:15:05 dns-sunucusu adı: BIND 9.7.3 başlatılıyor -u bağlama 5 Temmuz 18:15:05 dns sunucusu adı: "--prefix=/usr" "--mandir=/usr/share/man" "--infodir=/usr/share/info" "- ile oluşturuldu sysconfdir=/etc/bind" "--localstatedir=/var" "--enable-threads" "--enable-largefile" "--with-libtool" "--enable-shared" "--enable-static" "--with-openssl=/usr" "--with-gssapi=/usr" "--wit h-gnu-ld" "--with-dlz-postgres=no" "--with-dlz-mysql=no" "--with-dlz-bdb=yes" "--with-dlz-filesystem=yes" "--with-dlz-ldap=yes" "-with-dlz-stub=yes" "--with-geoip=/usr" "--enable-ipv6" "CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2" "LDFLAGS=" "CPPFLAGS=" 5 Temmuz 18:15:05 dns-sunucusu adı: açık dosyalarda sınır 1024'ten 1048576'ya ayarlandı.576 5 Temmuz 18:15:05 dns-sunucusu adı: 1 CPU bulundu, 1 kullanıyor işçi iş parçacığı 5 Temmuz 18:15:05 dns-sunucusu adı: en fazla 4096 yuva kullanıyor 5 Temmuz 18:15:05 dns-sunucusu adı: "/etc/bind/named.conf"tan yapılandırma yükleniyor 5 Temmuz 18:15: 05 dns-sunucusu adı: varsayılan UDP/IPv4 bağlantı noktasını kullanıyor Aralık: 5 Temmuz 18:15:05 dns-sunucusu adı: varsayılan UDP/IPv6 bağlantı noktası aralığını kullanıyor: 5 Temmuz 18:15:05 dns-sunucusu adı: IPv4 arayüzünü dinliyor lo, 127. 0.0.1#53 5 Temmuz 18:15:05 dns-sunucusu adı: IPv4 arabiriminde dinleme eth1, 192.168.1.1#53 5 Temmuz 18:15:05 dns-sunucusu adı: otomatik boş bölge: 254.169.IN-ADDR. ARPA 5 Temmuz 18:15:05 dns sunucusu adı: otomatik boş bölge: 2.0.192.IN-ADDR.ARPA 5 Temmuz 18:15:05 dns sunucusu adı: otomatik boş bölge: 100.51.198.IN-ADDR. ARPA 5 Temmuz 18:15:05 dns sunucusu adı: otomatik boş bölge: 113.0.203.IN-ADDR.ARPA 5 Temmuz 18:15:05 dns sunucusu adı: otomatik boş bölge: 255.255.255.255.IN-ADDR. ARPA 5 Temmuz 18:15:05 dns sunucusu adı: otomatik boş bölge: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6 .ARPA 5 Temmuz 18:15:05 dns sunucusu adı: otomatik boş bölge: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. IP6.ARPA 5 Temmuz 18:15:05 dns-sunucusu adı: otomatik boş bölge: D.F.IP6.ARPA 5 Temmuz 18:15:05 dns-sunucusu adı: otomatik boş bölge: 8.E.F.IP6.ARPA 5 Temmuz 18:15 :05 dns-sunucusu adı: otomatik boş bölge: 9.E.F.IP6.ARPA 5 Temmuz 18:15:05 dns-sunucusu adı: otomatik boş bölge e: A.E.F.IP6.ARPA 5 Temmuz 18:15:05 dns-sunucusu adı: otomatik boş bölge: B.E.F.IP6.ARPA 5 Temmuz 18:15:05 dns-sunucusu adı: otomatik boş bölge: 8.B.D.0.1.0.0.2 .IP6.ARPA 5 Temmuz 18:15:05 dns-sunucusu adı: bölge 0.in-addr.arpa/IN: yüklü seri 1 5 Temmuz 18:15:05 dns-sunucusu adı: bölge 127.in-addr.arpa /IN: seri 1 yüklendi 5 Temmuz 18:15:05 dns-sunucusu adı: bölge 255.in-addr.arpa /IN: seri 1 yüklendi 5 Temmuz 18:15:05 dns-sunucusu adı: bölge localhost/IN: bölge yüklenen seri 2 Temmuz 5 18:15:05 dns-sunucusu adı: # çalıştırılıyor başlangıç ​​başarılı oldu

Mükemmel bir tanı aracıdırlar.

Özet

Bu yazımda, temel BIND sunucusu DNS yapılandırmalarının nasıl kurulacağını anlattım. Bu yazının amacı BIND sunucusunun UNIX üzerinde nasıl çalıştığı hakkında fikir vermekti. DNS güvenlik sorunlarına pratik olarak değinmedim ve bölge (ler) hakkında farklı bilgiler farklı ağlara gönderildiğinde sunucunun sınır modunda çalışması gibi belirli ayarlara çok az değindim. Daha derin bir anlayış için, gerekli bilgileri elde etmenin mümkün olacağını umduğum ek kaynakların bir listesini vereceğim. Buna bir son verdim. Tekrar görüşürüz.

Alan Adı Sistemi: http://citforum.ru/internet/dns/khramtsov/
RFC 1034- Alan Adları - Kavramlar ve Olanaklar: http://tools.ietf.org/html/rfc1034
RFC 1035- Alan Adları - Uygulama ve Spesifikasyon: http://tools.ietf.org/html/rfc1035
RFC 1537- Yaygın DNS Veri Dosyası Yapılandırma Hataları: http://tools.ietf.org/html/rfc1537
RFC 1591- Alan Adı Sistem Yapısı ve Yetkilendirme: http://tools.ietf.org/html/rfc1591
RFC 1713- DNS Hata Ayıklama Araçları: http://tools.ietf.org/html/rfc1713
RFC 2606- Ayrılmış Üst Düzey DNS Adları: http://tools.ietf.org/html/rfc2606
DNS güvenliği (DNSSEC): http://book.itep.ru/4/4/dnssec.htm
BIND 9 Yönetici Referans Kılavuzu: http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.html
Güvenli BIND Şablonu: http://www.cymru.com/Documents/secure-bind-template.html
Yapılandırma parametreleri üzerinde iyi tanımlanmıştırRusça: http://www.bog.pp.ru/work/bind.html
Bir bölge dosyasının otomatik oluşturulması: http://www.zonefile.org/?lang=en#zonefile


Yazar: Paul Cobbaut
Yayın tarihi: 24 Mayıs 2015
Tercüme: A.Panin
Transfer tarihi: 11 Temmuz 2015

Bölüm 4. DNS Sunucularına Giriş

4.3. DNS sunucularını önbelleğe alma

Bir DNS bölgesine hizmet vermeyen ancak sorguları önbelleğe almak için diğer ad sunucularına bağlanan bir DNS sunucusuna önbelleğe alınan DNS sunucusu denir. Önbelleğe alınan DNS sunucuları, kaynak kayıtları içeren DNS bölgesi veritabanlarıyla çalışmaz. Bunun yerine, diğer isim sunucularına bağlanırlar ve ilgili bilgileri önbelleğe alırlar.

İki tür önbelleğe alma DNS sunucusu vardır. Bunlar, yönlendiren DNS sunucularını kullanan DNS sunucularının yanı sıra DNS kök sunucularını kullanan DNS sunucularıdır.

4.3.1. Yönlendirici kullanmayan, önbelleğe alınan bir DNS sunucusu

Yönlendirme sunucusu kullanmayan, önbelleğe alınan bir DNS sunucusunun başka bir yerden bilgi alması gerekir. İstemciden bir istek alındığında, kök sunuculardan biriyle bağlantı kurar. Kök sunucu, hedef üst düzey etki alanına hizmet veren sunucu hakkındaki bilgileri önbelleğe alan sunucuya iletir ve bu da sunucuyu başka bir DNS sunucusuna yönlendirir. İkinci sunucu, sorguyu yanıtlayacak bilgiye sahip olabilir veya bu bilgilere sahip olabilecek başka bir DNS sunucusu hakkında bilgi iletebilir. Sonunda DNS sunucumuz, sorguyu yanıtlamak ve yanıtı istemciye geri göndermek için ihtiyaç duyduğu bilgileri alacaktır.

Aşağıdaki çizim, bir istemcinin linux-training.be alan adı için IP adresi bilgisi için nasıl istek gönderdiğini göstermektedir. Önbellek sunucumuz kök sunucuya bağlanacak ve .be üst düzey etki alanına hizmet veren sunucuya yönlendirilecektir. Daha sonra .be üst düzey etki alanını barındıran sunucuya bağlanacak ve Openminds ad sunucularından birine yönlendirilecektir. Bu isim sunucularından biri (bu durumda nsq.openminds.be), linux-training.be alan isimli sunucunun IP adresi ile sorguya cevap verecektir. Önbellek sunucumuz bu bilgiyi istemciye ilettikten sonra, istemci söz konusu web sitesine bağlanabilecektir.

Bu etki alanı adını çözmek için tcpdump algılayıcısının kullanılması aşağıdaki çıktıyı üretir (her satırın ilk 20 karakteri çıkarılmıştır).

192.168.1.103.41251 > M.ROOT-SERVERS.NET.domain: 37279%A? linux-tr \ aining.be. (46) M.ROOT-SERVERS.NET.domain > 192.168.1.103.41251: 37279- 0/11/13 (740) 192.168.1.103.65268 > d.ns.dns.be.domain: %38555 A? linux eğitimi.\ be. (46) d.ns.dns.be.domain > 192.168.1.103.65268: 38555-0/7/5 (737) 192.168.1.103.7514 > ns2.openminds.be.domain: %60888 A? linux-train\ing.be. (46) ns2.openminds.be.domain > 192.168.1.103.7514: 60888*- 1/0/1 A 188.93.155.\ 87 (62)

4.3.2. İletici kullanarak DNS önbelleğe alma sunucusu

İletici kullanan önbelleğe alınan bir DNS sunucusu, ihtiyaç duyduğu tüm bilgileri ileticiden alan bir DNS sunucusudur. Yönlendirme DNS sunucusu, örneğin, ISP'nin DNS sunucusu olabilir.

Yukarıdaki şekilde, bir yönlendirme DNS sunucusu olarak ISP tarafından sağlanan bir DNS sunucusu kullanan bir şirketin yerel ağındaki bir DNS sunucusu gösterilmektedir. ISP tarafından sağlanan DNS sunucusunun IP adresi 212.71.8.10 ise, şirketin DNS sunucusunun adlı.conf yapılandırma dosyasında aşağıdaki satırların bulunması gerekir:

ileticiler ( 212.71.8.10; );

Ek olarak, DNS sunucunuzu DNS koşullu ileticiler ile çalışacak şekilde de yapılandırabilirsiniz. Yapılandırma dosyasındaki koşullu iletme DNS sunucusunun açıklaması aşağıdaki gibidir:

Zone "someotherdomain.local" ( forward yazın; yalnızca forward; forwarders ( 10.104.42.1; ); );

4.3.3. Yinelemeli veya yinelemeli sorgu

Özyinelemeli sorgu, bir DNS sorgusudur ve ardından istemci, DNS sunucusundan nihai yanıtı bekler (yukarıdaki çizimde, Macbook'tan DNS sunucusunu gösteren kalın kırmızı bir okla gösterilmiştir). Yinelemeli bir sorgu, bir DNS sorgusudur ve bundan sonra istemci, DNS sunucusundan nihai yanıtı beklemez (yukarıdaki çizimde, DNS sunucusundan yönlendirilen üç siyah okla gösterilmiştir). Yinelemeli sorgular çoğunlukla ad sunucuları arasında gerçekleştirilir. Kök ad sunucuları yinelemeli sorgulara yanıt vermez.

Bir DNS bölgesini yöneten DNS sunucusu, o bölge için yetkili DNS sunucusu olarak adlandırılır. Bir DNS bölgesinin yalnızca bir kaynak kayıtları koleksiyonu olduğunu unutmayın.

Bir DNS bölgesi için ilk yetkili DNS sunucusuna birincil DNS sunucusu denir. Bu sunucu, DNS bölge veritabanının okuma/yazma kopyasını çalıştıracaktır. Arıza durumunda veri saklamayı iyileştirmeniz, sunucu performansını iyileştirmeniz veya yük dengelemeniz gerekiyorsa, bu DNS bölgesini de yönetecek başka bir DNS sunucusu dağıtabilirsiniz. Bu sunucu, ikincil DNS sunucusu olarak anılacaktır.

İkincil sunucu, bir DNS bölgesi aktarımı sırasında birincil sunucudan DNS bölgesi veritabanının bir kopyasını alır. DNS bölgesi aktarım istekleri, ikincil sunucular tarafından düzenli aralıklarla gönderilir. Bu zaman dilimlerinin süresi, SOA kaynak kaydında belirlenir.

rndc yardımcı programını kullanarak bir DNS bölgesi güncellemesini zorlayabilirsiniz. Aşağıdaki örnek, fred.local'ın DNS bölge aktarımını başlatır ve /var/log/syslog günlük dosyasının ilgili parçasını çıkarır.

[e-posta korumalı]:/etc/bind# rndc fred.local'ı yenile [e-posta korumalı]:/etc/bind# grep fred /var/log/syslog | kuyruk -7 | kesim-c38- zone fred.local/IN: bildirimlerin gönderilmesi (seri 1) alınan kontrol kanalı komutu "fred.local'ı yenile" zone fred.local/IN: Aktarım başladı. 10.104.109.1#53'ten "fred.local/IN" aktarımı: 10.104.33.30#57367 kullanılarak bağlandı bölge fred.local/IN: aktarıldı 10.104.109.1#53'ten "fred.local/IN" seri 2 aktarımı: Aktar tamamlandı: 1 mesaj, 10 kayıt, 264 bayt, 0,001 saniye (264000 bayt/sn) bölge fred.local/IN: bildirim gönderme (seri 2) [e-posta korumalı]:/etc/bind#

Bir DNS bölgesine ikincil bir DNS sunucusu eklerken, bu sunucuyu birincil sunucuya bağlı bir DNS sunucusu olacak şekilde yapılandırabilirsiniz. Birincil DNS sunucusu, ikincil sunucuyla ilişkili olarak ana DNS sunucusu olacaktır.

Çoğu zaman, birincil DNS sunucusu, tüm bağımlı sunucularla çalışan ana sunucudur. Bazen bir yedek sunucu, sonraki düzey yedek sunucular için ana sunucu da olabilir. Aşağıdaki çizimde, ns1 adlı sunucu birincil sunucudur ve ns2, ns3 ve ns4 adlı sunucular ikincil sunuculardır. ns2 ve ns3 isimli sunucular için master sunucu ns1 isimli sunucu olmasına rağmen, ns4 isimli sunucu için master server ns2 isimli sunucudur.

SOA kaynak kaydı, fresh adlı bir DNS bölgesi yenileme hızı değeri içerir. Bu değer 30 dakika olarak ayarlanırsa, bekleme sunucusu her 30 dakikada bir DNS bölgesi verilerinin bir kopyasının aktarılması için istekler gönderir. Ayrıca bu giriş retry adlı zaman aşımı süresinin uzunluğu için bir değer içerir. Bu değer, ana sunucu son DNS bölge aktarım isteğine yanıt vermediğinde kullanılır. Expiry time adlı bir değer, beklemedeki bir sunucunun DNS bölgesi verilerini güncellemeden istemcilerden gelen isteklere yanıt verebileceği süreyi belirler.

Aşağıda, bir DNS bölgesinin (linux-training.be) SOA kaynak kaydı verilerini okumak için nslookup yardımcı programının kullanılmasına bir örnek verilmiştir.

[e-posta korumalı]:~# nslookup > settype=SOA > sunucu ns1.openminds.be > linux-eğitim.be Sunucu: ns1.openminds.be Adres: 195.47.215.14#53 linux-training.be kaynak = ns1.openminds.be posta adresi = hostmaster.openminds.be seri = 2321001133 yenileme = 14400 yeniden deneme = 3600 sona erme = 604800 minimum = 3600

DNS bölgesi veri aktarımları, yalnızca DNS bölgesi veritabanlarındaki verilerde bir değişiklik olduğunda (yani, ana tarafta bir veya daha fazla kaynak kaydı eklendiğinde, silindiğinde veya değiştirildiğinde) gerçekleşir. Yedek sunucu, SOA kaynak kaydının kendi kopyasının sürüm numarasını (seri numarası), karşılık gelen ana sunucunun SOA kaynak kaydının sürüm numarasıyla karşılaştırır. Sürüm numaraları eşleşirse veri güncellemesi gerekmez (çünkü başka hiçbir kaynak kaydı eklenmemiştir, kaldırılmamıştır veya değiştirilmemiştir). Aynı durumda, bağımlı sunucu tarafındaki SOA kaynak kaydının sürüm numarası, ilgili ana sunucu tarafındaki aynı kaydın sürüm numarasından küçükse, DNS bölge aktarım isteği yapılır.

Aşağıda, DNS bölgesi verilerinin aktarımı sırasında yakalanan verileri içeren Wireshark sniffer penceresinin ekran görüntüsü bulunmaktadır.

4.9. Tam veya kısmi DNS bölgesi aktarımları

DNS bölgesi verilerinin aktarımı tam veya kısmi olabilir. Bir modu veya diğerini kullanma kararı, yedek sunucudaki DNS bölge veritabanını tamamen güncellemek için aktarılması gereken veri miktarına bağlıdır. Bölge verilerinin kısmi aktarımı, değiştirilen toplam veri miktarı tüm veritabanının boyutundan az olduğunda tercih edilir. Tam DNS bölge transferleri AXFR protokolü kullanılarak, kısmi DNS bölge transferleri ise IXFR protokolü kullanılarak gerçekleştirilir.

DNS'nin amacı, insanlar tarafından kolayca hatırlanan alan adlarını, ad çözümlemesi adı verilen bir işlemle bilgisayarların anlayabileceği IP adreslerine çevirmektir.
Kendi önbelleğe alan DNS sunucumuzun kurulumu bize ne verecek?!
Bu, sitelerin yanıtını biraz hızlandıracaktır + Linux, NetBios adlarını çok iyi algılamaz ve bazen yerel ağ içinde bilgisayar veya yazıcı bulmanız gerekir, ancak bunu isme göre yapmak istersiniz.
IP adreslerini hatırlamak uygun değildir, ancak sürekli olarak DHCP sunucusu günlüğüne tırmanmak da bizim yöntemimiz değildir. Bu gibi durumlarda, yerel ağda DNS gerekir.
bind9 paketinin kurulumu zor değildir, fişler genellikle yapılandırma aşamasında ortaya çıkar, çünkü sistemin kolay okunabilen konfigürasyon dosyalarından sonra insanın aklına anlaşılmaz bir sözdizimi düşüyor bu arada C programlama diline çok benziyor. sunucu yerel ağ içinde çalışacaktır, o zaman onu bir chroot ortamına aktarmak mantıklı değildir ve tüm kurulum çok az zaman alır.
Bunun üzerine lirik kısım tamamlanabilir, kurulum ve konfigürasyona geçiyoruz.
Bind9 DNS sunucusunu kurun:
sudo apt-get yükleme bind9
Tamamlandıktan, indirilip yüklendikten sonra yapılandırma dosyasını düzenlememiz gerekir:
sudo nano /etc/bind/named.conf.options
Bölümü buluyoruz, konfigürasyon dosyasının en başında yer alıyor, onun dışında başka bir şey yok ...

Seçenekler ( dizin "/var/cache/bind"; // Eğer sizinle // konuşmak istediğiniz ad sunucuları arasında bir güvenlik duvarı varsa, birden çok // bağlantı noktasının konuşabilmesi için güvenlik duvarını düzeltmeniz gerekebilir. http'ye bakın: //www.kb.cert.org/vuls/id/800113 // ISP'niz kararlı // ad sunucuları için bir veya daha fazla IP adresi sağladıysa, muhtemelen bunları iletici olarak kullanmak istersiniz. // Aşağıdaki bloğun açıklamasını kaldırın ve ekleyin // all-0"ların yer tutucusunu değiştiren adresler. // ileticiler ( // 0.0.0.0; // ); auth-nxdomain no; # RFC1035 v6'da dinleme ( herhangi biri; ); );

Yönlendiriciler bölümü, kendi veritabanında olmayan ad çözümlemesi için DNS isteğinin nereye gönderileceğinden sorumludur. Son zamanlarda, hiç memnun değilim, sağlayıcıdaki bu sunucuların çalışması üçüncü taraflara, örneğin Google'a bağlanabilir, IP 8.8'i hatırlamak çok kolaydır.

Bölümü düzenliyoruz, önce buradan yorumları kaldırmanız ve üçüncü taraf DNS eklemeniz gerekiyor, birkaç sunucu eklemeniz gerekiyorsa, örneğin google sunucusunun isteklerinize dayanmaması ve kırılması durumunda :), ardından Diğer sunucuların IP'leri bir sütuna yazılabilir, böylece daha fazla dayanıklılık elde edebilirsiniz.
ileticiler ( 8.8.8.8; 193.58.251.251; //Rusça DNS hizmeti -SkyDNS );
Bu bölümde, dosyada belirttiğiniz sunucunun IP'sini girmek daha iyidir. /etc/resolv.conf veya bölüme girin ad sunucusu bu IP
Değişiklikleri Kaydet ve Çık
Sunucuyu yeniden başlatın ve kontrol edin
Komut satırına yazıyoruz nslookup mail.ru
Vermeli:

Yetkili olmayan yanıt: İsim: mail.ru Adresler: 94.100.191.202
Bu, sunucumuzun bu bölgeye (mail.ru) hizmet veren ana sunucu olmadığını, ancak isteklerin önbelleğe eklendiğini gösteriyor!
Şimdi, makinelerin çeşitli ağ hizmetlerini bulabilmesi için ağımız için bir DNS bölgesi oluşturmamız gerekiyor - örneğin ağ yazıcıları olabilir, bunlar bağımsız olabilir veya diğer iş istasyonlarında paylaşılabilir.
Bölgemiz orgname -i.e. olarak adlandırılabilir. Kuruluşun adı.
Öncelikle bir zone oluşturuyoruz bunun için editliyoruz. adlandırılmış.conf.local

sudo nano /etc/bind/named.conf.local
ve ona şunu ekleyin:
bölge "orgname" ( master yazın; file "/etc/bind/db.orgname"; );
Kaydet ve çık
Şimdi bir bölge yapılandırma dosyası oluşturmamız gerekiyor.
sudo nano /etc/bind/db.orgname
ve içine şunu yapıştırın:
(Lütfen yapılandırma dosyasının sözdizimine dikkat edin, noktalar bile önemlidir)

@ IN SOA kuruluş adı. root.orgname. (20101015 4sa ; güncelleme süresi -4 saat 1sa ; her saatte bir 1sa tekrarla ; bilgilerin ne kadar süre saklanacağı -1 hafta 1d) ; TTL (yaşam süresi) kayıtları - IN NS kuruluş adına göre 1 gün. ; ad sunucusu adı @ IN A 192.168.10.1; A - kayıt - bu bölgeye hizmet veren DNS sunucumuzun IP adresi, @ bunun kök bölge olduğu anlamına gelir. * IN CNAME @ yazıcı IN A 192.168.10.25; 192.168.10.25 adresinde bulunan bir ağ yazıcısı için bir DNS girişi oluşturabilirsiniz.

Şimdi, yeni bir ağ cihazı eklerken 2 şey yapmanız gerekiyor:
1) DHCP sunucusunda bir IP adresi ayırın, bunun nasıl yapıldığını makaleden okuyabilirsiniz-
2) Oluştur DNS bölgesi bu IP için, cihazadı A XXX.XXX.XXX.XXX İÇİNDE. Burada: cihazadı - cihazın ağ adı; XXX.XXX.XXX.XXX, DHCP sunucusunda ayrılmış olan IP adresidir.

Şimdi resolv.conf dosyasını düzenlememiz gerekiyor.

sudo nano /etc/resolv.conf

Ve oraya girin:

Ad sunucusu 127.0.0.1

Orada olan her şey # koyarak yorumlanabilirdi.

sunucu yeniden başlatılıyor

Bu, sunucunun her şeyi kendi veritabanında araması için yapılır ve ancak o zaman BIND istekleri, yönergede IP'si girilmiş olan sunucu 8.8.8.8'e yönlendirir. ileticiler.

Şimdi çalışıp çalışmadığını kontrol edebilirsiniz:

Test Windows altından yapılıyorsa:
ping aygıtıadı.orgadı

Linux altından test edersek:
ping cihazıadı.orgname -c 4
Pingler, XXX.XXX.XXX.XXX yerine belirttiğiniz IP'ye gitmelidir.

Bu, DNS sunucusu kurulumunu tamamlar.

Dikkat

dnsmasq'ı doğru şekilde kurmak ve yapılandırmak için süper kullanıcı oturumuna gidin:

Parola istendiğinde, kök kullanıcı veya yerel yönetici parolasını girin.

DNS önbelleği, IP adreslerini bellekte saklayarak web sitesi sayfalarının yüklenmesini hızlandırmak için tasarlanmıştır. Önbelleğe almayı yapılandırmak için yardımcı programı kullanın dnsmask.

Yum dnsmasq'ı kurun

vi veya nano metin editörünü kullanarak, adresinde bulunan dosyayı açın. /etc/dnsmasq.conf

Vi /etc/dnsmasq.conf

Nano /etc/dnsmasq.conf

Aşağıdaki seçenekleri düzenleyin:

resolv-file=/etc/resolv.dnsmasq anketsiz listen-address=127.0.0.1 önbellek boyutu=150 conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig

Ayrıca aşağıdaki parametreyi ekleyin:

Tüm sunucular

  • çözümleme dosyası- dns sunucularının IP adreslerini içeren dosya
  • anketsiz- resolv adlı dosyalardaki değişikliklerin otomatik olarak uygulanmasını devre dışı bırakan bir parametre.
  • adresi dinle- hangi adresin dinleneceğini gösteren parametre.
  • önbellek boyutu- önbellek boyutu. Varsayılan değer, 150 ana bilgisayarı depolamanıza izin verir.
  • Conf-dir- sorumlu parametre ek dosya yapılandırma.
  • tüm sunucular- bir dns isteğini tüm kullanılabilir dns sunucularına yönlendirir ve ilk yanıt veren sunucudan bir yanıt döndürür. Parametre manuel olarak girilmelidir.

Aşağıdaki seçenekleri de belirtebilirsiniz:

  • önbellek yok- sunuculardan gelen olumsuz yanıtları önbelleğe almayın.
  • Bind arayüzüS- işlemin kopyalarını çalıştırmanıza izin verir.
  • Dns-ileri-maks- maksimum dns isteği sayısı. Varsayılan 150'dir. Parametre manuel olarak girilmelidir.

Şimdi bir dosya oluştur çözümleme.dnsmasq bir metin düzenleyici kullanarak vi veya nano ve oraya dns sunucularının adreslerini yazın.

Vi /etc/resolv.dnsmasq

Nano /etc/resolv.dnsmasq

Ardından IP adresini ekleyin 127.0.0.1 dosyalamak resolv.conf. Bunu yapmak için yardımcı programı kullanın « Ağ bağlantıları» konumlanmış "Menü" → "Seçenekler" → "Ağ Bağlantıları" grafik bir ortamda Tarçın veya "Sistem" → "Ayarlar" → "Ağ Bağlantıları" grafik bir ortamda Mat. Aktif bağlantınızı seçin, butona tıklayın "Değiştirmek", sekmeye git "IPv4 Ayarları", değiştirmek "Yöntem" Açık "Otomatik (DHCP, yalnızca adres)" ve sahada" Ek sunucular DNS" Adresi yazın 127.0.0.1 , uygula'yı tıklayın ve yeniden başlatın ağ yöneticisi.

resolv.conf dosyasını yardım ile düzenleme metin editörleri Tavsiye edilmez. Bir sonraki sistem yeniden başlatmasında dosyanın üzerine yazılacaktır.

Systemctl, NetworkManager.service'i yeniden başlatır

Değişikliklerin etkili olduğundan emin olmak için dosyanın içeriğini kontrol edin. resolv.conf:

/etc/resolv.conf

İçeriği şu şekilde olmalıdır:

# NetworkManager ad sunucusu 127.0.0.1 tarafından oluşturulmuştur

Yukarıda açıklanan işlemler, tüm dns isteklerini yerel makineye yönlendirmenize izin verecektir.

Hizmet Ekle dnsmask oturumu otomatik başlatmak ve yeniden oturum açmak için:

Systemctl dnsmasq.service'i etkinleştir -- şimdi

Önbelleği sıfırlamak için hizmeti yeniden başlatmanız yeterlidir:

Systemctl, dnsmasq.service'i yeniden başlatır

Sağlık kontrolü

Hizmetin etkin olup olmadığını kontrol edin:

Systemctl durumu dnsmasq.service

53 numaralı bağlantı noktasını kontrol edin:

Netstat -ntlp | grep:53 tcp 0 0 0.0.0.0:53 0.0.0.0:* DİNLE 7319/dnsmasq tcp6 0 0:::53:::* DİNLE 7319/dnsmasq

Şimdi siteye birkaç kez erişmek için dig yardımcı programını kullanmayı deneyin. google.com.tr

google.com'u araştırın | grep "Sorgu zamanı" ;; Sorgu süresi: 135 msn

Dns sorgusu önbelleğe alma çalışıyorsa, aşağıdaki isteklerin hemen hepsinde vurgulanan satır sorgu zamanı sıfıra eşit olacaktır.

;; Sorgu süresi: 0 msn

Aksi takdirde, her yeni talepte 0 ve yukarı arasında değişecektir.

Sonuç olarak, ağın birincil DNS sunucusu çok daha az yük alacaktır.

Bir hata bulursanız, metni vurgulayın ve tıklayın. Ctrl+Enter.

Modern İnternetin çalışmasını sağlayan önemli hizmetlerden biri, site adını ip adresine dönüştürme hizmetidir. CentOS 7 çalıştıran bir sunucuda Bind 9'u (adlandırılmış) kurma örneğini kullanarak bu makalede DNS hizmetinin uygulanmasını ayarlamayı ele alacağız. Gerekli minimum temel işlevselliği hazırlayacağız ve günlük ayarlarına biraz daha derinlemesine bakacağız. .

Mikrotik yönlendiricilerle nasıl çalışılacağını öğrenmek ve bu alanda uzmanlaşmak istiyorsanız, resmi kurstan alınan bilgilere dayalı bir program kullanmanızı tavsiye ederim. Kurs faydalıdır, tüm ayrıntılar için bağlantıyı okuyun. Ücretsiz kurslar var.

bağlama- IP adreslerinin dns adlarına çevrilmesini sağlayan ve bunun tersini sağlayan DNS sunucusunun günümüzdeki en yaygın uygulaması. Adlandırılmış olarak da adlandırılır, örneğin Freebsd'de. Wikipedia'dan alınan bilgilere göre, şu anda 13 İnternet kök DNS sunucusundan 10'u bağlama üzerinde çalışıyor. Hemen hemen tüm linux dağıtımlarında kutudan çıkar çıkmaz kurulur. Bir CentOS 7 sunucusuna kurmayı düşüneceğim.

Bind 9'u (adlandırılmış) CentOS 7'ye Kurma

Öncelikle sistemde kurulu bir dns sunucumuz olup olmadığını kontrol edelim:

# rpm -qa bind* bind-libs-lite-9.9.4-14.el7.x86_64 bind-license-9.9.4-14.el7.noarch

O sırada minimum yazılım paketini seçtiğim için yüklemedim. İsim sunucusu bizim için bir chroot ortamında çalışacaktır, bu nedenle uygun paketleri kurun:

# yum - y bind bind'i kurun - utils bind - chroot

Bind kullanacağımıza bir kez daha dikkatinizi çekiyorum. kök güvenliği artırmak için ortam. Bu, sunucunun kurulmasında ve yönetilmesinde belirli özellikler getirir. Bu küçük şeylere dikkat etmelisiniz. Öyleyse bind'i çalıştıralım:

# systemctl başlangıç adlı-chroot# systemctl etkinleştir adlı-chroot ln -s "/usr/lib/systemd/system/named-chroot.service" "/etc/systemd/system/multi-user.target.wants/named-chroot.service"

Chroot dizininin içeriğini kontrol etme:

# ls -l /var/adlandırılmış/chroot/etc

Her şey yolunda, sunucu başladı, gerekli dosyalar oluşturuldu, yapılandırma için her şey hazır. Onunla ilgilenelim.

CentOS 7'de bir DNS sunucusu kurma

Sunucu yapılandırma dosyamız şu adreste bulunur: /var/adlandırılmış/chroot/etc/adlandırılmış.conf. Açın ve şöyle görün:

# mcedit /var/named/chroot/etc/named.conf seçenekleri ( 53 numaralı bağlantı noktasını dinleme ( herhangi bir; ); v6'da dinleme 53 numaralı bağlantı noktasını dinleme ( yok; ); "/var/adlandırılmış" dizini; döküm dosyası " /var/named/data/cache_dump.db"; allow-query ( 127.0.0.1; 192.168.7.0/24; ); özyineleme evet; allow-recursion ( 127.0.0.1; 192.168.7.0/24; ); ileticiler ( 8.8 .8.8; ); sürüm "DNS Sunucusu"; yönetilen anahtarlar dizini "/var/adlandırılmış/dinamik"; pid dosyası "/run/adlandırılmış/adlandırılmış.pid"; oturum anahtar dosyası "/run/adlandırılmış/oturum. key"; dnssec-etkinleştirme no; dnssec-doğrulama no; ); alan "." IN ( ipucu yazın; dosya "named.ca"; ); "/etc/named.rfc1912.zones" içerir; "/etc/named.root.key" içerir; günlük kaydı ( channel default_file ( file "/var/log/named/default.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); varsayılan kategori ( default_file; ); );

Bu yapılandırma, yerel ağda normal bir önbelleğe alma sunucusu sağlayacaktır. Bazı parametrelerle ilgili yorumlar:

DNS sunucusunun doğru çalışması için güvenlik duvarı kurallarını düzenlemeyi unutmayın - şimdi yapılandırdığımız önbellek sunucusu için UDP bağlantı noktası 53'ü ve bölge yönlendirme için daha sonra tartışılacak olan TCP bağlantı noktası 53'ü açın.

Şimdi günlükler için bir klasör oluşturalım. Bir chroot ortamında çalıştığımızı unutmayın:

# cd /var/adlandırılmış/chroot/var/log && mkdir adlı && chown adlı. adlı

Kendi bölge desteği

Kendi site1.ru bölgemizi kendi adlandırmamıza yerleştirmemiz gerektiğini varsayalım. Öncelikle dns sunucusunun hizmet vereceği bir zone dosyası oluşturuyoruz:

# mcedit /var/named/chroot/var/named/site1.ru.zone $TTL 86400 @ IN SOA site1.ru. site1.ru.yerel. (2015092502 43200 3600 3600000 2592000) IN NS ns1.site1.ru. NS ns2.site1.ru'da. IN A 192.168.7.254 IN MX 10 mx.site1.ru. kapı IN A 192.168.7.254 mx IN A 192.168.7.250 ns1 IN A 192.168.7.235 ns2 IN A 192.168.7.231

Bölge dosyalarının sözdiziminin açıklaması internette oldukça iyi ele alınmıştır, bunun üzerinde ayrıntılı olarak durmak istemiyorum. İstenirse, herkes kendi bölgesi için destek kurması gerekip gerekmediğini kendisi görebilir.

Gerekli hakları belirledik:

# chown root:named /var/named/chroot/var/named/site1.ru.zone # chmod 0640 /var/named/chroot/var/named/site1.ru.zone

Zone "site1.ru" ( master yazın; dosya "site1.ru.zone"; );

ile adlandırılmış yapılandırmayı yeniden okuma rndc:

# rndc yeniden yapılandırma

Bağımlı bölgeyi bağlamak için ekleme

Başka bir dns sunucusundan alınan bir zone'un bir kopyasını sunucunuzda tutmak istiyorsanız, config.xml dosyasına aşağıdaki ayarları ekleyin:

Zone "site.ru" IN ( slave yazın; masters ( 10.1.3.4; ); "site.ru.zone" dosyası; );

10.1.3.4 - bölgeyi aldığımız dns sunucusunun ip adresi. Üzerindeki dns sunucunuza zone transferine izin vermeyi unutmayınız.

Adlandırılmış gruba yazma izni eklemeniz gerekir, böylece şöyle olur:

Bundan sonra, bağlamayı yeniden başlatabilir ve bağımlı bölge dosyasının oluşturulup oluşturulmadığını kontrol edebilirsiniz. Yukarıdaki ayarlarla, şu adreste bulunacaktır: /var/adlandırılmış/chroot/var/adlandırılmış/site.ru.zone. Bind'in dosyayı oluşturma izni yoksa, günlükte bir hata alırsınız:

Döküm ana dosyası: tmp-7Swr6EZpcd: açık: izin reddedildi

Sunucu işlemlerinin ayrıntılı günlüğe kaydedilmesiyle uğraşmak çok daha ilginç ve kullanışlıdır. BEN uzun zamandır Bu konuyla kendim ilgilenmeye karar verene ve orijinal kılavuza girene kadar, İnternet'teki her türlü tavsiyeyi ve yaklaşık yapılandırma parçalarını yüzeysel olarak aldım.

Bind, günlük kaydı için geniş fırsatlar sunar. Sunucunun çalışmasıyla ilgili hemen hemen her şeyi düzeltebilirsiniz. şimdi varım basit örnekler Sana nasıl çalıştığını göstereceğim.

Öncelikle konfigürasyonda, belirli olaylar için günlüklerin ekleneceği kanalı belirliyoruz. İşte böyle bir kanala bir örnek:

Kanal genel ( dosya "/var/log/named/general.log" versiyonları 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet;

İşte kendimiz bulduğumuz kanalın adı - genel, dosyanın yolu belirtilir, günlüğün 5 megabayttan büyük olmayan 3 versiyonunu saklayacağımız söylenir. Parametre ciddiyet aşağıdaki değerleri alabilir:

Parametre baskı zamanı olay saatinin günlüğe kaydedilmesi gerektiğini belirtir. Belirttiğim ayarlara ek olarak aşağıdaki parametreler kanal konfigürasyonuna eklenebilir:

  • baskı şiddeti evet | hayır - önem derecesi parametresinin günlüğe yazılıp yazılmayacağını belirtir
  • baskı kategorisi evet | hayır - günlük kategorisinin adının yazıp yazmayacağını belirtir

Varsayılan değer ayarlandığı için bu parametreleri belirtmedim. HAYIR kişisel olarak bana uygun olan.

Kategori genel ( genel; );

Bağlamadaki günlük kategorilerinin açıklaması (adlandırılmış)
varsayılanBu tablodaki tüm kategorilerdeki olaylar, özellikle dahil edilmesi gereken sorgular kategorisi dışında, ayrı olarak tanımlanmamışlarsa buraya düşecektir. Yani, yalnızca varsayılan kategoriyi belirlerseniz, tüm kategorilerin olayları buna dökülecektir.
genelBu kategori, listelenen kategorilerin hiçbirinde yer almayan tüm günlükler içindir.
veri tabanıBölge depolama ve önbelleğe alma ile ilgili mesajlar.
güvenlikİsteklerin onaylanması ve reddedilmesi.
yapılandırmaYapılandırma dosyasının okunması ve yürütülmesi ile ilgili her şey.
çözücüÖnbelleğe alma sunucusu tarafından müşteri adına yapılan özyinelemeli sorgular hakkındaki bilgiler de dahil olmak üzere ad çözümlemesi.
xfer girişiBölge alma hakkında bilgi.
xfer çıkışıBölge aktarım bilgileri.
bildirmekNOTIFY protokolü işlemlerinin günlüğe kaydedilmesi.
müşteriMüşteri isteklerinin yerine getirilmesi.
eşsizAdlandırılan iletiler, herhangi bir sınıfa atanamadı veya eşleme tanımlanmadı.
Ağ işlemlerinin günlüğe kaydedilmesi.
güncellemeDinamik güncellemeler.
güvenliği güncelleGüncelleme isteklerini onaylama veya reddetme.
sorgularıİsteklerin DNS sunucusuna kaydedilmesi. Bu kategoriyi etkinleştirmek için, ayarı sunucu yapılandırmasında ayrı olarak yapmanız gerekir. Bunun nedeni, bu kategorinin günlük dosyasında sunucu performansını etkileyebilecek çok sayıda giriş oluşturmasıdır.
sorgu hatalarıSunucu istek hataları.
sevk etmekGelen paketleri işlenmek üzere sunucu modüllerine yönlendirme.
dnssecDNSSEC ve TSIG protokollerinin çalışması.
topal sunucularBir ad isteğini çözmek amacıyla uzak sunuculara eriştiğinde bağlamanın aldığı hataları düzeltir.
yalnızca delegasyonNXDOMAIN döndüren istekleri günlüğe kaydetme.
edns-devre dışıZaman aşımları nedeniyle düz DNS kullanmaya zorlanan istekler.
RPZYanıt Politikası Alanının (RPZ) yürütülmesi ile ilgili tüm işlemler.
oran sınırıSeçeneklerde veya görünümlerde bir veya daha fazla oran sınırı ifadesiyle ilişkili işlemler.

Bu nedenle, tüm günlük kategorilerini ayrı dosyalarda görüntülemek için, aşağıdaki yapıyı adlandırılmış yapılandırmaya eklemeniz gerekir:

Günlüğe kaydetme ( kanal varsayılanı ( dosya "/var/log/named/default.log" sürümleri 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal genel ("/var/log/named/general.log" dosyası sürümleri 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal veritabanı ( dosya "/var/log/named/database.log" sürümler 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal güvenliği ( dosya " /var/log/named/security.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal yapılandırması ( dosya "/var/log/named/config.log" sürüm 3 boyut 5m; önem dinamik; yazdırma zamanı evet; ); kanal çözümleyici ( dosya "/var/log/named/resolver.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal xfer-in ( dosya "/var/log/ adlandırılmış/xfer-in.log" sürümleri 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal xfer-out ( dosya "/var/log/named/xfer-out.log" sürüm 3 boyut 5m; dinamik önem derecesi ; yazdırma zamanı evet; ); kanal bildirimi ("/var/log/named/notify.log" dosyası sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); chann el client ( dosya "/var/log/named/client.log" sürüm 3 boyut 5m; şiddet dinamiği; baskı zamanı evet; ); kanal eşleşmemiş ( dosya "/var/log/named/unmatched.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal ağı ( dosya "/var/log/named/network.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal güncellemesi ( dosya "/var/log/named/update.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal güncelleme güvenliği ( dosya "/var/log/named/update-security.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal sorguları ( dosya "/var/log/named/queries.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal sorgu hataları ( dosya "/var/log/named/query-errors.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal gönderimi ( dosya "/var/log/named/dispatch.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal dnssec ( dosya "/var/log/named/dnssec.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal topal sunucuları ( dosya "/var/log/named/lame-servers.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); yalnızca kanal delegasyonu ( dosya "/var/log/named/delegation-only.log" sürüm 3 boyut 5m; önem derecesi dinamik; yazdırma zamanı evet; ); kanal edns-disabled ( dosya "/var/log/named/edns-disabled.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal rpz ( dosya "/var/log/named/rpz.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kanal hız sınırı ( dosya "/var/log/named/rate-limit.log" sürüm 3 boyut 5m; önem derecesi dinamik; baskı zamanı evet; ); kategori varsayılanı ( varsayılan; ); kategori genel ( genel; ); kategoriveritabanı(veritabanı;); kategori güvenliği ( güvenlik; ); kategori yapılandırması ( yapılandırma; ); kategori çözümleyici ( çözümleyici; ); kategori xfer-in( xfer-in;); kategori xfer-out ( xfer-out; ); kategori bildir(bildir; ); kategori müşterisi ( müşteri; ); kategori eşsiz (eşsiz; ); kategori ağı ( ağ; ); kategori güncellemesi ( güncelleme; ); kategori güncelleme güvenliği ( güncelleme güvenliği; ); kategori sorguları ( sorgular; ); kategori sorgu hataları ( sorgu hataları; ); kategori gönderimi ( gönderim; ); kategori dnssec (dnssec; ); topal sunucular kategorisi ( topal sunucular; ); yalnızca yetkilendirme kategorisi ( yalnızca yetkilendirme; ); edns-devre dışı kategorisi ( edns-devre dışı; ); rpz kategorisi ( rpz; ); kategori oran limiti ( oran limiti; ); );

Bir kategorideki tüm istek günlüklerini toplamak istiyorsak sorguları, ardından yapılandırma dosyasının seçenekler bölümüne buna izin veren bir parametre eklemeniz gerekir:

Sorgu günlüğü evet;

Bağlamayı yeniden başlat:

# systemctl adlı-chroot.service yeniden başlat

DNS Sunucusunu Kontrol Etme

Her şeyden önce, günlüklerin olduğu dizine gidelim ve orada ne olduğunu kontrol edelim:

# cd /var/adlandırılmış/chroot/var/log/adlandırılmış # ls -l

Tüm log dosyaları oluşturulur ve dolmaya başlar. Bunlardan birini kontrol edebilirsiniz. Örneğin, centos sunucumuzun (192.168.7.246) kullanıcı isteklerini nasıl günlüğe kaydettiğini görelim. nslookup yandex.ru'yu 192.168.7.254 numaralı bilgisayardan (pencereler) çalıştırmayı deneyelim ve bunun günlük dosyasına nasıl yansıyacağını görelim:

26-Eyl-2015 19:25:30.923 istemci 192.168.7.254#56374 (yandex.ru): 56375 (yandex.ru): sorgu: yandex.ru IN AAAA + (192.168.7.246)

Şimdi sunucunun bölgemizi nasıl desteklediğini kontrol etmek için site1.ru'ya ping atalım:

Günlüklerde neler olduğunu görelim:

26 Eylül 2015 19:28:01.660 müşteri 192.168.7.254#49816 (site1.ru): sorgu: site1.ru IN A + (192.168.7.246)

Böylece bilgisayarın nereye tırmandığını takip etmek çok uygundur. Örneğin, dns sunucusunu geçici olarak yükseltebilir, sorgu günlüğünü açabilirsiniz. İstemcide, yapılandırdığımız tek dns sunucusunu belirtin. Ardından, örneğin Windows'un bilgimiz olmadan yüklendikten sonra nereye tırmandığını izleyebilirsiniz. Veya Skype'taki reklamların nereden yüklendiği. Tüm istekler, daha sonra kolayca analiz edilebilecek bir dosyaya düzgün bir şekilde eklenecek ve ardından örneğin .

Bu materyalde anlatmak istediğim tek şey buydu. Bind (adlandırılmış) yapılandırma konusu oldukça kapsamlıdır. Belki ona geri dönerim.

Mikrotik'te çevrimiçi kurslar

Mikrotik router'larla nasıl çalışılacağını öğrenmek ve bu alanda uzmanlaşmak istiyorsanız, resmi kurstan alınan bilgilere dayalı bir program üzerinden kurslar almanızı tavsiye ederim. MikroTik Sertifikalı Ağ Sorumlusu. Dışında resmi program, kurslar laboratuvar çalışmaları Edinilen bilgileri pratikte test edebileceğiniz ve pekiştirebileceğiniz yer. Tüm detaylar sitede. Eğitimin maliyeti çok uygun, bugün geçerli olan konu alanında yeni bilgiler edinmek için iyi bir fırsat. Kurs özellikleri:
  • Uygulama odaklı bilgi;
  • Gerçek durumlar ve görevler;
  • Uluslararası programların en iyisi.