/usr/share/doc/HOWTO/fr-html/DNS-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>DNS HOWTO</title>
</head>
<body>
<h1>DNS HOWTO</h1>
<h2>Nicolai Langfeldt <code><janl@math.uio.no></code><br>
Traduction française par Mathieu Arnold
<code><arn_mat@club-internet.fr></code></h2>
Version 2.2, du 11 février 1999
<hr>
<em>Comment devenir un administrateur de DNS à la petite
semaine.</em>
<hr>
<h2><a name="s1">1. Préambule</a></h2>
<p>Mots-clés : DNS, bind, bind-4, bind-8, named, dialup, ppp,
slip, isdn, Internet, domain, name, hosts, resolving, caching</p>
<p>Ce document fait partie du <em>Linux Documentation
Project</em>.</p>
<h2><a name="ss1.1">1.1 Aspect juridique</a></h2>
<p>(C)opyright 1995-1999 Nicolai Langfeldt. Ne modifiez pas ce
document sans en modifier le message de copyright en conséquence.
Vous pouvez distribuer ce document librement sous réserve de
conserver le message de copyright.</p>
<h2><a name="ss1.2">1.2 Remerciements et appel aux bonnes
volontés</a></h2>
<p>J'aimerais remercier Arnt Gulbrandsen qui a tant souffert en
relisant les brouillons de ce document et qui a apporté nombre de
suggestions pertinentes. Merci également à tous ceux qui m'ont
envoyé leurs suggestions par courrier électronique. Merci
beaucoup ! Vous m'aidez vraiment dans ce travail.</p>
<p>Ce document n'est pas destiné à atteindre un jour un état final,
alors faites-moi part de vos problèmes ainsi que de vos succès,
cela me permettra d'améliorer ce HOWTO. Merci d'envoyer les
commentaires et/ou les questions et même l'argent à
janl@math.uio.no. Si vous m'envoyez un courrier électronique, merci
de <em>vérifier</em> que votre adresse de retour est correcte car
je reçois <em>beaucoup</em> de courrier électronique. Essayez aussi
de lire le chapitre <a href="#qanda">FAQ</a> avant de m'envoyer un
mail. Autre chose je (l'auteur) ne parle qu'anglais et
norvégien.</p>
<p>Si vous ne parlez ni l'anglais ni le norvégien, vous pouvez
toujours envoyer vos commentaires en français au traducteur
(arn_mat@club-internet.fr) qui fera suivre.</p>
<p>Si vous voulez traduire ce HOWTO, prévenez-moi pour que je
puisse garder le compte de toutes les langues dans lesquelles il a
été traduit :-), de plus, cela me permettra de vous tenir au
courant des évolutions de ce HowTo.</p>
<h2><a name="ss1.3">1.3 Dédicace</a></h2>
<p>Ce HOWTO est dédié à Anne Line Norheim. Pourtant, elle ne le
lira sans doute jamais, ce n'est pas du tout son genre.</p>
<h2><a name="intro"></a> <a name="s2">2. Introduction.</a></h2>
<p><b>Ce que ce document est et ce qu'il n'est pas</b></p>
<p>Le DNS est le <em>Domain Name System</em>. C'est l'ensemble des
règles utilisées par les machines et les logiciels pour établir,
entre autres choses, la correspondance entre les noms de machines
et les adresses IP, dont chaque machine sur le net est pourvue. Ce
document explique comment définir de telles correspondances à
l'aide d'un système Linux. Une correspondance est tout simplement
une relation entre deux objets, dans notre cas un nom de machine,
comme <code>ftp.linux.org</code>, et l'adresse IP de cette machine,
<code>199.249.150.4</code>.</p>
<p>Le DNS constitue pour le non-initié (vous dans le cas
présent ;-) une des parties les plus obscures de
l'administration de réseau. Le but de ce HOWTO est d'essayer d'en
éclaircir quelques aspects. Ce document explique comment configurer
un DNS <em>simple</em>. Nous allons commencer avec un serveur de
noms qui ne sert qu'à faire cache puis nous continuerons en
configurant un serveur DNS primaire pour un domaine. Pour des
configurations plus complexes, jetez un coup d'oeil à la section
<a href="#qanda">FAQ</a> de ce document. Si vous n'y trouvez pas ce
que vous cherchez, vous allez alors devoir <em>lire</em> la Vraie
Documentation. Je reviendrai sur ce en quoi consiste la Vraie
Documentation dans le chapitre <a href="#bigger">final</a>.</p>
<p>Avant de commencer, vous devez configurer votre machine pour
être capable de vous connecter par telnet sur d'autres machines
mais aussi pouvoir recevoir des connexions sur votre machine. Vous
devez aussi être en mesure de vous connecter au réseau par tous les
services possibles, et en particulier pouvoir faire <code>telnet
127.0.0.1</code>, ce qui revient à vous connecter à votre propre
machine (vérifiez tout de suite que ça marche !). Il est aussi
nécessaire, pour commencer, que les fichiers
<code>/etc/nnswitch.conf</code> (ou <code>/etc/host.conf</code>),
<code>/etc/resolv.conf</code> et <code>/etc/hosts</code> soient
correctement configurés car je n'expliquerai pas ici à quoi ils
servent. Si tout cela n'est pas déjà configuré et en état de
marche, lisez le NET-3-HOWTO.</p>
<p>Si vous utilisez une connexion SLIP ou PPP, il est indispensable
qu'elle fonctionne. Lisez le PPP HOWTO si ce n'est pas le cas.</p>
<p>Quand je dis ``votre machine'', j'entends la machine sur
laquelle vous aller essayer d'installer le DNS, et non pas une
autre machine dont vous pourriez vous servir pour accéder au
réseau.</p>
<p>Je supposerai par la suite que vous ne vous trouvez pas derrière
un firewall qui bloque les requêtes de résolution de nom. Si tel
est le cas, vous aurez besoin d'une configuration spéciale.
Reportez-vous alors au chapitre <a href="#qanda">FAQ</a>.</p>
<p>Le service de résolution de nom sous Unix est assuré par un
programme appelé <code>named</code>. Il fait partie du paquetage
``bind'', géré par Paul Vixie pour l'Internet Software Consortium.
<code>named</code> est inclus dans la plupart des distributions de
Linux et se trouve le plus souvent installé dans
<code>/usr/sbin/named</code>. Si vous disposez d'un
<code>named</code>, vous pouvez vraisemblablement l'utiliser. Si
vous n'en avez pas, chargez-en un à partir d'un site FTP Linux ou
allez chercher la dernière et meilleure version des sources du
programme depuis <a href=
"ftp://ftp.isc.org/isc/bind/src/cur/bind-8/">ftp.isc.org/isc/bind/src/cur/bind-8/</a>.
Ce HowTo parle de bind version 8. L'ancienne version de ce HowTo, a
propos de bind 4 est toujours disponible à <a href=
"http://www.math.uio.no/~janl/DNS/">www.math.uio.no/~janl/DNS/</a>
au cas ou vous auriez bind 4. Si la page man de <code>named</code>
parle de <code>named.conf</code> vous avec bind 8, si elle parle
(tout a la fin, dans la section FILES) de <code>named.boot</code>
vous avez bind 4. Si vous avez bind 4, et si la sécurité fait
partie de vos préoccupations, vous devriez vraiment passer à bind
8.</p>
<p>Le service DNS est une base de données à l'échelle du réseau
tout entier. Faites donc très attention à ce que vous y
introduisez. Si vous y mettez n'importe quoi, vous en retirerez
n'importe quoi, et les autres aussi. Conservez votre DNS bien
propre, à jour et cohérent et vous verrez qu'il vous offrira le
meilleur de lui-même. Apprenez a l'utiliser, l'administrer, le
débogger et vous ferez partie de ces administrateurs qui empêchent
que le réseau ne s'écroule sous le poids des systèmes mal
gérés.</p>
<p>Dans ce document, je dis des choses qui ne sont pas tout à fait
vraies (mais qui le sont toujours au moins à moitié). Si je le
fais, c'est toujours dans le but de rendre les choses plus simples.
Tout marchera (probablement ;-) très bien si vous croyez ce
que je vous dis.</p>
<p><b>Astuce :</b> S'ils existent déjà, faites une copie de
sauvegarde de tous les fichiers que je vous demande de modifier.
Ainsi, si plus rien ne marche après ce que nous allons faire, vous
pourrez toujours revenir au bon vieux temps où tout marchait
bien.</p>
<h2><a name="caching"></a> <a name="s3">3. Un Serveur de Noms qui
ne sert que de cache.</a></h2>
<p><b>Un premier aperçu de la configuration d'un DNS, très utile
pour ceux qui utilisent une connexion en dialup.</b></p>
<p>Un serveur de noms qui ne sert que de cache trouve la réponse
aux requêtes de résolution de nom et se souvient de cette réponse
chaque fois qu'on lui posera la même question par la suite. Cela
réduira les temps de réponse, surtout si vous avez une connexion
plutôt lente.</p>
<p>Vous avez tout d'abord besoin du fichier
<code>/etc/named.conf</code>. Ce fichier est lu au lancement de
<code>named</code>. Pour le moment, il ne doit pas contenir autre
chose que :</p>
<hr>
<pre>
// Fichier de config pour un serveur de noms qui ne fait que du cache
options {
directory "/var/named";
// Enlever les commentaires peut vous aider si vous avez a passer a
// travers un firewall et que ça ne marche pas :
// query-source port 53;
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
</pre>
<hr>
<p><b>TRÈS IMPORTANT :</b> Dans certaines versions de ce
document, les fichiers listés comme ci-dessus présentent un certain
nombre de caractères espace ou tabulation avant le premier
caractère non blanc de la ligne. Ils ne sont pas supposés faire
partie du fichier. <b>Effacez donc tous les caractères blancs</b>
de début de ligne des fichiers que vous copiez-collez à partir de
ce HOWTO.</p>
<p>La ligne ``<code>directory</code>'' indique à <code>named</code>
l'endroit où il doit rechercher ses fichiers. Tous les fichiers
dont nous parlerons maintenant auront un chemin relatif relatifs à
ce répertoire. Ainsi, <code>pz</code> est un sous-répertoire de
<code>/var/named</code>, c'est a dire <code>/var/named/pz</code>.
D'après le <em>Linux Filesystem Standard</em>, ce répertoire doit
être <code>/var/named</code>.</p>
<p>On trouve à cet endroit le fichier
<code>/var/named/root.hints</code>, qui doit ressembler à
ceci :</p>
<hr>
<pre>
; Il se peut qu'il y ait quelques commentaires ici si vous avez déjà ce
; fichier. de toutes façon, ce sont des commentaires, ils ne sont pas
; important du tout.
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
</pre>
<hr>
<p><b>Souvenez-vous bien de ce que j'ai dit pour les caractères
blancs en tête de ligne !</b></p>
<p>Ce fichier donne une description de tous les serveurs de noms du
monde qui se trouvent à la racine (au plus haut niveau) de la
hiérarchie des serveurs de noms. Il arrive que cette liste change,
c'est pourquoi il est essentiel que ce fichier soit maintenu à
jour. Reportez-vous à la section <a href="#maint">maintenance</a>
pour savoir comment le garder à jour. Le contenu de ce fichier est
décrit dans la page de man de <code>named</code> mais cette
dernière s'adresse plus, à mon humble avis, à ceux qui savent déjà
comment fonctionne ce programme.</p>
<p>La section suivante de <code>named.conf</code> est la dernière
partie. Elle sera expliquée dans un chapitre suivant, pour
l'instant, créez un fichier appelé <code>127.0.0</code> dans le
sous répertoire <code>pz</code> :</p>
<hr>
<pre>
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
</pre>
<hr>
<p>Après ça, vous avez besoin d'un fichier
<code>/etc/resolv.conf</code> qui ressemble à peu près à
ça :</p>
<hr>
<pre>
search subdomain.your-domain.edu your-domain.edu
nameserver 127.0.0.1
</pre>
<hr>
<p>La ligne <code>search</code> spécifie dans quels domaines il
faudra chercher lorsque vous voudrez vous connecter sur une machine
de nom quelconque. La ligne ``<code>nameserver</code>'' indique à
quelle adresse votre machine peut contacter un serveur de noms. Si
vous voulez indiquer plusieurs serveurs de nom, mettez une ligne
``<code>nameserver</code>'' pour chacun. Dans notre cas, il s'agit
de notre propre machine puisque c'est elle qui fait tourner
<code>named</code>. (Note : <code>named</code> ne lit jamais
ce fichier, c'est le <em>résolveur</em> qui utilise
<code>named</code> qui le fait).</p>
<p>Voyons sur un exemple à quoi sert ce fichier : si un client
cherche à contacter <code>foo</code>, on essaye d'abord
<code>foo.subdomain.your-domain.edu</code> puis
<code>foo.your-domain.edu</code> et enfin <code>foo</code>. Si un
client essaye de contacter <code>sunsite.unc.edu</code>, on essaye
d'abord <code>sunsite.unc.edu.subdomain.your-domain.edu</code> (je
sais, c'est stupide, mais c'est comme ça) puis
<code>sunsite.unc.edu.your-domain.edu</code> et enfin
<code>sunsite.unc.edu</code>. Faites attention à ne pas mettre trop
de noms de domaine dans la ligne <code>search</code> car cela prend
du temps de tous les essayer.</p>
<p>Cet exemple suppose que vous appartenez au domaine
<code>subdomain.your-domain.edu</code>. Votre machine s'appelle
alors certainement
<code>your-machine.subdomain.your-domain.edu</code>. La ligne
search ne doit pas contenir votre TLD (Top Level Domain;
<code>edu</code> dans notre cas). Si vous vous connectez
fréquemment à des machines dans un autre domaine, vous pouvez
rajouter ce domaine dans la ligne search comme ceci :</p>
<hr>
<pre>
search subdomain.your-domain.edu your-domain.edu other-domain.com
</pre>
<hr>
<p>et ainsi de suite. Évidemment, il faut appliquer cet exemple à
de vrais noms de domaines. Remarquez qu'ici il n'y a pas de point à
la fin des noms de domaine. C'est important, notez l'absence de
points aux fins des noms de domaines.</p>
<p>Ensuite, suivant votre version de la libc, vous allez devoir
modifier soit <code>/etc/nsswitch.conf</code>, soit
<code>/etc/host.conf</code>. Si vous avez déjà
<code>nsswitch.conf</code>, c'est celui-là que nous allons
modifier, sinon ce sera <code>host.conf</code>.</p>
<p><b>/etc/nsswitch.conf</b></p>
<p>C'est un long fichier qui spécifie où trouver différentes sortes
de types de données, dans quel fichier ou quelle base de données.
Il contient généralement des commentaires précieux au début, que
vous auriez tout intérêt à lire. Ensuite, trouvez la ligne qui
commence par ``<code>hosts:</code>'', elle doit ressembler à
ceci:</p>
<hr>
<pre>
hosts: files dns
</pre>
<hr>
<p>Si il n'y a aucune ligne qui commence par
``<code>hosts:</code>'', mettez celle ci-dessus. Elle dit que les
programmes doivent d'abord regarder dans <code>/etc/hosts</code>
puis demander au DNS en suivant les indications de
<code>resolv.conf</code>.</p>
<p><b>/etc/host.conf</b></p>
<p>Ce fichier contient certainement plusieurs lignes, dont une doit
commencer par <code>order</code> et ressembler à ça :</p>
<hr>
<pre>
order hosts,bind
</pre>
<hr>
<p>Si il n'y a pas de ligne ``<code>order</code>'', il faut en
mettre une. Elle indique aux routines de résolution de nom de
regarder d'abord dans <code>/etc/hosts</code> puis de demander au
serveur de noms (que vous avez précisé dans
<code>resolv.conf</code> comme étant 127.0.0.1).</p>
<h2><a name="ss3.1">3.1 Démarrer named.</a></h2>
<p>Après tout ça, il est temps de démarrer <code>named</code>. Si
vous utilisez une connexion en dialup, commencez par vous
connecter. Tapez ``<code>ndc start</code>'' et appuyez sur la
touche entrée, sans donner d'options. Si ça ne marche pas, essayez
plutôt ``<code>/usr/sbin/ndc start</code>''. Si ça ne marche
toujours pas, jetez un coup d'oeil au chapitre <a href=
"#qanda">FAQ</a>. Si vous jetez un oeil à votre fichier de messages
syslog (souvent appelé <code>/var/adm/messages</code>, mais
regardez également dans le répertoire <code>/var/log</code> ou dans
le fichier <code>syslog</code>) tout en lançant <code>named</code>
(faites <code>tail -f /var/adm/messages</code>), vous devriez voir
quelque chose comme ça :</p>
<p>(les lignes se terminant par \ se continuent sur la ligne
suivante)</p>
<blockquote>
<pre><code>
Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \
00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
(IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.
</code></pre></blockquote>
<p>Si il y a un quelconque message d'erreur, <code>named</code>
donnera le nom du fichier dans lequel se trouve l'erreur (soit
<code>named.conf</code>, soit root.hints, j'espère :-). Tuez le
processus <code>named</code> et re-vérifiez ce fichier.</p>
<p>Il est maintenant temps de vérifier votre configuration. Lancez
<code>nslookup</code> pour regarder le résultat de votre petit
travail.</p>
<blockquote>
<pre><code>
$ nslookup
Default Server: localhost
Address: 127.0.0.1
>
</code></pre></blockquote>
<p>Si vous obtenez ce message, c'est que ça marche. Nous l'espérons
tous. Si vous obtenez quoi que ce soit d'autre, revenez en arrière
et vérifiez tout. Chaque fois que vous modifiez le fichier
<code>named.conf</code>, il vous faut relancer <code>named</code>
avec la commande <code>ndc restart</code>.</p>
<p>Maintenant, vous pouvez entrer une requête. Essayez de contacter
une machine proche de vous. <code>pat.uio.no</code> est proche de
moi, à l'Université d'Oslo :</p>
<blockquote>
<pre><code>
> pat.uio.no
Server: localhost
Address: 127.0.0.1
Name: pat.uio.no
Address: 129.240.2.50
</code></pre></blockquote>
<p>nslookup a demandé à votre <code>named</code> de rechercher la
machine <code>pat.uio.no</code>. Il a ensuite contacté un des
serveurs de noms mentionnés dans <code>root.cache</code> et a
demandé le chemin à suivre. Il peut s'écouler un certain temps
avant que vous obteniez le résultat puisqu'il se peut qu'il
recherche tous les domaines listés dans
<code>/etc/resolv.conf</code>.</p>
<p>Si vous réessayez, vous obtiendrez ceci :</p>
<blockquote>
<pre><code>
> pat.uio.no
Server: localhost
Address: 127.0.0.1
Non-authoritative answer :
Name: pat.uio.no
Address: 129.240.2.50
</code></pre></blockquote>
<p>Notez cette fois ci l'apparition de la ligne
``<code>Non-authoritative answer :</code>''. Elle veut dire que
<code>named</code> n'a pas accédé au réseau pour obtenir la réponse
mais a trouvé l'information dans son cache. Cependant,
l'information cachée <em>pourrait</em> ne plus être à jour. C'est
pourquoi vous êtes informé de cette possibilité très improbable par
le message ``<code>Non-authoritative answer:</code>'' Quand
<code>nslookup</code> répond ceci la seconde fois qu'on lui demande
un certain hôte, c'est un signe certain que <code>named</code>
cache bien les informations et que tout marche. Pour sortir de
<code>nslookup</code>, utilisez la commande
``<code>exit</code>''.</p>
<h2><a name="ss3.2">3.2 Le rendre encore meilleur</a></h2>
<p>Dans les grands réseaux, bien administrés, des universités ou
FAI (Fournisseur d'Accès a Internet), vous remarquerez peut-être
que les administrateurs réseau ont mis en place une hiérarchie de
serveurs DNS ce qui permet de soulager le réseau interne ainsi que
le réseau vers l'extérieur. Il n'est pas facile de savoir si vous
êtes dans un réseau de ce type. Tout cela n'est pas très important,
mais en utilisant le serveur DNS de votre FAI comme ``forwarder''
vous pouvez rendre les réponses plus rapides et alléger la charge
de votre réseau. Avec un modem, la différence peut être sensible.
Pour améliorer encore notre exemple, supposons que votre FAI aie
deux serveurs de noms qu'il veux vous faire utiliser, ayant pour
adresses IP <code>10.0.0.1</code> et <code>10.1.0.1</code>. Alors,
dans votre fichier <code>named.conf</code>, dans la section appelée
``options'' insérez les lignes :</p>
<hr>
<pre>
forward first;
forwarders {
10.0.0.1;
10.1.0.1;
};
</pre>
<hr>
<p>Redémarrez votre serveur de noms et testez avec
<code>nslookup</code>. Cela devrait marcher sans problèmes.</p>
<h2><a name="ss3.3">3.3 Félicitations !</a></h2>
<p>Maintenant, vous savez comment configurer un <code>named</code>
qui sert de cache. Servez-vous une bière, un verre de lait ou tout
ce que vous voudrez pour fêter l'événement.</p>
<h2><a name="simple"></a> <a name="s4">4. Un domaine
<em>simple</em></a></h2>
<p><b>Comment mettre en place votre propre domaine</b></p>
<h2><a name="ss4.1">4.1 Mais avant tout, un brin de
théorie</a></h2>
<p>Avant d'entrer <em>vraiment</em> dans le vif du sujet, il va
falloir que je fasse un brin de théorie avec quand même un petit
exemple sur le principe du service DNS. Et il faudra tout lire, car
c'est pour votre bien. Vous devriez au moins survoler rapidement
cette section. Arrêtez le survol quand vous arrivez à l'endroit où
j'explique le contenu du fichier <code>named.conf</code>.</p>
<p>Le service DNS est un système organisé de manière hiérarchique,
sous forme d'arbre. La racine est désignée par ``<code>.</code>''
et s'appelle ``la racine''. En dessous de <code>.</code> se
trouvent un certain nombre de TLD (<em>Top Level Domains</em>); les
plus connus sont <code>ORG</code>, <code>COM</code>,
<code>EDU</code>, <code>NET</code> et <code>FR</code>, mais il y en
a beaucoup d'autres. Tout comme un arbre, il a une racine avec des
branches qui en partent. Si vous avez des connaissances en
informatique fondamentale, vous reconnaîtrez dans le DNS un arbre
de recherche, avec des noeuds, des arrêtes et des feuilles.</p>
<p>Lorsque vous recherchez une machine, la question est posée
récursivement dans toute la hiérarchie depuis la racine. Lorsque
vous voulez trouver l'adresse IP de <code>prep.ai.mit.edu</code>,
votre DNS doit trouver un serveur de noms pour le domaine
<code>edu</code>. Votre DNS demande d'abord à un serveur de noms de
<code>.</code> (il possède déjà les adresses des serveurs pour
<code>.</code>, elles sont dans le fichier
<code>root.hints</code>), et le serveur pour <code>.</code> donne
une liste des serveurs d'<code>edu</code>.</p>
<p>Voici un exemple :</p>
<blockquote>
<pre><code>
$ nslookup
Default Server: localhost
Address: 127.0.0.1
</code></pre></blockquote>
<p>Interrogeons un serveur situé à la racine.</p>
<blockquote>
<pre><code>
> server c.root-servers.net.
Default Server: c.root-servers.net
Address: 192.33.4.12
</code></pre></blockquote>
<p>Positionnons le type de requête (Query Type) à NS (Name Server
records).</p>
<blockquote>
<pre><code>
> set q=ns
</code></pre></blockquote>
<p>Posons la question à propos de <code>edu</code>.</p>
<blockquote>
<pre><code>
> edu.
</code></pre></blockquote>
<p>Le <code>.</code> terminal est significatif, il indique à
<code>nslookup</code> que nous interrogeons que <code>edu</code> se
trouve juste sous <code>.</code> (et pas dans l'un de nos
sous-domaines, ce qui accélère la recherche).</p>
<blockquote>
<pre><code>
edu nameserver = A.ROOT-SERVERS.NET
edu nameserver = H.ROOT-SERVERS.NET
edu nameserver = B.ROOT-SERVERS.NET
edu nameserver = C.ROOT-SERVERS.NET
edu nameserver = D.ROOT-SERVERS.NET
edu nameserver = E.ROOT-SERVERS.NET
edu nameserver = I.ROOT-SERVERS.NET
edu nameserver = F.ROOT-SERVERS.NET
edu nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET internet address = 198.41.0.4
H.ROOT-SERVERS.NET internet address = 128.63.2.53
B.ROOT-SERVERS.NET internet address = 128.9.0.107
C.ROOT-SERVERS.NET internet address = 192.33.4.12
D.ROOT-SERVERS.NET internet address = 128.8.10.90
E.ROOT-SERVERS.NET internet address = 192.203.230.10
I.ROOT-SERVERS.NET internet address = 192.36.148.17
F.ROOT-SERVERS.NET internet address = 192.5.5.241
G.ROOT-SERVERS.NET internet address = 192.112.36.4
</code></pre></blockquote>
<p>Nous apprenons ainsi que tous les serveurs
<code>ROOT-SERVERS.NET</code> servent le domaine <code>edu.</code>;
nous pouvons donc continuer en les interrogeant tous. Nous
continuerons en interrogeant <code>C</code>. Maintenant, nous
voulons savoir qui sert le niveau suivant du nom de domaine :
<code>mit.edu.</code> :</p>
<blockquote>
<pre><code>
> mit.edu.
Server: c.root-servers.net
Address: 192.33.4.12
Non-authoritative answer:
mit.edu nameserver = STRAWB.mit.edu
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu
Authoritative answers can be found from:
STRAWB.mit.edu internet address = 18.71.0.151
W20NS.mit.edu internet address = 18.70.0.160
BITSY.mit.edu internet address = 18.72.0.3
</code></pre></blockquote>
<p><code>strawb</code>, <code>w20ns</code> et <code>bitsy</code>
servent tous le domaine <code>mit</code>, prenons-en un au hasard
et posons-lui la question au sujet d'un domaine encore plus
précis : <code>ai.mit.edu</code> :</p>
<blockquote>
<pre><code>
> server W20NS.mit.edu.
</code></pre></blockquote>
<p>On ne distingue pas majuscules et minuscules pour les noms de
domaine, et comme j'utilise ma souris pour faire du copier-coller,
vous lisez les choses dans ce document telles qu'elles apparaissent
sur mon écran.</p>
<blockquote>
<pre><code>
Server: W20NS.mit.edu
Address: 18.70.0.160
> ai.mit.edu.
Server: W20NS.mit.edu
Address: 18.70.0.160
Non-authoritative answer:
ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu nameserver = TRIX.AI.MIT.EDU
ai.mit.edu nameserver = MUESLI.AI.MIT.EDU
ai.mit.edu nameserver = LIFE.AI.MIT.EDU
ai.mit.edu nameserver = BEET-CHEX.AI.MIT.EDU
ai.mit.edu nameserver = MINI-WHEATS.AI.MIT.EDU
ai.mit.edu nameserver = COUNT-CHOCULA.AI.MIT.EDU
ai.mit.edu nameserver = MINTAKA.LCS.MIT.EDU
Authoritative answers can be found from:
AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU
AI.MIT.EDU nameserver = LIFE.AI.MIT.EDU
AI.MIT.EDU nameserver = BEET-CHEX.AI.MIT.EDU
AI.MIT.EDU nameserver = MINI-WHEATS.AI.MIT.EDU
AI.MIT.EDU nameserver = COUNT-CHOCULA.AI.MIT.EDU
AI.MIT.EDU nameserver = MINTAKA.LCS.MIT.EDU
ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5
GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.37.6
MUESLI.AI.MIT.EDU internet address = 128.52.39.7
LIFE.AI.MIT.EDU internet address = 128.52.32.80
BEET-CHEX.AI.MIT.EDU internet address = 128.52.32.22
MINI-WHEATS.AI.MIT.EDU internet address = 128.52.54.11
COUNT-CHOCULA.AI.MIT.EDU internet address = 128.52.38.22
MINTAKA.LCS.MIT.EDU internet address = 18.26.0.36
</code></pre></blockquote>
<p>Ainsi, <code>muesli.ai.mit.edu</code> est un serveur de noms
pour le domaine <code>ai.mit.edu</code> :</p>
<blockquote>
<pre><code>
> server MUESLI.AI.MIT.EDU
Default Server: MUESLI.AI.MIT.EDU
Address: 128.52.39.7
</code></pre></blockquote>
<p>Changeons le type de requête. Nous avons réussi à trouver le
serveur de noms, nous allons maintenant demander tout ce que
<code>muesli</code> sait sur le domaine
<code>prep.ai.mit.edu</code>.</p>
<blockquote>
<pre><code>
> set q=any
> prep.ai.mit.edu.
Server: MUESLI.AI.MIT.EDU
Address: 128.52.39.7
prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix
prep.ai.mit.edu
inet address = 18.159.0.42, protocol = tcp
ftp telnet smtp finger
prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu nameserver = beet-chex.ai.mit.edu
ai.mit.edu nameserver = alpha-bits.ai.mit.edu
ai.mit.edu nameserver = mini-wheats.ai.mit.edu
ai.mit.edu nameserver = trix.ai.mit.edu
ai.mit.edu nameserver = muesli.ai.mit.edu
ai.mit.edu nameserver = count-chocula.ai.mit.edu
ai.mit.edu nameserver = mintaka.lcs.mit.edu
ai.mit.edu nameserver = life.ai.mit.edu
gnu-life.ai.mit.edu internet address = 128.52.32.60
beet-chex.ai.mit.edu internet address = 128.52.32.22
alpha-bits.ai.mit.edu internet address = 128.52.32.5
mini-wheats.ai.mit.edu internet address = 128.52.54.11
trix.ai.mit.edu internet address = 128.52.37.6
muesli.ai.mit.edu internet address = 128.52.39.7
count-chocula.ai.mit.edu internet address = 128.52.38.22
mintaka.lcs.mit.edu internet address = 18.26.0.36
life.ai.mit.edu internet address = 128.52.32.80
</code></pre></blockquote>
<p>En commençant à partir de <code>.</code>, nous avons
successivement trouvé les serveurs de noms des différents niveaux
du nom de domaine. Si vous aviez utilisé votre propre serveur DNS à
la place de tous ces autres serveurs, votre <code>named</code>
aurait, bien sûr, caché toutes ces informations et il n'aurait plus
eu besoin de les redemander pendant un certain temps.</p>
<p>Si l'on revient a l'analogie avec les arbres, chaque
``<code>.</code>'' dans le nom est un embranchement. Et chaque nom
entre deux <code>.</code> est une branche de l'arbre.</p>
<p>Grimpons ensemble dans l'arbre en prenant le nom que nous
voulons (<code>prep.ai.mit.edu</code>). On part de la racine
(<code>.</code>), on regarde ensuite dans quelle branche grimper,
dans notre cas, <code>edu</code>. Dès qu'on l'a trouvée, on y
grimpe en passant par le serveur qui connaît cette partie du nom.
Ensuite, assis sur la branche <code>edu</code>, on cherche la
branche <code>mit</code> (le nom combiné est <code>mit.edu</code>),
puis la branche <code>ai.mit.edu</code>. Maintenant, on est sur le
bon serveur, au bon embranchement. La dernière partie est de
trouver <code>prep.ai.mit.edu</code>, ce qui est très simple. En
informatique fondamentale, on appelle <code>prep</code> une
<em>feuille</em> de l'arbre.</p>
<p>Un domaine dont on parle beaucoup moins, mais qui n'en est pas
moins important, est <code>in-addr.arpa</code>. Ce domaine trouve
sa place dans la hiérarchie des noms de domaine comme un domaine
``normal''. <code>in-addr.arpa</code> nous sert à obtenir le nom
d'hôte connaissant l'adresse IP d'une machine. Une chose très
importante ici est de bien remarquer que les adresses IP sont
notées en sens inverse à l'intérieur du domaine
<code>in-addr.arpa</code>. Si vous avez l'adresse d'une
machine : <code>192.128.52.43</code>, <code>named</code>
procède exactement comme dans l'exemple de
<code>prep.ai.mit.edu</code> : il trouve les serveurs pour
<code>in-addr.arpa.</code>, trouve les serveurs pour
<code>192.in-addr.arpa.</code>, trouve les serveurs pour
<code>128.192.in-addr.arpa.</code>, et finalement trouve les
serveurs pour <code>52.128.192.in-addr.arpa.</code> . On obtient
bien ainsi l'information liée à
<code>43.52.128.192.in-addr.arpa.</code> Malin, n'est ce pas ?
(dites oui). En fait, la résolution de noms inverse est assez
difficile à admettre les premières années.</p>
<p>À vrai dire, je vous ai menti. Le service DNS ne marche pas
vraiment comme ça. Mais ce que je vous ai dit est suffisamment
proche de la réalité.</p>
<h2><a name="ss4.2">4.2 Notre propre domaine</a></h2>
<p>Maintenant, nous en sommes à définir notre propre domaine bien à
nous. Nous allons créer le domaine <code>linux.bogus</code> et y
déclarer quelques machines. C'est un nom de domaine totalement
factice, afin d'être sûr de ne déranger personne dans le Vaste
Monde.</p>
<p>Encore une chose avant de commencer. Tous les caractères ne sont
pas admis dans les noms de machines. On ne doit utiliser que les
caractères de l'alphabet anglais (a-z), les nombres (0-9) et le
tiret ``-''. Utilisez ces caractères, majuscules et minuscules sont
confondues, donc <code>pat.uio.no</code> est identique à
<code>Pat.UiO.No</code>.</p>
<p>En fait, nous avons déjà commencé à créer notre propre domaine
avec cette ligne dans <code>named.conf</code>:</p>
<hr>
<pre>
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
</pre>
<hr>
<p>Notez bien l'absence de ``<code>.</code>'' à la fin des noms de
domaine de ce fichier. Elle signifie que nous allons définir la
zone <code>0.0.127.in-addr.arpa</code>, que nous sommes son serveur
principal et que tout est stocké dans un fichier appelé
<code>pz/127.0.0</code>. On a déjà vu ce fichier, il se présente
comme ceci :</p>
<hr>
<pre>
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
</pre>
<hr>
<p>Notez bien le ``<code>.</code>'' à la fin de tous les noms de
domaine complets de ce fichier, contrairement au fichier
<code>named.boot</code>. Certaines personnes aiment commencer
chaque fichier définissant une zone par une directive
<code>$ORIGIN</code>, mais en fait c'est superflu. L'origine
(l'emplacement dans la hiérarchie du service DNS) d'un fichier de
zone est indiquée dans la zone section du fichier
<code>named.conf</code>. Dans notre cas, c'est
<code>0.0.127.in-addr.arpa</code>.</p>
<p>Ce ``fichier de zone'' (``zone file''), contient 3 ``resource
records'' (RRs) : un SOA RR, un NS RR et un PTR RR. SOA est
l'abréviation de ``Start Of Authority'' (Origine de l'Autorité). Le
``@'' est une notation spéciale qui désigne l'origine. Et comme la
colonne ``domain'' de ce fichier donne
<code>0.0.127.in-addr.arpa</code>, la première ligne signifie
donc :</p>
<blockquote>
<pre><code>
0.0.127.IN-ADDR.ARPA. IN SOA ...
</code></pre></blockquote>
<p>NS est le ``resource records'' pour le serveur de noms (NS =
Name Server), Il n'y a pas de @ au début de la ligne, il est
implicite, puisque la ligne d'avant commence avec un ``@''. Alors,
faites-vous une fleur en omettant ce caractère. Donc, la ligne NS
peut aussi s'écrire comme suit :</p>
<blockquote>
<pre><code>
0.0.127.in-addr.arpa. IN NS ns.linux.bogus
</code></pre></blockquote>
<p>Elle dit au service DNS quelle machine est le serveur de noms
pour le domaine <code>0.0.127.in-addr.arpa</code>, c'est
<code>ns.linux.bogus</code>. <code>ns</code> est le nom habituel
des serveurs de noms, tout comme <code>www.</code> pour les
serveurs Web, mais c'est simplement une habitude, on peut choisir
n'importe quel nom.</p>
<p>Et finalement le PTR dit que l'adresse 1 dans le sous réseau
<code>0.0.127.in-addr.arpa</code>, donc 127.0.0.1 est appelé
<code>localhost</code>.</p>
<p>Le champ SOA est le préambule de <em>tous</em> les fichiers de
zone, et il doit y en avoir exactement un dans chaque fichier de
zone. Ce champ SOA décrit la zone, son origine (une machine appelée
<code>ns.linux.bogus</code>), qui est responsable de son contenu
(<code>hostmaster@linux.bogus</code>, vous devriez mettre votre
adresse email à cet endroit), de quelle version du fichier de zone
il s'agit (serial : 1), et quelques autres paramètres pour le
cache et les serveurs DNS secondaires. Quant aux champs restants
(<em>refresh</em>, <em>retry</em>, <em>expire</em> et
<em>minimum</em>) utilisez les valeurs données dans ce HOWTO et
tout se passera certainement très bien.</p>
<p>Maintenant, relancez votre <code>named</code> (avec la commande
<code>ndc restart</code>) et utilisez <code>nslookup</code> pour
regarder le résultat :</p>
<blockquote>
<pre><code>
$ nslookup
Default Server: localhost
Address: 127.0.0.1
> 127.0.0.1
Server: localhost
Address: 127.0.0.1
Name: localhost
Address: 127.0.0.1
</code></pre></blockquote>
<p>Tout va bien, on arrive à obtenir <code>localhost</code> à
partir de 127.0.0.1. Maintenant, pour le sujet qui nous préoccupe,
le domaine <code>linux.bogus</code>, insérez une nouvelle zone dans
le fichier <code>named.conf</code> :</p>
<hr>
<pre>
zone "linux.bogus" {
notify no;
type master;
file "pz/linux.bogus";
};
</pre>
<hr>
<p>Notez qu'encore une fois il n'y a pas de ``<code>.</code>'' à la
fin des noms de domaine dans le fichier
<code>named.conf</code>.</p>
<p>Dans le fichier de zone <code>linux.bogus</code>, nous allons
mettre quelques données totalement factices :</p>
<hr>
<pre>
;
; Zone file for linux.bogus
;
; The full zone file
;
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
1W ; expire, seconds
1D ) ; minimum, seconds
;
NS ns ; Inet Address of name server
MX 10 mail.linux.bogus ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
;
localhost A 127.0.0.1
ns A 192.168.196.2
mail A 192.168.196.4
</pre>
<hr>
<p>Il y a deux choses à noter à propos du champ SOA.
<code>ns.linux.bogus</code> <em>doit absolument</em> être une vraie
machine possédant un champ A. Il n'est pas légal d'avoir un champ
CNAME pour la machine mentionnée dans le champ SOA. Il n'est pas
nécessaire que son nom soit ``ns'', ce peut être tout autre nom
valide. La deuxième chose à noter c'est que
<code>hostmaster.linux.bogus</code> doit se lire comme
<code>hostmaster@linux.bogus</code>. Ce doit être un alias de mail,
ou une véritable boîte aux lettres électronique, et la personne qui
maintient le DNS doit la lire régulièrement. Tous les mails
concernant l'administration du domaine seront envoyés à cette
adresse. Il n'est pas obligatoire que le nom soit ``hostmaster'',
vous pouvez mettre votre adresse e-mail personnelle, mais il serait
bon que l'adresse ``hostmaster'' fonctionne aussi.</p>
<p>Il y a un nouveau RR (Resource Record) dans ce fichier, c'est le
MX, pour Mail eXchanger. Il indique aux systèmes de gestion du
courrier électronique à quelle machine envoyer le mail adressé à
<code>someone@linux.bogus</code>, dans notre cas à
<code>mail.linux.bogus</code> ou <code>mail.friend.bogus</code>. Le
nombre devant chaque machine est sa priorité vis-à-vis du champ MX,
le RR avec le numéro le plus faible (10) correspond à la machine à
laquelle le courrier doit être adressé en priorité. En cas d'échec,
il peut être adressé à la machine qui a le numéro de priorité
immédiatement supérieur, c'est-à-dire
<code>mail.friend.bogus</code> qui a une priorité de 20 dans notre
cas.</p>
<p>Relancez <code>named</code> en tapant <code>ndc restart</code>.
Examinons le résultat avec nslookup :</p>
<blockquote>
<pre><code>
$ nslookup
> set q=any
> linux.bogus
Server: localhost
Address: 127.0.0.1
linux.bogus
origin = ns.linux.bogus
mail addr = hostmaster.linux.bogus
serial = 199802151
refresh = 28800 (8 hours)
retry = 7200 (2 hours)
expire = 604800 (7 days)
minimum ttl = 86400 (1 day)
linux.bogus nameserver = ns.linux.bogus
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus preference = 20, mail exchanger = mail.friend.bogus
linux.bogus nameserver = ns.linux.bogus
ns.linux.bogus internet address = 192.168.196.2
mail.linux.bogus internet address = 192.168.196.4
</code></pre></blockquote>
<p>Un examen approfondi vous montrera qu'il y a un bug. En effet,
la ligne</p>
<blockquote>
<pre><code>
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
</code></pre></blockquote>
<p>est entièrement fausse. Il devrait y avoir</p>
<blockquote>
<pre><code>
linux.bogus preference = 10, mail exchanger = mail.linux.bogus
</code></pre></blockquote>
<p>J'ai fait cette erreur délibérément, pour voir si vous
suiviez :-) En regardant dans le fichier de zone, nous
trouvons que dans la ligne</p>
<blockquote>
<pre><code>
@ MX 10 mail.linux.bogus ; Primary Mail Exchanger
</code></pre></blockquote>
<p>il manque un point. Ou il y a un ``linux.bogus'' de trop. Si,
dans un fichier de zone, un nom de machine ne se termine pas par un
point, l'origine est ajoutée au nom de la machine. Ainsi, une des
deux formes :</p>
<hr>
<pre>
MX 10 mail.linux.bogus. ; Primary Mail Exchanger
</pre>
<hr>
<p>ou</p>
<hr>
<pre>
MX 10 mail ; Primary Mail Exchanger
</pre>
<hr>
<p>est correcte. Je préfère la deuxième forme parce qu'il y a moins
de caractères à taper. Certains approuveront, d'autres non. Dans un
fichier de zone, le nom de domaine doit ou bien être écrit et
terminé par un point, ou bien ne pas être inclus du tout. Dans le
dernier cas, le nom de domaine par défaut est l'origine.</p>
<p>Il faut que j'insiste sur le point suivant : dans le
fichier <code>named.conf</code>, il ne doit <em>pas</em> y avoir de
``<code>.</code>'' après les noms de domaines. Vous ne pouvez pas
vous imaginer les ravages qui ont été causés pas des
``<code>.</code>'' en trop ou en moins.</p>
<p>Cela étant dit, voici le nouveau fichier de zone, avec quelques
informations supplémentaires :</p>
<hr>
<pre>
;
; Zone file for linux.bogus
;
; The full zone file
;
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
1W ; expire, seconds
1D ) ; minimum, seconds
;
TXT "Linux.Bogus, your DNS consultants"
NS ns ; Inet Address of name server
NS ns.friend.bogus.
MX 10 mail ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
gw A 192.168.196.1
HINFO "Cisco" "IOS"
TXT "The router"
ns A 192.168.196.2
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "Pentium" "Linux 2.0"
www CNAME ns
donald A 192.168.196.3
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "i486" "Linux 2.0"
TXT "DEK"
mail A 192.168.196.4
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "386sx" "Linux 1.2"
ftp A 192.168.196.5
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "P6" "Linux 2.1.86"
</pre>
<hr>
<p>Il y a un certain nombre de nouveaux RR que nous allons passer
en revue : HINFO (Host INFOrmation), qui est en deux parties,
et c'est une bonne habitude à prendre que d'encadrer chacune de
guillemets. La première partie est la description matérielle ou le
type de processeur de la machine tandis que la deuxième partie
décrit le logiciel utilisé ou le système d'exploitation de la
machine. ns a pour processeur un Pentium et tourne sous Linux 2.0.
Le champ CNAME (Canonical NAME) sert à donner plusieurs noms à la
même machine. Par conséquent, <code>www</code> est un alias de
<code>ns</code>.</p>
<p>L'utilisation des champs CNAME est assez controversée. Mais il
est sage de suivre la règle selon laquelle un champ MX, CNAME ou
SOA ne doit <em>jamais</em> se référer à un champ CNAME, toujours
se référer à un champ A, il est donc préférable de ne pas
avoir :</p>
<hr>
<pre>
foobar CNAME www ; NON !
</pre>
<hr>
<p>En revanche, ceci est correct :</p>
<hr>
<pre>
foobar CNAME ns ; Oui !
</pre>
<hr>
<p>Il est aussi important de noter qu'un CNAME n'est pas un nom
d'hôte légal pour une adresse de courrier électronique.
<code>webmaster@www.linux.bogus</code> est une adresse de mail
illégale avec la configuration ci-dessus. Vous pouvez être sûrs
qu'il y a un certain nombre d'administrateurs système dans le Vaste
Monde qui sont très à cheval sur cette règle, même si avec un CNAME
ça marche pour vous. Une façon de contourner le problème est
d'utiliser des champs A (et peut-être d'autres, comme un champ MX
par exemple) à la place :</p>
<hr>
<pre>
www A 192.168.196.2
</pre>
<hr>
<p>Un certain nombre de gourous-du-bind recommandent de ne
<em>pas</em> utiliser de CNAME. Mais les discussions sur le pour et
le contre sortent du cadre de ce HOWTO.</p>
<p>Mais comme vous le voyez, ce HowTo ainsi que beaucoup de
serveurs ne suivent pas cette règle.</p>
<p>Chargez la nouvelle base de données en lançant <code>ndc
reload</code>, ce qui forcera <code>named</code> à relire ses
fichiers de configuration.</p>
<blockquote>
<pre><code>
$ nslookup
Default Server: localhost
Address: 127.0.0.1
> ls -d linux.bogus
</code></pre></blockquote>
<p>Ceci veut dire que l'on souhaite que tous les champs soient
affichés.</p>
<blockquote>
<pre><code>
[localhost]
$ORIGIN linux.bogus.
@ 1D IN SOA ns hostmaster (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum
1D IN NS ns
1D IN NS ns.friend.bogus.
1D IN TXT "Linux.Bogus, your DNS consultants"
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
gw 1D IN A 192.168.196.1
1D IN HINFO "Cisco" "IOS"
1D IN TXT "The router"
mail 1D IN A 192.168.196.4
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "386sx" "Linux 1.0.9"
localhost 1D IN A 127.0.0.1
www 1D IN CNAME ns
donald 1D IN A 192.168.196.3
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "i486" "Linux 1.2"
1D IN TXT "DEK"
ftp 1D IN A 192.168.196.5
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "P6" "Linux 1.3.59"
ns 1D IN A 192.168.196.2
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "Pentium" "Linux 1.2"
</code></pre></blockquote>
<p>Tout va bien. Regardons ce qu'il dit pour <code>www</code> tout
seul :</p>
<blockquote>
<pre><code>
> set q=any
> www.linux.bogus.
Server: localhost
Address: 127.0.0.1
www.linux.bogus canonical name = ns.linux.bogus
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 192.168.196.2
</code></pre></blockquote>
<p>En d'autres termes, le vrai nom de <code>www.linux.bogus</code>
est <code>ns.linux.bogus</code>, et vous avez en plus quelques
informations à propos de ns, en fait, suffisamment pour vous y
connecter si vous étiez un programme.</p>
<p>Bon, on a fait la moitié du boulot.</p>
<h2><a name="ss4.3">4.3 La zone inversée</a></h2>
<p>Ça y est, les programmes peuvent convertir les noms de
<code>linux.bogus</code> en adresses auxquelles ils peuvent se
connecter. Maintenant, on a besoin d'une zone inversée pour que
l'on puisse retrouver le DNS à partir de l'adresse. Ce nom est
utilisé par différents types de serveurs (FTP, IRC, WWW et autres)
pour décider s'ils vont discuter avec vous ou non, et s'ils le
font, quelle priorité ils vont vous donner. Pour un accès complet
aux services sur Internet, la zone inversée est indispensable.</p>
<p>Mettez ça dans votre <code>named.conf</code></p>
<hr>
<pre>
zone "196.168.192.in-addr.arpa" {
notify no;
type master;
file "pz/192.168.196";
};
</pre>
<hr>
<p>C'est exactement comme pour le <code>0.0.127.in-addr.arpa</code>
et le contenu est similaire :</p>
<hr>
<pre>
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; Serial, todays date + todays serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS ns.linux.bogus.
1 PTR gw.linux.bogus.
2 PTR ns.linux.bogus.
3 PTR donald.linux.bogus.
4 PTR mail.linux.bogus.
5 PTR ftp.linux.bogus.
</pre>
<hr>
<p>Redémarrez votre <code>named</code> (<code>ndc restart</code>)
et examinez votre travail avec nslookup :</p>
<hr>
<pre>
> 192.168.196.4
Server: localhost
Address: 127.0.0.1
Name: mail.linux.bogus
Address: 192.168.196.4
</pre>
<hr>
<p>On dirait que c'est bon, on va regarder en détails pour s'en
assurer :</p>
<hr>
<pre>
> ls -d 196.168.192.in-addr.arpa
[localhost]
$ORIGIN 196.168.192.in-addr.arpa.
@ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum
1D IN NS ns.linux.bogus.
1 1D IN PTR gw.linux.bogus.
2 1D IN PTR ns.linux.bogus.
3 1D IN PTR donald.linux.bogus.
4 1D IN PTR mail.linux.bogus.
5 1D IN PTR ftp.linux.bogus.
@ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum
</pre>
<hr>
<p>Pas mal ! Si ce que vous donne nslookup ne ressemble pas a
ça, allez a la pêche aux messages d'erreur dans votre syslog. J'ai
expliqué comment faire au tout début du chapitre.</p>
<h2><a name="ss4.4">4.4 Précautions d'usage</a></h2>
<p>Je devrais maintenant faire quelques remarques. Les adresses IP
utilisées dans les exemples précédents sont prises dans le bloc des
``réseaux privés'', c'est à dire des adresses qui ne doivent pas
être utilisées publiquement sur Internet. Donc, il est sage de les
avoir utilisées dans un exemple d'un HowTo. La deuxième chose est
la ligne <code>notify no;</code>. Elle demande à <code>named</code>
de ne pas informer ses serveur secondaires (les esclaves) quand
l'un de ses fichiers de zone a été mis à jour. Depuis Bind-8
<code>named</code> peut informer les autres serveurs listés dans
ses champs NS dans le fichier zone, quand une zone est mise a jour.
C'est pratique pour une utilisation normale, mais pour des
expériences privées cette fonctionnalité doit être mise hors
service, on ne va quand même pas polluer Internet avec nos
expériences, non ?</p>
<p>Bien sûr, ce domaine est très factice, tout comme le sont ses
adresses. C'est peut-être un peu déroutant pour vous. Un vrai
exemple tiré d'un vrai domaine vous attend au grand chapitre
suivant.</p>
<h2><a name="ss4.5">4.5 Pourquoi est-ce que les lookup inversés ne
marchent pas ?</a></h2>
<p>Il y a quelques trucs qui sont normalement évités avec les
lookups qui arrivent souvent quand on met en place des zones
inversés. Avant de continuer, vous avez besoin d'avoir des lookups
qui marchent sur vos propres serveurs de noms. Si ce n'est pas le
cas, revenez en arrière et réparez-le avant de continuer.</p>
<p>Je parlerais des deux problèmes de lookups inversés qui sont vu
de l'extérieur de votre réseau :</p>
<h3>La zone inverse n'est pas déléguée.</h3>
<p>Quand vous demandez à un fournisseur d'accès quelques adresses
IP ainsi qu'un nom de domaine, le nom de domaine vous est
normalement délégué. La délégation consiste en un champ
<code>NS</code> qui vous aide a passer d'un serveur à l'autre comme
je l'ai expliqué dans le brin de théorie qui précède. Vous l'avez
lu, n'est-ce pas ? Si votre zone inversée ne marche pas,
retournez y et lisez-le. Maintenant.</p>
<p>La zone inversée a elle aussi besoin d'être déléguée. Si vous
avez le réseau <code>192.168.196</code> avec le domaine
<code>linux.bogus</code> de votre fournisseur, il devra mettre des
champs <code>NS</code> pour votre zone inversée aussi bien que pour
votre zone directe. Si vous remontez la chaîne à partir de
<code>in-addr.arpa</code> vous trouverez un trou quelque part. Très
certainement au niveau de votre fournisseur. Après avoir trouvé le
trou dans la chaîne, contactez votre fournisseur et demandez-lui de
corriger l'erreur.</p>
<h3>Vous avez un sous-réseau sans classe</h3>
<p>C'est un sujet plutôt pointu, mais les sous réseaux sans classe
sont très répandus de nos jours et vous en aurez très certainement
un si vous n'êtes pas une entreprise assez grande.</p>
<p>Un sous-réseau sans classe est ce qui sauve Internet de nos
jours. Il y a quelques années, il y avait vraiment beaucoup de
discussions sur la raréfaction des adresses IP. Les personnes
intelligentes de l'IETF (Internet Engineering Task Force, ceux qui
maintiennent Internet en état de marche) se sont penchées sur cet
épineux problème et ont trouvé une solution. A un certain prix. Le
prix est que vous aurez moins qu'un sous réseau de classe ``C'' et
que certaines choses ne marcheront certainement plus. Allez voir
<a href="http://www.acmebw.com/askmrdns/00007.htm">Ask Mr DNS</a>
(c'est en anglais) pour plus d'explications.</p>
<p>Vous l'avez lu ? Comme je ne vais pas l'expliquer, s'il
vous plaît, allez le lire.</p>
<p>La première partie du problème est que votre FAI doit comprendre
la technique décrite par <em>Mr DNS</em>. Tous les petits FAI ne le
comprennent pas. S'ils n'ont pas bien compris, vous allez avoir à
leur expliquer et à insister. Mais assurez-vous de comprendre
vous-même en premier lieu ;-). Ils mettrons ensuite une jolie
zone inversée sur leurs serveurs que vous pourrez examiner pour
savoir si elle est correcte avec <code>nslookup</code>.</p>
<p>La deuxième et dernière partie du problème est que vous devez en
comprendre la technique. Si vous n'êtes pas certain, revenez en
arrière et relisez ce document. Ensuite, vous pourrez mettre en
place une zone inversée sans classe comme le décrit <em>Mr
DNS</em>.</p>
<p>Il y a une autre difficulté qui pointe son nez ici. Les vieux
résolveurs <em>ne seront pas</em> capable de suivre les champs
<code>CNAME</code> dans la chaîne de résolution et n'arriveront pas
a résoudre l'IP de votre machine. Cela peut entraîner l'assignation
d'une mauvaise classe, la non-résolution ou quelque chose dans ce
goût-là. Si vous butez sur ce genre de problème, la seule solution
(que je connaisse) est de demander à votre FAI d'insérer vos champs
<code>PTR</code> dans ses fichiers de zone sans classe plutôt que
des champs <code>CNAME</code>.</p>
<p>Certains FAI vous proposeront d'autre méthodes pour gérer cela,
comme des formulaires web où vous pourrez entrer vos zones
inversées, ou d'autre systèmes automatisés.</p>
<h2><a name="real-example"></a> <a name="s5">5. Un exemple tiré
d'un domaine réel</a></h2>
<p><b>Où nous allons enfin voir de <em>vrais</em> fichiers de
zone</b></p>
<p>Certains utilisateurs ont suggéré que je mette un vrai exemple
d'un domaine qui marche dans la réalité car mon explication sur la
différence entre un vrai domaine et l'exemple bidon ci-dessus
n'était pas très claire.</p>
<p>J'utilise cet exemple avec la permission de David Bullock de
LAND-5. Ces fichiers étaient à jour le 24 Septembre 96, et ont été
modifiée pour être utilisés avec les restrictions de bind 8 et
quelques extensions de mon cru. Par conséquent, ils peuvent donc
différer de ce que vous pouvez trouver en questionnant les serveurs
de nom de LAND-5 aujourd'hui.</p>
<p>Voici les sections pour les deux zones inversées
nécessaires : le réseau <code>127.0.0</code>, ainsi que le
sous-réseau LAND-5 <code>206.6.177</code>. Et une ligne primary
pour la forward zone <code>land-5.com</code>. Notez aussi qu'au
lieu de mettre les fichiers dans le répertoire <code>pz</code>
comme dans ce HowTo, il les met dans le répertoire
<code>zone</code>.</p>
<h2><a name="ss5.1">5.1 /etc/named.conf (ou
/var/named/named.conf)</a></h2>
<hr>
<pre>
// Boot file for LAND-5 name server
options {
directory "/var/named";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "zone/127.0.0";
};
zone "land-5.com" {
type master;
file "zone/land-5.com";
};
zone "177.6.206.in-addr.arpa" {
type master;
file "zone/206.6.177";
};
</pre>
<hr>
<p>Si vous mettez ça dans votre <code>named.conf</code> pour jouer
avec, <b>PAR PITIÉ</b> mettez aussi le ``<code>notify no;</code>''
dans les zones des deux <code>land-5.com</code> pour éviter les
accidents.</p>
<h2><a name="ss5.2">5.2 /var/named/root.hints</a></h2>
<p>Souvenez-vous que le contenu de ce fichier peut changer, et
celui donné ici est assez vieux. Vous feriez mieux d'utiliser un
fichier plus récent, produit par le programme <code>dig</code>.</p>
<hr>
<pre>
; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET.
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;; ., type = NS, class = IN
;; ANSWER SECTION:
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
;; ADDITIONAL SECTION:
G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
;; Total query time: 215 msec
;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4
;; WHEN: Sun Feb 15 01:22:51 1998
;; MSG SIZE sent: 17 rcvd: 436
</pre>
<hr>
<h2><a name="ss5.3">5.3 /var/named/zone/127.0.0</a></h2>
<p>Nous y avons mis juste l'essentiel, le champ SOA obligatoire, et
un champ qui établit la correspondance entre 127.0.0.1 et
<code>localhost</code>. Ils sont tous les deux indispensables. Rien
d'autre ne doit figurer dans ce fichier. Il ne sera probablement
jamais nécessaire de le mettre à jour, à moins que l'adresse du
serveur de noms ou de hostmaster ne change.</p>
<hr>
<pre>
@ IN SOA land-5.com. root.land-5.com. (
199609203 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS land-5.com.
1 PTR localhost.
</pre>
<hr>
<h2><a name="ss5.4">5.4 /var/named/zone/land-5.com</a></h2>
<p>Nous trouvons ici le classique et obligatoire champ SOA ainsi
que les champs NS. Nous pouvons voir qu'il y a un serveur de noms
secondaire <code>ns2.psi.net</code>. C'est comme ça que tout le
monde devrait faire : <em>toujours</em> avoir un serveur
secondaire sur un site distant pour faire des sauvegardes. Nous
voyons également que le serveur primaire est <code>land-5</code>,
qui assure tous les services, et que l'administrateur a utilisé des
CNAME pour faire ça (il aurait pu utiliser des champs A).</p>
<p>Comme vous pouvez voir d'après le champ SOA, le fichier de zone
a son origine en <code>land-5.com</code>, la personne à contacter
est <code>root@land-5.com</code>. <code>hostmaster</code> est une
autre adresse souvent utilisée pour la personne à contacter. Le
numéro de série est au format obligatoire aaaammjj, avec le numéro
de série dans la journée ajouté à la fin; il s'agit certainement de
la sixième version du fichier de zone pour la journée du 20
septembre 1996. N'oubliez-pas que le numéro de série doit
<em>obligatoirement</em> augmenter avec le temps, ici il n'y a
qu'un chiffre pour le numéro de série dans la journée, si bien
qu'après 9 modifications il faudra attendre le lendemain pour
modifier le fichier à nouveau. On peut aussi utiliser deux chiffres
au lieu d'un seul.</p>
<hr>
<pre>
@ IN SOA land-5.com. root.land-5.com. (
199609206 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
1W ; expire, seconds
1D ) ; minimum, seconds
NS land-5.com.
NS ns2.psi.net.
MX 10 land-5.com. ; Primary Mail Exchanger
TXT "LAND-5 Corporation"
localhost A 127.0.0.1
router A 206.6.177.1
land-5.com. A 206.6.177.2
ns A 206.6.177.3
www A 207.159.141.192
ftp CNAME land-5.com.
mail CNAME land-5.com.
news CNAME land-5.com.
funn A 206.6.177.2
;
; Workstations
;
ws-177200 A 206.6.177.200
MX 10 land-5.com. ; Primary Mail Host
ws-177201 A 206.6.177.201
MX 10 land-5.com. ; Primary Mail Host
ws-177202 A 206.6.177.202
MX 10 land-5.com. ; Primary Mail Host
ws-177203 A 206.6.177.203
MX 10 land-5.com. ; Primary Mail Host
ws-177204 A 206.6.177.204
MX 10 land-5.com. ; Primary Mail Host
ws-177205 A 206.6.177.205
MX 10 land-5.com. ; Primary Mail Host
; {Ici 245 lignes ont été effacées}
ws-177250 A 206.6.177.250
MX 10 land-5.com. ; Primary Mail Host
ws-177251 A 206.6.177.251
MX 10 land-5.com. ; Primary Mail Host
ws-177252 A 206.6.177.252
MX 10 land-5.com. ; Primary Mail Host
ws-177253 A 206.6.177.253
MX 10 land-5.com. ; Primary Mail Host
ws-177254 A 206.6.177.254
MX 10 land-5.com. ; Primary Mail Host
</pre>
<hr>
<p>Si vous examinez le serveur de noms de land-5, vous allez voir
que les noms sont de la forme <code>ws_</code><em>nombre</em>.
Depuis les dernières versions de <code>bind 4</code>,
<code>named</code> fait plus attention aux caractères placés dans
les noms de domaines. Cela ne marcherait pas du tout avec bind-8,
c'est pour ça que j'ai remplacé les ``_'' (souligné) par des ``-''
(tiret) pour l'exemple dans ce HowTo.</p>
<p>Une autre chose qu'il faut noter est que les stations de travail
n'ont pas de nom personnel, mais plutôt un préfixe suivit des deux
derniers morceaux de leur adresse IP. Utiliser une telle convention
simplifie grandement la maintenance, mais c'est un peu impersonnel,
et ça peut agacer vos clients.</p>
<p>Nous voyons aussi que <code>funn.land-5.com</code> est un alias
pour <code>land-5.com</code>, mais en utilisant un enregistrement
<code>A</code>, pas un <code>CNAME</code>. C'est une bonne chose
comme on l'a noté plus haut.</p>
<h2><a name="ss5.5">5.5 /var/named/zone/206.6.177</a></h2>
<p>Les commentaires se trouvent juste après le fichier.</p>
<hr>
<pre>
@ IN SOA land-5.com. root.land-5.com. (
199609206 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS land-5.com.
NS ns2.psi.net.
;
; Servers
;
1 PTR router.land-5.com.
2 PTR land-5.com.
2 PTR funn.land-5.com.
;
; Workstations
;
200 PTR ws-177200.land-5.com.
201 PTR ws-177201.land-5.com.
202 PTR ws-177202.land-5.com.
203 PTR ws-177203.land-5.com.
204 PTR ws-177204.land-5.com.
205 PTR ws-177205.land-5.com.
; {Ici 245 lignes ont été effacées}
250 PTR ws-177250.land-5.com.
251 PTR ws-177251.land-5.com.
252 PTR ws-177252.land-5.com.
253 PTR ws-177253.land-5.com.
254 PTR ws-177254.land-5.com.
</pre>
<hr>
<p>La zone inverse est la partie de la configuration qui semble
poser le plus de problèmes. Elle est utilisée pour trouver le nom
d'hôte d'une machine, connaissant son adresse IP. Exemple :
vous êtes un serveur IRC et vous acceptez des connexions provenant
de clients IRC. Cependant, comme vous êtes un serveur IRC
norvégien, vous ne voulez accepter que les connexions venant de
Norvège ou des autres pays scandinaves. Ainsi, lorsqu'un client se
connecte chez vous, la bibliothèque C peut vous dire quelle est
l'adresse IP du client, puisque cette dernière se trouve dans tous
les paquets qui traversent le réseau. Ensuite, vous pouvez appeler
une fonction connue sous le nom de <code>gethostbyaddr</code> qui
va rechercher le nom d'une machine connaissant son adresse IP.
<code>gethostbyaddr</code> va poser la question à un serveur de
noms, qui va alors faire une recherche de la machine dans le DNS.
Supposons que la connexion du client se fasse depuis
<code>ws_177200.land-5.com.</code> L'adresse IP que la bibliothèque
C fournit au serveur IRC est <code>206.6.177.200.</code> Pour
retrouver le nom de cette machine, il nous faut trouver
<code>200.177.6.206.in-addr.arpa</code>. Le serveur de noms va donc
d'abord trouver les serveurs <code>arpa.</code>, puis les serveurs
<code>in-addr.arpa.</code>, poursuivre la recherche inverse par
206, puis 6 et finalement trouver le serveur pour la zone
<code>177.6.206.in-addr.arpa</code> à LAND-5. C'est ce dernier qui
lui dira que pour <code>200.177.6.206.in-addr.arpa</code> nous
avons un champ ``<code>PTR ws_177200.land-5.com</code>'', ce qui
veut dire que le nom qui va avec <code>206.6.177.200</code> est
<code>ws_177200.land-5.com</code>. Tout comme l'explication de la
résolution de <code>prep.ai.mit.edu</code>, ce scénario est un peu
idéalisé.</p>
<p>Revenons à l'exemple du serveur IRC. Le serveur n'accepte que
les connexions venant des pays scandinaves, c'est-à-dire
<code>*.no</code>, <code>*.se</code>, <code>*.dk</code>. Le nom
<code>ws_177200.land-5.com</code> ne correspond évidemment pas, et
le serveur va donc refuser la connexion. Si il n'existait
<em>pas</em> de résolution inverse de <code>206.2.177.200</code> au
travers de la zone <code>in-addr.arpa</code>, le serveur aurait été
tout à fait incapable de trouver le nom, et aurait dû se contenter
de comparer <code>206.6.177.200</code> à <code>*.no</code>,
<code>*.se</code> et <code>*.dk</code>, dont aucun ne
correspond.</p>
<p>Certaines personnes vous diront que la résolution de noms
inverse n'est importante que pour les serveurs, ou pas importante
du tout. Pas tant que ça : beaucoup de serveurs ftp, news, irc
ou même certains http (Web) n'acceptent <em>pas</em> les connexions
venant de machines dont ils ne peuvent retrouver le nom. C'est
pourquoi la résolution de noms inverse pour les machines est
<em>obligatoire</em>.</p>
<h2><a name="maint"></a> <a name="s6">6. Maintenance</a></h2>
<p><b>Garder votre DNS en état de marche</b></p>
<p>En plus des tâches normales, il y a une tâche de maintenance
spéciale à effectuer sur les serveurs de nom. Il s'agit de garder
le fichier <code>root.hints</code> à jour. La façon la plus simple
de le faire est d'utiliser dig. Lancez d'abord dig sans argument,
vous obtiendrez le fichier <code>root.cache</code> de votre propre
serveur. Posez alors la même question à un des serveurs de cette
liste avec la commande <code>dig @rootserver</code>. Vous
remarquerez que ce que vous obtenez ressemble énormément à un
fichier <code>root.hints</code>, avec quelques chiffres en plus.
Ces chiffres supplémentaires sont inoffensifs. Sauvez-le dans un
fichier (<code>dig . @e.root-servers.net >root.hints.new</code>)
et remplacez l'ancien fichier <code>root.hints</code> avec.</p>
<p>N'oubliez pas de relancer <code>named</code> après avoir
remplacé ce fichier.</p>
<p>Al Longyear m'a envoyé ce script, qui peut être lancé
automatiquement pour mettre à jour <code>named.hints</code>.
Lancez-le automatiquement à partir de la crontab et vous pourrez
oublier qu'il existe. Ce script suppose que l'alias de mail
`hostmaster' existe. Il faudra sans doute modifier ce fichier pour
qu'il fonctionne chez vous.</p>
<hr>
<pre>
#!/bin/sh
#
# Met a jours les informations du cache du serveur de noms chaque mois.
# Ce script est lancé automatiquement par un cron.
#
# Original par Al Longyear
# Mis a jour pour Bind 8 par Nicolai Langfeldt
# Plusieurs erreurs découvertes par David A. Ranch
# Test avec un ping suggéré par Martin Foster
#
(
echo "To: hostmaster <hostmaster>"
echo "From: system <root>"
echo "Subject: Mise a jour automatique du fichier root.hints"
echo
PATH=/sbin:/usr/sbin:/bin:/usr/bin:
export PATH
cd /var/named
# Sommes nous connectés ? Pingons un serveur de notre FAI
case `ping -qnc some.machine.net` in
*'100% packet loss'*)
echo "PAS de connexion réseau. root.hints NON mis à jour"
echo
exit 0
;;
esac
dig @rs.internic.net . ns >root.hints.new 2>&1
case `cat root.hints.new` in
*NOERROR*)
# Ca a marché
:;;
*)
echo "La mise a jour de root.hints a ECHOUE."
echo "Voici la sortie de dig :"
echo
cat root.hints.new
exit 0
;;
esac
echo "Le fichier root.hints a été mis a jour et contient les informations suivantes :"
echo
cat root.hints.new
chown root.root root.hints.new
chmod 444 root.hints.new
rm -f root.hints.old
mv root.hints root.hints.old
mv root.hints.new root.hints
ndc restart
echo
echo "Le serveur de noms a été redémarré, de cette manière, la mise a jour est complète."
echo "L'ancien root.hints s'appelle maintenant /var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0
</pre>
<hr>
<p>Certains d'entre vous ont remarqués que le fichier
<code>root.hints</code> est aussi disponible via ftp depuis
l'Internic. S'il vous plaît, n'utilisez pas le ftp pour mettre à
jour le <code>root.hints</code>, la méthode ci dessus est bien
meilleur du point de vue de la nettiquette et de l'Internic.</p>
<h2><a name="bind8"></a> <a name="s7">7. Passer de la version 4 à
la version 8</a></h2>
<p>Cette section était au départ sur l'utilisation de bind-8 écrite
par David E. Smith (dave@bureau42.ml.org). Je l'ai éditée pour
refléter le nouveau nom de la section.</p>
<p>Il n'y a pas grand chose à faire, sinon, utiliser
<code>named.conf</code> au lieu du <code>named.boot</code>, or
bind-8 est distribué avec un script perl pour convertir un
<code>named.boot</code> en <code>named.conf</code>. Exemple de
<code>named.boot</code> (vieux) pour un serveur qui ne sert que de
cache :</p>
<hr>
<pre>
directory /var/named
cache . root.hints
primary 0.0.127.IN-ADDR.ARPA 127.0.0.zone
primary localhost localhost.zone
</pre>
<hr>
<p>Depuis la ligne de commande, et depuis le répertoire
<code>bind8/src/bin/named</code> (au cas où vous avez récupéré les
sources; si vous avez eu un paquetage binaire, le script se balade
certainement dans le coin), tapez :</p>
<hr>
<pre>
./named-bootconf.pl < named.boot > named.conf
</pre>
<hr>
<p>qui crée un nouveau <code>named.conf</code> :</p>
<hr>
<pre>
// generated by named-bootconf.pl
options {
directory "/var/named";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "127.0.0.zone";
};
zone "localhost" {
type master;
file "localhost.zone";
};
</pre>
<hr>
<p>Ça marche pour tout ce qui pouvait aller dans un
<code>named.boot</code>, mais, il ne met pas toutes les nouveautés
que bind-8 permet. Voici une version plus complète d'un
<code>named.conf</code> qui fait la même chose, mais d'une façon
plus efficace :</p>
<hr>
<pre>
// Voici le fichier de configuration de named (pour BIND 8.1 et ultérieur).
// Il devrait normalement être installé dans /etc/named.conf.
// Le seul changement fait dans le named.conf d'origine (a part ce commentaire
// :) est que la ligne directory a été décommentée, car j'ai déjà les fichiers
// de zone dans /var/named.
options {
directory "/var/named";
datasize 20M;
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};
zone "." IN {
type hint;
file "root.hints";
};
</pre>
<hr>
<p>Dans le répertoire <code>bind8/src/bin/named/test</code> de la
distribution de bind8, vous trouverez tout ça, ainsi que des
fichiers de zone que la majorité peuvent prendre et utiliser
instantanément.</p>
<p>Les formats des fichiers de zone et du <code>root.hints</code>
sont les mêmes, tout comme les commandes qui les mettent à
jour.</p>
<h2><a name="qanda"></a> <a name="s8">8. Questions et
Réponses</a></h2>
<p>Dans cette section, je passe en revue quelques-unes des
questions les plus fréquemment posées à propos du DNS et de ce
HOWTO. Et je donne même les réponses ;-) Merci de bien lire
cette section avant de m'écrire.</p>
<ol>
<li>Mon <code>named</code> me réclame un fichier
<code>named.boot</code>
<p>Vous vous êtes trompés de HowTo. allez voir l'ancienne version
de ce HowTo, celle qui parle de bind 4, à <a href=
"http://www.math.uio.no/~janl/DNS/">www.math.uio.no/~janl/DNS/</a></p>
</li>
<li>Question : Comment utiliser un DNS si l'on se trouve
derrière un firewall ?
<p>Voici un indice : <code>forward only;</code>. Vous aurez
probablement aussi besoin de mettre :</p>
<hr>
<pre>
query-source port 53;
</pre>
<hr>
<p>dans la partie ``options'' de votre <code>named.conf</code>
comme l'exemple 3 le suggère <a href="#caching">serveur qui ne fait
que du cache</a>.</p>
</li>
<li>Question : Comment dire à un DNS qu'il doit faire une
rotation entre un certain nombre d'adresses pour un service donné,
par exemple si l'on veut obtenir équilibrer la charge de
<code>www.busy.com</code> entre plusieurs machines ?
<p>Créez plusieurs champs <b>A</b> pour www.busy.com et utilisez
bind 4.9.3 ou une version plus récente, qui supporte les réponses à
scrutation circulaire. Cela ne marchera <em>pas</em> avec des
versions de bind antérieures.</p>
</li>
<li>Je veux mettre en place un serveur DNS sur un Intranet (fermé).
Comment faire ?
<p>Effacez rageusement le fichier <code>root.hints</code> et créez
seulement les fichiers de zone. Cela veut aussi dire que vous
n'aurez pas à créer des nouveaux fichiers hints tout le temps.</p>
</li>
<li>Comment mettre en place un serveur secondaire ?
<p>Si le serveur primaire a pour adresse 127.0.0.1, mettez une
ligne comme celle-ci dans le fichier <code>named</code>.conf du
serveur secondaire :</p>
<hr>
<pre>
zone "linux.bogus" {
type slave;
file "sz/linux.bogus";
masters { 127.0.0.1; };
};
</pre>
<hr>
<p>Vous pouvez mettre plusieurs serveurs maîtres, ajoutez les sur
la ligne masters en les séparant par un ``;'' (point-virgule)</p>
</li>
<li>Je veux faire tourner bind lorsque je suis déconnecté du réseau
<p>Il y a trois trucs a savoir :</p>
<ul>
<li>J'ai reçu le mail suivant de Ian Clark
<ic@deakin.edu.au>, où il explique comment il fait ça :
<blockquote>
<pre><code>
Ici, je fais tourner named sur la machine qui fait du "Masquerading". J'ai
deux fichiers root.cache, un qui s'appelle root.cache.real et qui contient les
vrais noms des serveurs root, et l'autre qui s'appelle root.cache.fake qui
contient ceci~:
--------------
; root.hints.fake
; Ce fichier ne contient pas d'informations
--------------
Quand je me déconnecte, je copie le fichier root.hints.fake vers root.hints et
je relance named.
Quand je me connecte, je copie root.hints.real et je relance named.
Ces deux manoeuvres sont faites, respectivement, à partir de ip-down et ip-up.
Lorsque je suis déconnecté, named rajoute ceci au fichier messages après la
première requête concernant un nom de domaine qu'il ne connaît pas~:
Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN
Ce qui n'est pas très gênant.
Ça marche très bien dans mon cas. Je peux utiliser le serveur de noms pour
les machines locales lorsque je suis déconnecté du Net en évitant les délais
introduits par les timeout liés à la recherche des noms de domaine extérieurs.
Et lorsque je suis connecté au Net, les requêtes concernant les noms de
domaines extérieurs marchent normalement.
</code></pre></blockquote>
</li>
<li>J'ai aussi reçu des informations sur la façon dont bind
interagit avec NFS et le portmapper sur une machine qui est le plus
souvent déconnectée de la part de Karl-Max Wanger :
<blockquote>
<pre><code>
J'ai pris l'habitude d'utiliser named sur toutes mes machines qui sont
seulement connectées à Internet de façons occasionnelles grâce à un modem. Le
serveur de noms n'agit qu'en tant que cache, il n'a aucune zone d'autorité et
demande tout aux serveurs du fichier root.cache. Comme d'habitude avec une
Slackware, named est démarré avant nfsd et mountd.
Avec l'une de mes machines (un portable Libretto 30), j'ai eu le problème
suivant~: de temps en temps, je pouvais monter ses disques depuis un autre
système connecté sur mon LAN local, mais la plupart du temps, ça ne marchait
pas. Il se passait la même chose que ce soit en utilisant PLIP, une carte
Ethernet PCMCIA ou PPP avec une interface série.
Après quelques temps de réflexions et d'expériences, j'ai découvert que named
empêchait nfsd et mountd de s'enregistrer avec portmapper au démarrage (Je
démarre ces démons au boot d'habitude). Le fait de lancer named après nfsd
et mountd éliminait ce problème complètement
Comme il n'y a pas de désavantages à modifier ainsi la séquence de boot de
cette façon, j'encourage tout le monde à en faire de même pour éviter des
problèmes potentiels.
</code></pre></blockquote>
</li>
<li>Enfin, il y a quelques informations sur le sujet chez <a href=
"http://www.acmebw.com/askmrdns/#linux-ns">Ask Mr DNS</a>. C'est a
propos de bind 4, vous aurez donc à l'adapter pour que cela
fonctionne avec bind 8.</li>
</ul>
</li>
<li>Où le serveur de noms qui fait que du cache stocke-t-il son
cache ? Puis-je contrôler la taille de ce cache ?
<p>Le cache est entièrement stocké en mémoire, il n'est
<em>pas</em> écrit sur le disque. Chaque fois que vous tuez
<code>named</code>, le cache est perdu. Il n'y a <em>aucun</em>
moyen de contrôler le cache. <code>named</code> gère le cache selon
quelques règles simples, et c'est tout. Vous ne pouvez pas
contrôler le cache ou sa taille en aucune manière. Si vous voulez
vraiment le faire, vous pouvez le faire en bricolant le code de
<code>named</code>. Mais ce n'est pas recommandé.</p>
</li>
<li>Est-ce que <code>named</code> sauvegarde le contenu du cache
entre deux redémarrage ? Puis-je le forcer à le faire ?
<p>Non, <code>named</code> ne sauve <em>pas</em> la contenu du
cache lorsqu'il meurt. Cela signifie que le cache est reconstruit à
partir de zéro chaque fois que vous tuez puis relancez
<code>named</code>. Il n'y a <em>aucun</em> moyen de forcer
<code>named</code> à sauvegarder le contenu du cache dans un
fichier. Si vous voulez vraiment le faire, vous pouvez le faire en
bricolant le code de <code>named</code>. Mais, encore une fois, ce
n'est pas recommandé.</p>
</li>
<li>Comment je fais pour obtenir un domaine ? Je veux mettre
en place mon domaine appelé (par exemple)
<code>linux-rulez.net</code>. Comment puis-je me faire assigner ce
domaine ?
<p>Contactez votre FAI. Ils seront en mesure de vous aider pour
tout ça. Notez toutefois que vous aurez certainement à payer
quelque chose.</p>
</li>
</ol>
<h2><a name="bigger"></a> <a name="s9">9. Comment devenir un
administrateur DNS de haut vol</a></h2>
<p><b>Documentation et outils</b></p>
<p>La Vraie Documentation existe. En ligne et imprimée. Il faut
absolument la lire si vous voulez devenir un administrateur DNS du
plus haut niveau. Pour ce qui est de la documentation imprimée, le
livre standard est <em>DNS and BIND</em> de C. Liu et P. Albitz
chez O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X.
Je l'ai lu, c'est excellent, la deuxième édition est basée sur bind
4, la troisième sur bind 8. Il y a aussi un chapitre sur le DNS
dans <em>TCP/IP Network Administration</em>, de Craig Hunt chez
O'Reilly..., ISBN 0-937175-82-X. Un autre passage obligé pour une
Bonne administration de DNS (ou Bonne n'importe quoi, d'ailleurs)
est <em>Zen and the Art of Motorcycle Maintenance</em> by Robert M.
Pirsig :-) Disponible sous la référence ISBN 0688052304 entre
autres.</p>
<p>En ligne, vous trouverez des trucs sur <a href=
"http://www.dns.net/dnsrd/">DNS Resources Directory</a>, <a href=
"http://www.isc.org/bind.html">www.isc.org/bind.html</a>; Une FAQ,
un manuel de référence (BOG; Bind Operations Guide) aussi bien que
des papiers, des descriptions de protocoles et des trucs sur le
service DNS (ces documents, ainsi que la majorité, sinon la
totalité des RFC mentionnées ci-dessous font partie de la
distribution de bind). Je n'ai pas lu la plupart de ces trucs-là,
c'est pourquoi je ne suis pas un Grand Administrateur de DNS. Arnt
Gulbrandsen, à l'inverse, a lu le BOG et n'en dit que du
bien :-). Le newsgroup <a href=
"news:comp.protocols.tcp-ip.domains">comp.protocols.tcp-ip.domains</a>
parle de DNS. En complément, il y a un certain nombre de RFC sur le
DNS, les plus importantes sont certainement celles-ci :</p>
<dl>
<dt><b>RFC 2052</b></dt>
<dd>
<p>A. Gulbrandsen, P. Vixie, <em>A DNS RR for specifying the
location of services (DNS SRV)</em>, October 1996</p>
</dd>
<dt><b>RFC 1918</b></dt>
<dd>
<p>Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear,
<em>Address Allocation for Private Internets</em>, 02/29/1996.</p>
</dd>
<dt><b>RFC 1912</b></dt>
<dd>
<p>D. Barr, <em>Common DNS Operational and Configuration
Errors</em>, 02/28/1996.</p>
</dd>
<dt><b>RFC 1912 Errors</b></dt>
<dd>
<p>B. Barr <em>Errors in RFC 1912</em>, this is available at
<a href=
"http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html">www.cis.ohio-state.edu/~barr/rfc1912-errors.html</a></p>
</dd>
<dt><b>RFC 1713</b></dt>
<dd>
<p>A. Romao, <em>Tools for DNS debugging</em>, 11/03/1994.</p>
</dd>
<dt><b>RFC 1712</b></dt>
<dd>
<p>C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, <em>DNS
Encoding of Geographical Location</em>, 11/01/1994.</p>
</dd>
<dt><b>RFC 1183</b></dt>
<dd>
<p>R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, <em>New DNS
RR Definitions</em>, 10/08/1990.</p>
</dd>
<dt><b>RFC 1035</b></dt>
<dd>
<p>P. Mockapetris, <em>Domain names - implementation and
specification</em>, 11/01/1987.</p>
</dd>
<dt><b>RFC 1034</b></dt>
<dd>
<p>P. Mockapetris, <em>Domain names - concepts and facilities</em>,
11/01/1987.</p>
</dd>
<dt><b>RFC 1033</b></dt>
<dd>
<p>M. Lottor, <em>Domain administrators operations guide</em>,
11/01/1987.</p>
</dd>
<dt><b>RFC 1032</b></dt>
<dd>
<p>M. Stahl, <em>Domain administrators guide</em>, 11/01/1987.</p>
</dd>
<dt><b>RFC 974</b></dt>
<dd>
<p>C. Partridge, <em>Mail routing and the domain system</em>,
01/01/1986.</p>
</dd>
</dl>
</body>
</html>
|