Бид өөрсдийн дотоод DNS (PDNSD)-ийг блэкжактай, Google Public DNS-ээс илүү хурдан хийдэг. Дотоод сүлжээнд зориулсан кэш DNS серверийг (BIND) тохируулах DNS бүсийн өгөгдлийг бүрэн эсвэл хэсэгчлэн шилжүүлэх

03.05.2023

Жил бүр интернетийн хурд - сүүлчийн миль болон гол сувгууд хоёулаа илүү өндөр болж байна. Зөвхөн нэг л зүйл тогтмол байдаг - хоцролт нь физикийн хязгаарт аль хэдийн хүрсэн: оптик шилэн дэх гэрлийн хурд секундэд 200 мянган км бөгөөд үүний дагуу ~150 мс-ээс хурдан, Атлантын далай дахь серверийн хариуг хүлээн авах боломжгүй. ойрын ирээдүй (хэдийгээр мэдээжийн хэрэг агаарын судалтай оптик шилэн эсвэл радио реле холбоо гэх мэт таашаал байдаг, гэхдээ энэ нь зөвхөн мөнх бус хүмүүст бараг боломжгүй юм).

Жишээлбэл, бид Оросоос АНУ-д байрладаг вэб сайт нээхийг оролдох үед (түүний NS серверүүд нь тэнд байж магадгүй), домэйн нь таны үйлчилгээ үзүүлэгчийн DNS кэшээс олдохгүй бол бид удаан хүлээх хэрэгтэй болно. гигабит интернет, магадгүй бүтэн секунд: бид далайг даван туулахдаа домэйны NS серверүүдийн нэрийг хүлээн авч, IP-г нь шийдэж, DNS хүсэлтийг өөрөө илгээж, хүлээн авах болно ...

Хэдэн жилийн өмнө Google олон нийтэд нээлттэй болсон DNS серверүүд, мөн тэдгээрт шилжихийг дэмжихийн тулд тэд NameBench хэмээх хэрэглүүрийг бүтээсэн бөгөөд энэ нь таны аялсан түүх дээр DNS тест ажиллуулж, Google DNS нь таны ISP-ийн DNS серверээс хэр хурдан болохыг харуулдаг.

Гэхдээ би Google Public DNS-ээс хурдан ажилладаг өөрийн DNS серверийг хийж чадсан бөгөөд энэ товч тэмдэглэлд би үр дүнг хуваалцахыг хүсч байна.

PDNSD

pdnsd- DNS прокси кэш хийх. DNS хүсэлтийг удалгүй кэш хийхээс гадна (хамгийн бага TTL-ийг хатуу тогтоох чадвартай - энэ нь маш муу интернетэд шаардлагатай байж магадгүй) хэд хэдэн "эцэг эх" DNS серверүүд рүү нэгэн зэрэг хүсэлт илгээж, үйлчлүүлэгчид Эхний хариу өгсөн.

Зэрэгцээ санал хураалтыг оруулсан нь бидэнд хурдны гол давуу талыг өгч байгаа юм, учир нь Хэрэв аль нэг үйлчилгээ үзүүлэгчийн кэшээс үр дүн олдвол бид үр дүнг маш хурдан авдаг бөгөөд хэрэв эхний үйлчилгээ үзүүлэгч кэшэд хариулт байхгүй бол бүрэн, удаан шийдлийг хүлээх хэрэггүй.

Ubuntu дээр banal apt-get ашиглан суулгасан.

Тохиргооны хэд хэдэн цэг

global ( perm_cache=10240; //Кэшийн дээд хэмжээ килобайтаар. //Өгөгдмөлөөр энэ нь 1024 байсан, миний бүх бичлэг таарахгүй байна. cache_dir="/var/cache/pdnsd"; [...] min_ttl=60м; // Кэшд бичилт хадгалах хамгийн бага хугацаа //ТЛ нь 60 минутаас бага хугацаанд ирсэн ч max_ttl=1w байна. // кэшэд бичилт хадгалах хамгийн их хугацаа neg_ttl=5m; Сөрөг хариултыг кэш хийх хугацаа (жишээ нь, хэрэв домэйн олдохгүй бол) [..] par_queries=3; //Хэрэв нэгэн зэрэг асуусан "эцэг" DNS серверийн тоо) сервер ( шошго = "үндсэн"; ip = 85.21.192.5 // Тэнд Эдгээр нь 4 сервер, хэрэв эхний 3 нь хариу өгөхгүй бол 4 дэх 213.234.192.7 руу хүсэлт илгээгдэх болно //Эхний 2 сервер нь таны үйлчилгээ үзүүлэгчийн сервер, зарим нь хөрш 8.8.4.4 //Энэ нь Google Public DNS - тэдгээр нь ховор бүх зүйлийг кэш болгодог бөгөөд хурдан шийддэг, 8.8.8.8 [.. ] )

Зарчмын хувьд кэшийг бага түрэмгий болгож болох юм (жишээ нь min_ttl=1m), гэхдээ нэг жилийн хугацаанд ямар ч онцгой асуудал гараагүй. Асуудал гарсан тохиолдолд та кэшээс нэг оруулгыг устгах боломжтой.
sudo pdnsd-ctl бичлэг 3.14. устгах эсвэл бүгдийг нэг дор:
sudo pdnsd-ctl хоосон кэш

NameBench дээрх туршилтын үр дүн



Хүсэлтийн 50%-д нь 10 ms-ээс бага хугацаанд хариу хүлээн авдаг бол 85%-д нь Google Public DNS илүү хурдан байдаг ба үр дүн нь мэдээжийн хэрэг Google-тэй давхцаж байгааг бид харж байна.

Туршилтын үр дүнд үндэслэн NameBench бидэнд баяртайгаар мэдээлж байна.

8.8.8.8 SYS-192.167.0.98-ийн удаан хуулбар 8.8.4.4 SYS-192.167.0.98-ийн удаан хуулбар

Тиймээс зэрэгцээ асуулга бүхий ухаалаг кэш DNS прокси нь 100 мегабит интернетийг хурдасгах боломжийг танд олгоно. Мөн удаан (радио) холболтын хоцрогдол ихтэй, пакет алдагдах үед ялгаа нь тэнгэр газар шиг байж болно.
Зохиогч: Пол Коббо
Нийтэлсэн огноо: 2015 оны 5-р сарын 24
Орчуулга: А.Панин
Орчуулсан огноо: 2015 оны 7-р сарын 11

Бүлэг 4: DNS серверүүдийн танилцуулга

4.3. DNS серверүүдийг кэшлэх

DNS бүсэд үйлчилдэггүй, гэхдээ кэш асуулгад бусад нэрийн серверүүдтэй холбогдсон DNS серверийг кэш DNS сервер гэнэ. DNS серверүүдийг кэшлэх нь нөөцийн бүртгэл агуулсан DNS бүсийн мэдээллийн сантай ажиллахгүй. Үүний оронд тэд бусад нэрийн серверүүдтэй холбогдож холбогдох мэдээллийг кэшлэнэ.

Хоёр төрлийн DNS кэш сервер байдаг. Эдгээр нь дамжуулах DNS серверүүдийг ашигладаг DNS серверүүд, түүнчлэн root DNS серверүүдийг ашигладаг DNS серверүүд юм.

4.3.1. Дамжуулагч ашигладаггүй DNS серверийг кэш хийж байна

Дамжуулагч ашигладаггүй кэш хийх DNS сервер нь өөр газраас мэдээлэл авах ёстой. Үйлчлүүлэгчээс хүсэлт хүлээн авах үед энэ нь үндсэн серверүүдийн аль нэгтэй холбогддог. Үндсэн сервер нь дээд түвшний зорилтот домэйнд үйлчилдэг серверийн талаарх мэдээллийг кэш сервер рүү дамжуулдаг бөгөөд энэ нь эргээд өөр DNS сервер рүү чиглүүлэх болно. Сүүлчийн сервер нь хүсэлтэд хариулах мэдээлэлтэй байж болно, эсвэл өөр DNS серверийн талаарх мэдээллийг дамжуулж болно. Эцсийн эцэст манай DNS сервер хүсэлтэд хариу өгөхөд шаардлагатай мэдээллийг хүлээн авч, үйлчлүүлэгч рүү хариу илгээх болно.

Доорх зурагт үйлчлүүлэгч linux-training.be домэйн нэрийн IP хаягийн мэдээлэл авах хүсэлтийг илгээж буй үйл явцыг харуулав. Манай кэш сервер нь үндсэн сервертэй холбогдож, .be дээд түвшний домэйнд үйлчлэх сервер рүү дахин чиглэгдэх болно. Дараа нь энэ нь .be дээд түвшний домэйнд үйлчилдэг серверт холбогдож, Openminds байгууллагын нэрийн серверүүдийн аль нэгэнд шилжих болно. Эдгээр нэрийн серверүүдийн нэг нь (энэ тохиолдолд nsq.openminds.be) linux-training.be домэйн нэртэй серверийн IP хаягтай хүсэлтэд хариу өгөх болно. Манай кэш сервер илгээсний дараа энэ мэдээлэлүйлчлүүлэгч, үйлчлүүлэгч тухайн вэбсайт руу холбогдох боломжтой болно.

Өгөгдсөн домэйн нэрийг шийдвэрлэхийн тулд tcpdump sniffer ашиглах үед та дараах үр дүнг авч болно (мөр бүрийн эхний 20 тэмдэгт хасагдсан).

192.168.1.103.41251 > M.ROOT-SERVERS.NET.domain: 37279% А? 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: A3555? linux-сургалт.\ байх. (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: A 60888%? 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. Дамжуулагч сервер ашиглан DNS серверийг кэш хийх

Дамжуулагчийг ашигладаг кэш DNS сервер нь дамжуулагчаас шаардлагатай бүх мэдээллийг авдаг DNS сервер юм. Жишээлбэл, интернетийн үйлчилгээ үзүүлэгчийн DNS сервер нь дахин чиглүүлэх DNS серверийн үүрэг гүйцэтгэдэг.

Дээрх зурагт DNS серверийг харуулав дотоод сүлжээ ISP-ээр хангагдсан DNS серверийг дамжуулагч DNS сервер болгон ашигладаг компани. Хэрэв интернет үйлчилгээ үзүүлэгчээс өгсөн DNS серверийн IP хаяг 212.71.8.10 бол компанийн DNS серверийн нэрлэсэн.conf тохиргооны файлд дараах мөрүүд байх ёстой.

Экспедиторууд ( 212.71.8.10; );

Нэмж дурдахад та DNS серверээ нөхцөлт дамжуулагчтай ажиллахаар тохируулах боломжтой. Тохиргооны файл дахь нөхцөлт дамжуулагч DNS серверийн тайлбар дараах байдалтай байна.

"Sootherdomain.local" бүс ( урагш бичих; зөвхөн урагшлуулах; дамжуулагч ( 10.104.42.1; ); );

4.3.3. Давталт эсвэл рекурсив асуулга

Рекурсив хүсэлт нь DNS хүсэлт бөгөөд илгээсний дараа үйлчлүүлэгч DNS серверээс эцсийн хариу хүлээж авах болно (дээрх зурагт үүнийг MacBook-ээс DNS сервер рүү чиглэсэн тод улаан сумаар дүрсэлсэн болно). Давтагдах хүсэлт нь DNS хүсэлт бөгөөд илгээсний дараа үйлчлүүлэгч DNS серверээс эцсийн хариу хүлээж авахгүй (дээрх зурагт үүнийг DNS серверээс чиглэсэн гурван хар сумаар дүрсэлсэн болно). Давталттай асуулга нь ихэвчлэн нэрийн серверүүдийн хооронд хийгддэг. Root нэрийн серверүүд рекурсив асуулгад хариу өгөхгүй.

DNS бүсийг удирддаг DNS серверийг тухайн бүсийн эрх бүхий DNS сервер гэж нэрлэдэг. DNS бүс нь зөвхөн нөөцийн бүртгэлүүдийн цуглуулга гэдгийг санаарай.

DNS бүсийн анхны эрх бүхий DNS серверийг үндсэн DNS сервер гэж нэрлэдэг. Энэ сервер нь унших, бичих боломжтой DNS бүсийн мэдээллийн сангийн хуулбартай ажиллах болно. Хэрэв та алдаа гарсан тохиолдолд өгөгдлийн аюулгүй байдлыг нэмэгдүүлэх, серверийн гүйцэтгэлийг сайжруулах эсвэл ачааллыг тэнцвэржүүлэх шаардлагатай бол энэ DNS бүсийг удирдах өөр DNS серверийг ажиллуулж болно. Энэ серверийг хоёрдогч DNS сервер гэж нэрлэх болно.

Хоёрдогч сервер нь DNS бүсийг шилжүүлэх явцад үндсэн серверээс DNS бүсийн мэдээллийн сангийн хуулбарыг хүлээн авдаг. DNS бүсийн өгөгдөл дамжуулах хүсэлтийг хоёрдогч серверүүд тодорхой хугацааны интервалаар илгээдэг. Эдгээр хугацааны интервалын үргэлжлэх хугацааг SOA нөөцийн бүртгэлд оруулсан болно.

Та rndc хэрэгслийг ашиглан DNS бүсийн өгөгдлийг хүчээр шинэчлэх боломжтой. Доорх жишээ нь fred.local DNS бүсийн өгөгдөл дамжуулалтыг эхлүүлж, /var/log/syslog syslog файлын харгалзах хэсгийг хэвлэж байна.

root@debian7:/etc/bind# rndc refresh fred.local root@debian7:/etc/bind# grep fred /var/log/syslog | сүүл -7 | бууруулах -c38-бүс fred.local/IN: илгээх мэдэгдэл (цуваа 1) хүлээн авсан хяналтын сувгийн тушаал "refresh fred.local" бүс fred.local/IN: Дамжуулж эхэлсэн. 10.104.109.1#53-аас "fred.local/IN"-ийн шилжүүлэг: 10.104.33.30#57367 бүсийг ашиглан холбогдсон fred.local/IN: 10.104.109.1#53-аас "fred.local/IN"-ийн цуваа 2 дамжуулалт: Дамжуулах дууссан: 1 зурвас, 10 бичлэг, 264 байт, 0.001 сек (264000 байт/сек) бүс fred.local/IN: илгээх мэдэгдэл (цуваа 2) root@debian7:/etc/bind#

Хоёрдогч DNS серверийг DNS бүсэд нэмэх үед та серверийг үндсэн серверийн боол DNS сервер байхаар тохируулж болно. Үндсэн DNS сервер нь хоёрдогч сервертэй холбоотой мастер DNS сервер байх болно.

Ихэнх тохиолдолд үндсэн DNS сервер нь бүх боол серверүүдтэй холбогддог мастер сервер юм. Заримдаа боол сервер нь дараагийн түвшний боол серверүүдийн мастер сервер байж болно. Доорх зурган дээр ns1 нэртэй сервер нь үндсэн сервер, ns2, ns3, ns4 нэртэй серверүүд нь хоёрдогч серверүүд юм. Хэдийгээр ns2 болон ns3 нэртэй серверүүдийн мастер сервер нь ns1 боловч ns4-ийн мастер сервер нь ns2 юм.

SOA нөөцийн бүртгэл нь refresh нэртэй DNS бүсийн өгөгдөл сэргээх хурдны утгыг агуулна. Хэрэв энэ утгыг 30 минут гэж тохируулсан бол боол сервер 30 минут тутамд DNS бүсийн өгөгдлийн хуулбарыг шилжүүлэх хүсэлтийг илгээх болно. Мөн энэ оруулгадахин оролдох нэртэй завсрын хугацааны утгыг агуулна. Энэ үнэ цэнэМастер сервер нь сүүлийн DNS бүсийн өгөгдөл дамжуулах хүсэлтэд хариу өгөхгүй үед ашиглагддаг. Дуусах хугацаа нэртэй утга нь DNS бүсийн өгөгдлийг шинэчлэхгүйгээр боол сервер үйлчлүүлэгчдийн хүсэлтэд хариу өгөх хугацааг тогтоодог.

DNS бүсийн (linux-training.be) SOA нөөцийн бүртгэлийн өгөгдлийг уншихын тулд nslookup хэрэгслийг ашиглах жишээг доор харуулав.

Root@debian6:~# nslookup > төрөл=SOA тохируулах > сервер ns1.openminds.be > linux-training.beСервер: ns1.openminds.be Хаяг: 195.47.215.14#53 linux-training.be гарал үүсэл = ns1.openminds.be мэйл хаяг = hostmaster.openminds.be сериал = 2321001133 шинэчлэх = 14400 дахин оролдох = хамгийн багадаа 360 = 360

DNS бүсийн өгөгдлийн дамжуулалт нь зөвхөн DNS бүсийн өгөгдлийн сангийн өгөгдөл өөрчлөгдөх үед (өөрөөр хэлбэл нэг буюу хэд хэдэн үндсэн сервер талын нөөцийн бүртгэлийг нэмэх, устгах, өөрчлөх) үед л тохиолддог. Боол сервер нь SOA нөөцийн бичлэгийн өөрийн хуулбарын хувилбарын дугаарыг харгалзах мастер серверийн SOA нөөцийн бүртгэлийн хувилбарын дугаартай харьцуулдаг. Хэрэв хувилбарын дугаар таарч байвал өгөгдлийн шинэчлэлт шаардлагагүй (учир нь өөр нөөцийн бүртгэл нэмж, устгаагүй, өөрчлөгдөөгүй). Үүнтэй ижил тохиолдолд, хэрэв боол серверийн талд байгаа SOA нөөцийн бичлэгийн хувилбарын дугаар нь харгалзах мастер серверийн талд байгаа ижил бичлэгийн хувилбарын дугаараас бага байвал DNS бүсийн өгөгдөл дамжуулах хүсэлт гаргана.

Доорх нь DNS бүсийн өгөгдөл дамжуулах явцад таслагдсан өгөгдөл бүхий Wireshark sniffer цонхны агшин зураг юм.

4.9. DNS бүсийн өгөгдлийг бүрэн эсвэл хэсэгчлэн шилжүүлэх

DNS бүсийн өгөгдлийг дамжуулах нь бүрэн эсвэл хэсэгчилсэн байж болно. Нэг эсвэл өөр горимыг ашиглах шийдвэр нь шилжүүлэх шаардлагатай өгөгдлийн хэмжээнээс хамаарна бүрэн шинэчлэлт Slave сервер дээрх DNS бүсийн мэдээллийн сан. Өөрчлөгдсөн өгөгдлийн нийт хэмжээ нь нийт мэдээллийн сангийн хэмжээнээс бага байвал бүсийн өгөгдлийг хэсэгчлэн шилжүүлэх нь зүйтэй. Бүрэн DNS бүсийн өгөгдлийн дамжуулалтыг AXFR протокол ашиглан, хэсэгчилсэн DNS бүсийн өгөгдөл дамжуулахыг IXFR протокол ашиглан гүйцэтгэдэг.

Өдрийн мэнд уншигчид аа. Үргэлжлүүлж байна онолын материалӨө, одоогийн нийтлэлд би практик жишээг харахыг хүсч байна суурилуулалт ба тохиргооөөр BIND серверийн тохиргоо.Нийтлэлд би тайлбарлах болно DNS кэшийг тохируулахмөн дүүрэн DNS мастер сервер. Би тайлбарыг ерөнхий ойлголт, аливаа зүйлийг зохион байгуулахад шаардлагатай алхмуудаас эхлүүлэх болно DNS серверүүд.

Ерөнхий мэдээлэл

Нэрлэсэннэг хэсэг болох чөтгөр юм багц холбох9мөн байх домэйн нэрийн сервер. Чөтгөр нэртэйямар ч төрлийн серверийн функцийг хэрэгжүүлэх боломжтой: эзэн, боол, кэш. Дээрх диаграммд би үндсэн зүйлийг харуулахыг оролдсон BIND DNS сервер хэрхэн ажилладаг. Ажлын ихэнх хэсгийг гүйцэтгэдэг хоёртын файл нь дотор байрладаг /usr/sbin/named. Энэ нь үндсэн тохиргооны файлаас тохиргоог авдаг нэртэй.confмөн лавлахад байрладаг /etc/bind. Үндсэн тохиргоондтодорхойлсон серверийн ажлын лавлах, энэ нь ихэвчлэн лавлах юм /var/cache/bind, аль нь худлаа бүсийн тодорхойлолтын файлуудболон бусад үйлчилгээний файлууд. Захидал бүсийн нэрсТэгээд бүсийн тодорхойлолт файлбагц бүсийн хэсэгпараметртэй файл. Бүсийн хэсэгэнэ нь мөн энэ серверийн бүсийн хариуцлагын төрлийг (мастер, боол гэх мэт) тогтоож, одоогийн бүсийн тусгай параметрүүдийг (жишээлбэл, одоогийн бүсийн хүсэлтийг аль интерфейс дээр боловсруулах) тодорхойлдог. Бүсийн тодорхойлолтын файлдбүсийн параметрүүд болон нөөцийн бүртгэлийг агуулдаг (энэ догол мөрөнд заасан замууд өөр байж болно, энэ нь Линукс түгээлтэсвэл параметрүүд).

Энэ ерөнхий схемтодорхой тохиргоог авч үзэхэд ирээдүйд төөрөгдлөөс зайлсхийхэд туслах ажил.

Програмын 4-р хувилбарын тохиргооны файлын формат нь найм, ес дэх хувилбарт ашигласан форматаас ялгаатай. BIND. Би шинээр суулгана гэж найдаж байна гэж бодож байна DNSсервер, гэхдээ би хуучин хувилбарыг суулгах нь утгагүй байгаа тул шинэ хувилбарын тохиргоог харах болно.

Анхны өгөгдөл

DNS зөв ажиллахын тулд танд . Одоогийн нийтлэл дэх DNS-ийг Debian түгээлт дээр тохируулах болно. Стенд сүлжээний тохиргоо дараах байдалтай байна.

DNS: ~# CAT/ETC/Network/InterFaces Auto LO IFACE LOOPBACK AUTH0 IFACE ETH0 INETCAS 10.0.152 NETMASK 255.255.255.0 GATEWAY 10.0.254 AUTOO AUTH1 ATH181. Address Сүлжээний маск 255.255.255.0

Хаана 10.0.0.152/24 - гадаад интерфейс (үйлчилгээ үзүүлэгчээс хуваарилсан дэд сүлжээ), 192.168.1.1/24 - дотоод (орон нутгийн сүлжээ). Тусгай бүсийг example.com гэж нэрлэх болно. Жишээн дээр боол сервер, хоёрдогч сервер нь IP дээр байрлана 10.0.0.191 .

BIND9 суулгаж байна

DNS сервер ажиллахын тулд та хийх ёстой холбох9 (зарим хуваарилалтад - холбох ). Диаграммд дурдсанчлан - үндсэн тохиргооны файл BINDфайл юм нэртэй.conf (энэ файллавлахад байрлуулж болно /гэх мэт, заримдаа дотор /etc/bind).

Параметрүүд (синтакс) нэрлэгдсэн.conf

Нэрлэсэн.conf файлын синтаксдараах дүрмийг баримталдаг.

IP хаягууд- IP жагсаалтыг ";" тэмдгээр тусгаарлах ёстой. , 192.168.1.1/24 эсвэл 192.168.1.1/255.255.255.0 форматаар дэд сүлжээг зааж өгөх боломжтой, (IP-г хасахын тулд та түүний өмнө тэмдэг тавих хэрэгтэй!), нэрийг зааж өгөх боломжтой. "ямар ч", "байхгүй", "localhost"давхар хашилтанд.

Сэтгэгдэл- #, //-ээр эхэлсэн, /*, */-д хавсаргасан мөрүүдийг тайлбар гэж үзнэ.

IN бүсийн тодорхойлолт файлууд -тэмдэг @нь тохиргооны файлд заасан бүсийн нэрийг хадгалах "хувьсагч" юм нэртэй.confэсвэл @ зааварт $ORIGINодоогийн бүсийн тодорхойлолт.

Тус бүр дууссан мөрпараметрүүд нь тэмдэгтээр төгсөх ёстой; .

Acl хэсэг

Acl (хандалтын хяналтын жагсаалт)- сүлжээний нэрсийн жагсаалтыг зааж өгөх боломжийг танд олгоно. Хэсгийн формат: acl "сүлжээний_нэр" (ip; ip; ip; );

Сонголтуудын хэсэг

Сонголтуудын хэсэгбагц глобал параметрүүдбүх бүсийг хянадаг тохиргооны файл. Энэ хэсэг нь дараах форматтай. сонголтууд(сонголтын_хэсэг_операторууд);. Сонголтуудыг дотор нь "үүрлэж" болно Бүсийн хэсэг, мөн энэ нь глобал тохиргоог дарж байна. Ихэнхдээ ашигладаг сонголтуудын мэдэгдэл:

  • зөвшөөрөх-асуулга( list_ip} - Зөвхөн асуулгад хариу өгөхийг зөвшөөрдөг list_ip. Хэрэв байхгүй бол сервер бүх хүсэлтэд хариу өгнө.
  • зөвшөөрөх-рекурс ( list_ip} - list_ip-ээс ирсэн хүсэлтүүдэд рекурсив асуулга хийгдэнэ. Үлдсэн хэсэгт - давталттай. Хэрэв параметрийг заагаагүй бол сервер бүх сүлжээнд рекурсив асуулга гүйцэтгэдэг.
  • шилжүүлэхийг зөвшөөрөх ( list_ip} - Серверээс бүс авахыг зөвшөөрсөн серверүүдийн жагсаалтыг заана (ихэвчлэн боол серверүүдийг энд зааж өгсөн болно)
  • лавлах /зам/хүргэх/ажлын/дир- серверийн ажлын директор руу үнэмлэхүй замыг заана. Энэ мэдэгдэл нь зөвхөн сонголтын хэсэгт хүчинтэй.
  • дамжуулагч ( ip порт, ip порт...} - хостын хаяг, шаардлагатай бол хүсэлтийг дамжуулах портуудыг заана (ихэвчлэн ISP үйлчилгээ үзүүлэгчийн DNS-г энд зааж өгсөн болно).
  • урагшаа ЗӨВХӨН эсвэл урагшаа НЭГДҮГЭЭР - параметр эхлээдЭнэ нь DNS сервер нь дамжуулагчийн параметрт заасан DNS серверүүдийг ашиглан нэрийг шийдвэрлэхийг оролдох ёстой бөгөөд зөвхөн эдгээр серверүүдийг ашиглан нэрийг шийдвэрлэх боломжгүй тохиолдолд өөрөө нэрийг шийдвэрлэхийг оролдох болно.
  • мэдэгдэх ТИЙМ|ҮГҮЙ - ТИЙМ- бүсийн өөрчлөлтийн талаар боол серверүүдэд мэдэгдэх, ҮГҮЙ- бүү мэдэгд.
  • рекурс ТИЙМ|ҮГҮЙ - ТИЙМ- үйлчлүүлэгчийн хүсэлтээр рекурсив асуулга хийх, ҮГҮЙ- гүйцэтгэхгүй (зөвхөн давтагдах асуулга). Хэрэв хариулт нь кэшээс олдвол кэшээс буцаана. (зөвхөн Сонголт хэсэгт ашиглах боломжтой)

Бүсийн хэсэг

Бүс(үүд)-ийн тодорхойлолтыг тодорхойлно. Хэсгийн формат: бүс( хэсгийн_бүсийн_операторууд}; Операторууд, хамгийн их ашиглагддаг:

  • шинэчлэхийг зөвшөөрөх( list_ip} - энэ бүсийг динамикаар шинэчлэх боломжтой системийг зааж өгдөг.
  • файл "файлын нэр " - бүсийн параметрийн файлын замыг заана (сангийн мэдэгдлээр сонголтуудын хэсэгт заасан лавлах хэсэгт байрлах ёстой)
  • мастерууд ( list_ip} -мастер серверүүдийн жагсаалтыг заана. (зөвхөн харьяа бүсэд зөвшөөрнө)
  • бичих" бүсийн_төрөл " - одоогийн хэсэгт тодорхойлсон бүсийн төрлийг заана; бүс_төрөл нь дараах утгыг авч болно:
    • урагшаа- энэ бүсэд ирж буй хүсэлтийг дамжуулдаг дахин чиглүүлэх бүсийг заана.
    • сануулга- туслах бүсийг заана ( энэ төрөлкэшээс хариулт олж чадахгүй бол сервер холбогдох үндсэн серверүүдийн талаарх мэдээллийг агуулсан)
    • мастер- одоогийн бүсийн мастер серверээр ажиллахыг зааж өгнө.
    • боол- одоогийн бүсийн боол серверээр ажиллахыг зааж өгнө.

Нэмэлт тохиргооны сонголтууд

Бүсийн файл дахь цагийн утгууд S - секунд, М - минут, H - цаг, D - хоног, W - долоо хоног гэсэн үсгүүдийн аль нэгийг нь оруулаагүй бол анхдагчаар секундээр зааж өгнө. Үүний дагуу оруулга 2 цаг 20м5 секунд 2 цаг 20 минут 5 секундын утгатай байх ба 8405 секундэд тохирно.

-ээр төгсдөггүй аливаа хост/оруулга нэр цэгтооцдог FQDN бишнэр ба одоогийн бүсийн нэрээр нэмэгдэнэ. Жишээлбэл, examle.com бүсийн файл дахь domen оруулгыг domen.examle.com FQDN нэр болгон өргөтгөх болно. .

IN BIND тохиргооны файлууддараахь зүйлийг хэрэглэж болно заавар:

  • $TTL- одоогийн бүсийн бүх бичлэгийн анхдагч TTL-ийг тодорхойлно.
  • $ORIGIN- name.conf файлд заасан бүсийн нэрийг өөрчилнө. Үүний зэрэгцээ, энэхүү зааврын хамрах хүрээ нь "дээрээс" хамаарахгүй (өөрөөр хэлбэл, хэрэв файл $INCLUDE зааварт багтсан бол $ORIGN-ийн хамрах хүрээ нь эцэг эх рүү хамаарахгүй)
  • $INCLUDE- заасан файлыг бүсийн файлын нэг хэсэг болгон оруулна.

Би ялангуяа дүрслэхийг хүсч байна параметрийг зөвшөөрөх-шилжүүлэх ( 10.0.0.191; );. Энэ параметр нь бүсийн хуулбарыг татаж авах боломжтой серверүүдийг тодорхойлдог. гэж нэрлэгддэг боол сервер. Дараах жишээнд бид тохиргоог авч үзэх болно боол DNS.

Бүртгэлийг зөв ажиллуулахын тулд та тохирох лавлахыг үүсгэж, шаардлагатай эрхийг өгөх хэрэгтэй.

Dns:~# mkdir /var/log/bind/ dns:~# chmod 744 /var/log/bind/ dns:~# ps aux | grep нэртэй bind 4298 0.0 3.4 46792 13272 ? Ssl Jul05 0:00 /usr/sbin/named -u bind root 4815 0.0 0.1 3304 772 pts/4 S+ 18:19 0:00 grep нэртэй dns:~# chown bind /var/log/bind/ dns:~# ls -ld /var/log/bind/ drwxr--r-- 2 bind root 4096 7 сарын 6 18:18 /var/log/bind/

Dns:~# cat /var/cache/bind/example.com $TTL 3D @ IN SOA ns.example.com. root.example.com. (2011070601; цуваа 8H; 2Ц дахин сэргээх; 2W дахин оролдох; 1D хугацаа дуусах) ; хамгийн бага @ NS NS NS.example.com. @ 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 домэйнд.

Dns:~# cat /var/cache/bind/0.0.10.in-addr.arpa $TTL 3600 @ IN SOA ns.examle.com. root.example.com. (2007042001; Цуврал 3600; Сэргээх 900; Дахин оролдох 3600000; Хугацаа дуусах 3600) ; Хамгийн багадаа NS NS.examle.com. NS NS2.example.com ДАХЬ. 152 IN PTR examle.com. 191 IN PTR ns.example.com. * PTR examle.com-д. dns:~# cat /var/cache/bind/1.168.192.in-addr.arpa $TTL 3600 @ IN SOA ns.examle.com. root.example.com. (2007042001; Цуврал 3600; Сэргээх 900; Дахин оролдох 3600000; Хугацаа дуусах 3600) ; Хамгийн багадаа NS NS.examle.com. NS NS2.example.com ДАХЬ. * PTR examle.com-д.

Манай сүлжээ жижиг, сүлжээнд маш цөөхөн машин байдаг гэж үздэг. Бүх сүлжээний үйлчилгээнүүд нэг host example.com дээр байрладаг тул мастер DNS (ns.example.com.) болон хоёулаа шуудангийн сервер(mx.example.com.) нэг машиныг заадаг (10.0.0.152).

Хоёрдогч (боол) эрх бүхий бүсийн сервер

Үндсэн функц боол сервер- бүсийн тодорхойлолтыг мастер сервертэй автоматаар синхрончлох. Энэ даалгаварбаримт бичгээр зохицуулна RFC 1034Бүлэгт 4.3.5. дагуу энэ баримт бичиг AXFR хүсэлтийг ашиглан серверүүдийн хооронд өгөгдөл солилцохыг зөвлөж байна. Энэ хүсэлтийн хувьд бүх бүсийг нэг TCP холболтоор дамжуулах ёстой (RFC 1035).

Мөн, боол DNS серверачааллыг мастер сервертэй хуваалцдаг эсвэл эхний серверт алдаа гарсан тохиолдолд ачааллыг бүхэлд нь хүлээн авдаг.

Эхлэхээсээ өмнө Slave DNS серверийг тохируулах, та дараах тушаалыг ашиглан хоёрдогч серверээс бүсийг гараар авах боломжтой эсэхийг шалгах хэрэгтэй.

Root@debian:~# dig @10.0.0.152 example.com. axfr ;<<>> DiG 9.7.3<<>> @10.0.0.152 example.com. axfr; (1 сервер олдсон) ;; глобал сонголтууд: +cmd example.com. 259200 IN SOA ns.example.com. root.example.com. 2011070801 28800 7200 1209600 86400 example.com. NS.example.com ДАХЬ 259200. example.com. NS NS2.example.com ДАХЬ 259200. example.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 ДАХЬ CNAME example.com. example.com. 259200 IN SOA ns.example.com. root.example.com. 2011070801 28800 7200 1209600 86400 ;; Асуулгын хугацаа: 14 сек; СЕРВЕР: 10.0.0.152#53(10.0.0.152) ;; ХЭЗЭЭ: 2011 оны 7-р сарын 8-ны Баасан гараг 15:33:54;; XFR хэмжээ: 11 бичлэг (мессеж 1, байт 258)

  1. Хуулах тохиргооны файлнэртэй.confмастер серверээс;
  2. Солих мастер параметрийг бичнэ үүдээр төрөл боол
  3. Параметрийг зөвшөөрөх-шилжүүлэх ( 10.0.0.191; ); солихдээр мастерууд(10.0.0.152;);энэ нь хоёрдогч байх бүсүүдэд;
  4. Бүсүүдийг устгах, одоогийн сервер үйлчлэхгүйХэрэв боол рекурсив хүсэлтэд хариу өгөхгүй бол язгуурыг оруулаад;
  5. Лавлахууд үүсгэхөмнөх жишээн дээрх шиг логуудын хувьд.

Нийтдээ бид боол серверийн тохиргоог авдаг:

Root@debian:~# cat /etc/bind/named.conf сонголтууд ( "/var/cache/bind" лавлах; зөвшөөрөх-асуулга ( дурын; ); // бүх интерфэйсийн рекурсын дугаараас асуулгад хариулах; // рекурсивыг идэвхгүй болгох хүсэлт auth-nxdomain no; // for RFC1035-ийн нийцтэй байдал ( none; // бидэнд IPv6 хувилбар "үл мэдэгдэх" хэрэггүй // хариултуудад DNS серверийн хувилбарыг харуулахгүй; // доор тайлбарласан бүсүүд нь серверийг давталт // интерфэйсүүд, түүнчлэн өргөн нэвтрүүлгийн бүсүүдэд (RFC 1912-ын дагуу) "localhost" бүс (мастер төрөл; файл "localhost"; ); "127.in-addr.arpa" бүс ( мастер төрөл; файл "127.in-addr.arpa"; ); "0.in-addr.arpa" бүс (мастер төрөл; файл "0.in-addr.arpa"; ); "255.in-addr.arpa" бүс (мастер төрөл; файл "255.in-addr.arpa"; ); // үндсэн бүсийн тодорхойлолт "example.com" ( төрөл slave; файл "example.com"; мастерууд ( 10.0.0.152; ); ); //урвуу бүсийн бүсийн тодорхойлолт "0.0.10.in-addr.arpa" ( төрөл боол; файл "0.0.10.in-addr.arpa"; мастерууд ( 10.0.0.152; ); ); // бүртгэлийн тохиргооны бүртгэл ("бусад" суваг ("/var/log/bind/misc.log" файлын 4 хэмжээтэй 4м хувилбар; хэвлэх хугацаа ТИЙМ; хэвлэх-хэрэгцээ ТИЙМ; хэвлэх-категори ТИЙМ; ); сувгийн "асуулга" (файл "/var/log/bind/query.log" хувилбарууд 4 хэмжээ 4м; хэвлэх хугацаа ТИЙМ; хэвлэх хүндийн түвшин NO; хэвлэх ангилал NO; анхдагч ( "mic"; "; ); ); ;

Биднийг дахин эхлүүлсний дараа боол сервернь үндсэн серверээс шаардлагатай мэдээллээ амжилттай хуулж авах бөгөөд энэ нь лавлахад файл байгаа эсэхийг илтгэнэ.

Root@debian:~# ls -la /var/cache/bind/ нийт 28 drwxrwxr-x 2 root bind 4096 7-р сарын 8 18:47 . drwxr-xr-x 10 root root 4096 7-р сарын 8 15:17 .. -rw-r--r-- 1 холбох 416 7-р сарын 8 18:32 0.0.10.in-addr.arpa ...... - rw-r--r-- 1 холбох 455 7 сарын 8 18:32 example.com ........

Үндсэндээ /stroallow-transfer (pngp боол сервербүсийн хуулбарыг дотор нь хадгалж болохгүй Файлын систем. Энэ хуулбар нь зөвхөн DNS эхлэхэд л хэрэгтэй. Файлын системд бүсийн хуулбарыг хадгалах нь боол DNS-ийг эхлүүлэх үед мастер сервер ажиллах боломжгүй тохиолдолд алдаа гарахаас сэргийлж чадна. Хэрэв та бүсийн хэсэгт файлын сонголтыг заагаагүй бол хуулбар үүсгэхгүй.

DNS BIND-д зориулсан netfilter() тохируулж байна

Ер нь серверийг тохируулсны дараа түүнийг хамгаалах нь зүйтэй юм. Сервер 53/udp порт дээр ажиллаж байгааг бид мэднэ. Энэ тухай нийтлэлийг уншиж, танилцсаны дараа та сүлжээний траффикийг шүүх дүрмийг үүсгэж болно.

Dns ~ # iptables-save # DNS-д зориулсан iptables-ийн ердийн дүрмүүд *шүүлтүүр:ОРОЛТ ДУГУУР :УРАШТ ДУГААР :OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate ХОЛБООТОЙ, БАЙГУУЛСАН -j INPUT DROP -A -m conntrack --ctstate INVALID -j DROP # дотоод сүлжээнд DNS серверт хандахыг зөвшөөрнө: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 53 -m conntrack - -ctstate ШИНЭ -j ХҮЛЭЭН АВАХ -ГАРЦ -o lo -j ХҮЛЭЭН АВАХ -ГАРЦ -p icmp -j ХҮЛЭЭН АВАХ -ГАРЦ -p udp -m udp --sport 32768:61000 -j ХҮЛЭЭН АВАХ -ГАРЦ -p tcp - m tcp --sport 32768:61000 -j ACCEPT -A OUTPUT -m conntrack --ctstate ХОЛБООТОЙ, БАЙГУУЛЛАГДСАН -j ACCEPT # DNS серверийн хандалтыг гадагш илгээх хүсэлт гаргахыг зөвшөөрөх -A OUTPUT -p udp -m udp --dport 53 -m conntrack - -ctstate ШИНЭ -j КОММИТИЙГ ХҮЛЭЭН АВАХ

Энэ бол ердийн жишээ юм! Та өөрийн даалгавар болон сүлжээний тохиргоонд тохируулан iptables дүрмийг тохируулахын тулд дээрх нийтлэлүүдийг уншсанаар Linux дээр нетфилтер хэрхэн ажилладагийг ойлгох хэрэгтэй.

Алдааг олж засварлах

DNS-ийн асуудлыг тодорхойлох гол эх сурвалж нь. Замдаа алдаа гаргасан үед эхлүүлэх алдааны жишээ энд байна серверийн бүсийн үндсэн файл:

7-р сарын 5 18:12:43 dns-сервер нэртэй: BIND 9.7.3-ыг эхлүүлж -u bind 7-р сарын 5 18:12:43 dns-сервер нэртэй: "--prefix=/usr" "--mandir=/usr/-ээр бүтээгдсэн. 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=no" "--with-dlz-mysql=no" "--with-dlz-bdb=тийм" "--with-dlz-filesystem=тийм" "--with-dlz-ldap =yes" "--with-dlz-stub=yes" "--with-geoip=/usr" "--enable-ipv6" "CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2" "LDFLAGS=" " CPPFLAGS=" 7-р сарын 5 18:12:43 dns-сервер нэртэй: 1024-ээс 1048576 хүртэл нээлттэй файлуудын хязгаарыг тохируулсан. 7-р сарын 5 18:12:43 dns-сервер нэртэй: 1 ажилчны хэлхээг ашиглан 1 CPU оллоо. 7-р сарын 5 18:12: 43 dns-сервер нэртэй: 4096 хүртэлх сокет ашиглаж байна -"/etc/bind/bind.keys" файлын итгэмжлэгдсэн түлхүүрүүдэд 7-р сарын 5-ны 18:12:43 dns-сервер нэрлэгдсэн: өгөгдмөл UDP/IPv4 портын хүрээг ашиглаж байна: 7-р сарын 5 18:12:43 dns-сервер нэртэй: өгөгдмөл ашиглаж байна UDP/IPv6 портын хүрээ: 7-р сарын 5 18:12:43 dns-сервер нэртэй: IPv4 интерфэйс дээр сонсож байна, 127.0.0.1#53 5-р сарын 18:12:43 dns-сервер нэртэй: IPv4 интерфэйс eth1 дээр сонсож байна, 192.168.1.1 №53 7-р сарын 5 18:12:43 dns-сервер нэрлэгдсэн: динамик DNS-д зориулсан сессийн түлхүүр үүсгэж байна 7-р сарын 5 18:12:43 dns-сервер нэртэй: "/etc/bind/db.root"-оос үндсэн зөвлөмжийг тохируулж чадсангүй: файл олдсонгүй 7-р сарын 5 18:12:43 dns-сервер нэртэй: ачаалж буй тохиргоо: файл олдсонгүй # файл олдсонгүй нэртэй сервер: BIND 9.7.3 -u bind 7-р сарын 5 18:15:05 dns-сервер нэртэй: "--prefix=/usr" "--mandir=/usr/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=no" "--with-dlz-mysql=үгүй" "--with-dlz-bdb=тийм" "--with-dlz-filesystem=тийм" "--with-dlz-ldap=тийм" "--with-dlz -stub=yes" "--with-geoip=/usr" "--enable-ipv6" "CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2" "LDFLAGS=" "CPPFLAGS=" 7-р сарын 5 18:15: 05 dns-сервер нэртэй: 1024-өөс 1048576 хүртэл нээлттэй файлуудын хязгаарыг 7-р сарын 5-ны 18:15:05 dns-сервер нэрлэсэн: 1 ажилчны хэлхээг ашиглан 1 CPU олдсон 7-р сарын 5 18:15:05 dns-сервер нэртэй: хүртэл ашиглах 4096 залгуур 7-р сарын 5 18:15:05 dns-сервер нэртэй: "/etc/bind/named.conf"-оос тохиргоог ачаалж байна 7-р сарын 5 18:15:05 dns-сервер нэртэй: өгөгдмөл UDP/IPv4 портын мужийг ашиглаж байна: 5-р сарын 18 :15:05 нэрлэгдсэн dns-сервер: өгөгдмөл UDP/IPv6 портын мужийг ашиглаж байна: 5-р сарын 18:15:05 dns-сервер нэрлэгдсэн: IPv4 интерфэйс дээр сонсож байна, 127.0.0.1#53 7-р сарын 5-ны 18:15:05 dns-сервер нэртэй: IPv4 интерфэйс дээр сонсож байна eth1, 192.168.1.1#53 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: 254.169.IN-ADDR.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автоматаар хоосон бүс: 2.0.192.IN-ADDR.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: 100.51.198.IN-ADDR.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автоматаар хоосон бүс: 113.0.203.IN-ADDR.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: 255.255.255.255.IN-ADDR.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автоматаар хоосон бүс: 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 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: 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.IP6.ARPA 5-р сарын 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: D.F.IP6.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: 8.E.F.IP6.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: 9.E.F.IP6 .ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: A.E.F.IP6.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: автомат хоосон бүс: B.E.F.IP6.ARPA 7-р сарын 5 18:15:05 dns -сервер нэртэй: автомат хоосон бүс: 8.B.D.0.1.0.0.2.IP6.ARPA 7-р сарын 5 18:15:05 dns-сервер нэртэй: бүс 0.in-addr.arpa/IN: ачаалагдсан цуваа 1-р сарын 5 18: 15:05 dns-сервер нэртэй: 127.in-addr.arpa/IN бүс: 7-р сарын 5-нд ачаалагдсан 1-р цуврал 18:15:05 нэртэй dns-сервер: 255.in-addr.arpa/IN бүс: 7-р сарын 5-нд ачаалагдсан 18:15:05 нэртэй dns-сервер: zone localhost/IN: ачаалагдсан цуврал 2 7-р сарын 5 18:15:05 dns-сервер нэртэй: ажиллаж байгаа # эхлүүлсэн

Оношлогооны маш сайн хэрэгсэл.

Дүгнэлт

Энэ нийтлэлд би үндсэн BIND серверийн DNS тохиргоог хэрхэн тохируулах талаар тайлбарласан. Өгүүллийн зорилго нь UNIX дахь BIND серверийн ажиллагааны талаар ойлголт өгөх явдал байв. Би DNS-ийн аюулгүй байдлын асуудлыг бараг хөндөөгүй бөгөөд өөр өөр сүлжээнд бүс(үүд)-ийн талаар өөр өөр мэдээлэл илгээгдэх үед серверийн захын горимд ажиллах гэх мэт тодорхой тохиргоонуудыг бага зэрэг хөндсөн. Илүү гүнзгий ойлгохын тулд би нэмэлт эх сурвалжуудын жагсаалтыг өгөх болно, үүнд та шаардлагатай мэдээллийг олж авах боломжтой болно гэж найдаж байна. Би үүнд цэг тавина. Дараагийн удаа хүртэл.

Домэйн нэрийн систем: http://citforum.ru/internet/dns/khramtsov/
RFC 1034- Домэйн нэр - Үзэл баримтлал ба байгууламж: http://tools.ietf.org/html/rfc1034
RFC 1035- Домэйн нэр - Хэрэгжилт ба тодорхойлолт: http://tools.ietf.org/html/rfc1035
RFC 1537- Нийтлэг DNS өгөгдлийн файлын тохиргооны алдаа: http://tools.ietf.org/html/rfc1537
RFC 1591- Домэйн нэрний системийн бүтэц, төлөөлөгч: http://tools.ietf.org/html/rfc1591
RFC 1713- DNS дибаг хийх хэрэгслүүд: http://tools.ietf.org/html/rfc1713
RFC 2606- Дээд түвшний DNS нэрсийг нөөцөлсөн: http://tools.ietf.org/html/rfc2606
DNS аюулгүй байдал (DNSSEC): http://book.itep.ru/4/4/dnssec.htm
BIND 9 администраторын лавлах гарын авлага: http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.html
Аюулгүй BIND загвар: http://www.cymru.com/Documents/secure-bind-template.html
Тохиргооны параметрүүдийг дээр нь сайн тайлбарласан байгааорос: http://www.bog.pp.ru/work/bind.html
Автомат бүсийн файл үүсгэх: http://www.zonefile.org/?lang=en#zonefile

артем

30.10.2013

10379

Chan_sip.so hang асуудлыг шийдэхийн тулд кэш DNS серверийг тохируулж байна.

Asterisk SIP модуль нь DNS сервер ямар нэг шалтгаанаар хүсэлтэд хариу өгөхөө больсон бол DNS хүсэлтийн хугацаа дуусахаас өмнө SIP модулийн код ажиллахаа болино. Үүний үр дүнд SIP-ээр холбогдсон бүх үйлчлүүлэгч, үйлчилгээ үзүүлэгчид ажиллах боломжгүй, үйлчлүүлэгчид бүртгүүлж, дуудлага хийх боломжгүй болсон.
Асуудлыг шийдвэрлэх арга замууд:
1. SIP peers ‘host’ параметр болон SIP бүртгэлийн мөрөнд DNS нэрийг бүү зааж, зөвхөн IP хаягийг зааж өгнө (энэ нь танд асуудал үүсэх боломжийг бүрмөсөн арилгах боломжийг олгодог, гэхдээ зарим үйлчилгээ үзүүлэгчийн хувьд үүнийг хийх боломжгүй).
2. Asterisk хост дээр кэш хийх DNS серверийг тохируулна уу.

Энэ нийтлэл нь BIND DNS серверийг ашиглан асуудлыг шийдэх арга замыг тайлбарлах болно (заавар нь CentOS 5-6-д тохирсон)

BIND DNS серверийг тохируулж байна

1. BIND суулгаж, тохиргооны загвар болон стандарт бүсийн файлуудыг хуулна

yum суулгах bind bind-chroot
cp /etc/localtime /var/named/chroot/etc

cp /usr/share/doc/bind-*/sample/etc/named.root.hints /var/named/chroot/etc
cp /usr/share/doc/bind-*/sample/etc/named.rfc1912.zones /var/named/chroot/etc
cp /usr/share/doc/bind-*/sample/etc/named.conf /var/named/chroot/etc

cp /usr/share/bind-*/sample/var/named/localdomain.zone /var/named/chroot/var/named
cp /usr/share/bind-*/sample/var/named/localhost.zone /var/named/chroot/var/named
cp /usr/share/bind-*/sample/var/named/named.broadcast /var/named/chroot/var/named
cp /usr/share/bind-*/sample/var/named/named.ip6.local /var/named/chroot/var/named
cp /usr/share/bind-*/sample/var/named/named.local /var/named/chroot/var/named
cp /usr/share/bind-*/sample/var/named/named.root /var/named/chroot/var/named
cp /usr/share/bind-*/sample/var/named/named.zero /var/named/chroot/var/named

2. /var/named/chroot/etc/named.conf BIND тохиргоог засварлана уу.

Тохиргоонд дараах өөрчлөлтүүдийг хийх шаардлагатай.

> Сонголтууд хэсэгт дараах мөрийг нэмнэ:

Та DNS серверээ зааж өгч болно. Хэрэв та энэ мөрийг зааж өгөөгүй бол BIND нь үндсэн DNS серверүүдээс удаашрах болно

> 'localhost_resolver' харах бүсэд рекурсив асуулга хийхийг зөвшөөрөх ('recursion no'-г 'recursion yes' гэж солино; хэрэв үүнийг хийгээгүй бол хост өөрөө DNS серверээр дамжуулан рекурсив асуулга хийх боломжгүй болно). Бусад бүсийн рекурсив асуулга болон кэш асуулгыг идэвхгүй болгож болно

> Дотоод бүс болон DDNS-ийг тохируулах үүрэгтэй хэсгүүдийг тайлбарлах эсвэл устгах, учир нь тэд зүгээр л байхгүй болно

Үүссэн тохиргооны жагсаалт:

//
// Жишээ нэрлэгдсэн.conf BIND DNS серверийн "нэртэй" тохиргооны файл
// Red Hat BIND түгээлтийн хувьд.
// Дэлгэрэнгүйг BIND администраторын лавлах гарын авлагаас (ARM) үзнэ үү.
// file:///usr/share/doc/bind-*/arm/Bv9ARM.html
// Мөн BIND тохиргооны GUI-г үзнэ үү: /usr/bin/system-config-bind and
// түүний гарын авлага.
сонголтууд
{
// Эдгээр сонголтууд портыг идэвхгүй болгодог тул болгоомжтой ашиглах хэрэгтэй
// санамсаргүй байдлаар
// асуулга-эх порт 53;
// query-source-v6 порт 53;

// Дата/ директорт бичихийг зөвшөөрсөн файлуудыг оруулна уу:
"/ var / нэртэй" лавлах; // анхдагч
dump-file “data/cache_dump.db”;
статистик файл "өгөгдөл/named_stats.txt";
memstatistics-файл "өгөгдөл/named_mem_stats.txt";
хамгийн их кэшийн хэмжээ 2097152;

дамжуулагч ( 8.8.8.8; 8.8.4.4; );
};
//бүтгэх
//{
/* Хэрэв та дибаг хийхийг идэвхжүүлэхийг хүсвэл, жишээ нь. 'rndc trace' командыг ашиглан,
* нэрлэгдсэн нь $директор (/var/named) дотор ‘named.run’ файлыг бичихийг оролдоно.
* Анхдагч байдлаар, SELinux-н бодлого нь name-д /var/named лавлахыг өөрчлөхийг зөвшөөрдөггүй.
* тиймээс өгөгдмөл дибаг хийх бүртгэлийн файлыг data/ дотор оруулна уу:
*/
// сувгийн анхдагч_дибаг (
// файл "data/named.run";
// хүндийн динамик;
// };
//};
// Бүх BIND 9 бүсүүд нь "харагдах байдал"-д байгаа бөгөөд энэ нь өөр өөр бүсүүдэд үйлчлэх боломжийг олгодог
// янз бүрийн төрлийн үйлчлүүлэгчийн хаягууд болон бүлгүүдэд тохируулах сонголтууд
// бүсийн.
// Өгөгдмөл байдлаар, хэрэв named.conf нь "харах" заалт агуулаагүй бол бүх бүсүүд дотор байна
// "анхдагч" харагдац нь бүх үйлчлүүлэгчидтэй таарч байна.
// Хэрэв нэрлэгдсэн.conf нь ямар нэгэн "харах" заалтыг агуулж байвал бүх бүс ЗААВАЛ харагдацад байх ёстой;
// тиймээс бүтцийн өөрчлөлт хийхээс зайлсхийхийн тулд үзэл бодлыг ашиглаж эхлэхийг зөвлөж байна
// таны тохиргооны файлууд ирээдүйд.
"localhost_resolver" харах
{
/* Энэ харагдац нь локал хост шийдэгч (зөвхөн нэрийн серверийг кэшлэх) байхаар тохируулагдсан.
* Хэрэв таны хүссэн зүйл бол зөвхөн кэш хийх нэрийн сервер юм бол та зөвхөн энэ харагдацыг тодорхойлох хэрэгтэй:
*/
тохирох үйлчлүүлэгч (localhost;);
тохирох очих газрууд (localhost;);
рекурс тийм;

/* эдгээр нь бүх localhost-ын тодорхойлолтыг агуулсан бүсүүд юм
* RFC1912-д санал болгосны дагуу нэр, хаяг - эдгээр нэрс байх ёстой
* ЗӨВХӨН localhost үйлчлүүлэгчдэд үйлчилнэ:
*/
"/etc/named.rfc1912.zones" оруулах;
};
"дотоод" харах
{
/* Энэ харагдац нь зөвхөн "дотоод" үйлчлүүлэгчдэд үйлчлэхийг хүссэн бүсүүдийг агуулна
Таны шууд холбогдсон LAN интерфэйсүүдээр холбогддог - "localnets".
*/
тохирох үйлчлүүлэгч (локал сүлжээ;);
тохирох газрууд (локал сүлжээ;);
рекурсын дугаар;

Асуулга-кэшийг зөвшөөрөх (байхгүй; );

// бүх харагдац нь үндсэн зөвлөмжийн бүсийг агуулсан байх ёстой:
“/etc/named.root.hints” оруулах;

// “namemed.rfc1912.zones” оруулах;
// та rfc1912 нэрээ локал хост бус үйлчлүүлэгчдэд өгөх ёсгүй.

// Эдгээр нь таны "эрх мэдэлтэй" дотоод бүсүүд бөгөөд магадгүй
// мөн дээрх “localhost_resolver” харагдацад багтана:

//бүс "миний.дотоод.бүс" (
// төрөл мастер;
// "my.internal.zone.db" файл;
//};
//бүс "my.slave.internal.zone" (
// боолын төрөл;
// файл “slaves/my.slave.internal.zone.db”;
// мастерууд ( /* мастер нэрийн серверийн IP-г энд байрлуул */ 127.0.0.1; );
// // боол бүсүүдийг slaves/ санд оруулснаар тэдгээрийг шинэчлэх боломжтой
//};
//бүс "my.ddns.internal.zone" (
// төрөл мастер;
// шинэчлэхийг зөвшөөрөх (түлхүүр ddns_key; );
// файл "slaves/my.ddns.internal.zone.db";
// // динамикаар шинэчлэгдэх боломжтой бүсүүдийг slaves/ директорт байрлуулснаар тэдгээрийг шинэчлэх боломжтой
//};
};
//түлхүүр ddns_key
//{
// алгоритм hmac-md5;
// нууц "TSIG түлхүүрүүдийг үүсгэхийн тулд /usr/sbin/dns-keygen ашиглах";
//};
"гадаад" харах
{
/* Энэ харагдац нь зөвхөн “гадаад” үйлчлүүлэгчдэд үйлчлэхийг хүссэн бүсүүдийг агуулна
* таны шууд холбогдсон LAN интерфейсийн дэд сүлжээнд байхгүй хаягуудтай:
*/
тохирох үйлчлүүлэгч (ямар ч; );
тохирох газар (ямар ч; );

рекурсын дугаар;
// Та гадны үйлчлүүлэгчдэд рекурс хийхээс татгалзахыг хүсч магадгүй тул тэгэхгүй
// бүх хэрэглэгчдэд үнэ төлбөргүй DNS үйлчилгээг үзүүлнэ

асуулга-кэшийг зөвшөөрөх (байхгүй; );
// Ямар ч кэш өгөгдөл болон үндсэн зөвлөмжийг хайхыг идэвхгүй болгох

// бүх харагдац нь үндсэн зөвлөмжийн бүсийг агуулсан байх ёстой:
“/etc/named.root.hints” оруулах;

// Эдгээр нь таны "эрх мэдэл бүхий" гадаад бүсүүд бөгөөд магадгүй
// зөвхөн таны вэб болон шуудангийн серверт зориулсан оруулгуудыг агуулна:

//бүс "миний.гадаад.бүс" (
// төрөл мастер;
// "my.external.zone.db" файл;
//};
};

3. BIND-г ажиллуулж, системийг эхлүүлэх үед эхлүүлэхийг идэвхжүүлнэ

start нэртэй үйлчилгээ

Хэрэв тохиргооны синтакс дээр алдаа гарсан эсвэл ямар нэгэн файл байхгүй бол алдааны мэдэгдлийг консол руу гаргаж, /var/log/messages бүртгэлд бичнэ.