/usr/share/doc/HOWTO/fr-html/AX25-HOWTO.html is in doc-linux-fr-html 2013.01-2.
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 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Linux AX.25-HOWTO, Amateur Radio.</title>
</head>
<body>
<h1>Linux AX.25-HOWTO, Amateur Radio.</h1>
<h2>Terry Dawson, VK2KTJ,
<code>terry@perf.no.itg.telstra.com.au</code>, traduit par
François Romieu, <a href=
"romieu@ensta.fr">romieu@ensta.fr</a></h2>
v1.5, 17 Octobre 1997
<hr>
<em>Le système d'exploitation Linux est sûrement le
seul au monde à pouvoir se vanter d'offrir un support natif
du protocole de transmission de données AX.25 employé
par les radioamateurs à travers le monde. Le présent
document se veut un guide d'installation et de configuration de
cette prise en charge.</em>
<hr>
<h2><a name="s1">1. Introduction.</a></h2>
<p>Le document trouve son origine dans une annexe du HAM-HOWTO.
L'importance de son développement devint cependant
incompatible avec une telle organisation. L'installation et la
prise en charge intégrée d'AX.25, la gestion NetRom
et Rose sous Linux sont décrites. Quelques exemples de
configurations typiques fournissent une base de travail.</p>
<p>La mise en oeuvre des protocoles radioamateurs sous Linux est
très souple. Les personnes peu familières du
système d'exploitation Linux trouveront peut-être la
configuration un peu obscure. Il vous faudra un certain temps pour
maîtriser l'interaction des différents
éléments. Attendez-vous à une configuration
pénible si vous ne vous êtes pas auparavant
familiarisé avec Linux. N'espérez pas passer à
Linux depuis un autre environnement en faisant l'économie de
tout apprentissage.</p>
<h2><a name="ss1.1">1.1 Modifications par rapport à la
version précédente</a></h2>
<pre>
Ajouts:
Page ouaibe de Joerg Reuters
Section "Informations supplémentaires"
configuration d'ax25ipd.
Corrections/Mises à jour:
Prévention des conflits dus aux pty
Nouvelles versions du module et des ax25-utils
A faire:
Mettre au point la section SCC qui est sûrement erronée
Étoffer la section touchant à la programmation
</pre>
<h2><a name="ss1.2">1.2 Nouvelles versions du document</a></h2>
<p>Les archives du Projet de Documentation Linux (LDP ou Linux
Documentation Project) constituent le meilleur emplacement
où trouver la dernière mouture de ce texte. Le LDP
tient à jour un site ouaibe dans lequel figure l'AX.25
HOWTO : <a href=
"http://sunsite.unc.edu/LDP/HOWTO/AX.25-HOWTO.html">AX.25-HOWTO</a>.
Le texte est disponible sous différents formats à
l'adresse suivante : <a href=
"ftp://sunsite.unc.edu/pub/Linux/docs/howto/">archive ftp
sunsite.unc.edu</a>. La version française est accessible
via : <a href="ftp://ftp.traduc.org/pub/HOWTO/FR">archive
Traduc.org</a>.</p>
<p>Vous pouvez me contacter mais comme je transmets directement les
nouvelles versions au coordinateur LDP des HOWTO, l'absence d'une
nouvelle version indique sûrement que je ne l'ai pas
terminée.</p>
<h2><a name="ss1.3">1.3 Autres documents</a></h2>
<p>La documentation sur les sujets apparentés ne manque pas.
Bon nombre de textes traitent de l'utilisation
générale de Linux en réseau et je vous
conseille vivement de les lire : ils vous guideront dans vos
efforts et offrent une vision élargie à d'autres
configurations envisageables.</p>
<p>Par exemple :</p>
<p><a href=
"http://sunsite.unc.edu/LDP/HOWTO/HAM-HOWTO.html">HAM-HOWTO</a>,</p>
<p><a href=
"http://sunsite.unc.edu/LDP/HOWTO/NET-3-HOWTO.html">NET-3-HOWTO</a>,</p>
<p><a href=
"http://sunsite.unc.edu/LDP/HOWTO/Ethernet-HOWTO.html">Ethernet-HOWTO</a>,</p>
<p>et :</p>
<p><a href=
"http://sunsite.unc.edu/LDP/HOWTO/Firewall-HOWTO.html">le
Firewall-HOWTO</a></p>
<p>Des informations plus générales sur Linux sont
disponibles : <a href=
"http://sunsite.unc.edu/LDP/HOWTO/">Linux HOWTO</a></p>
<h2><a name="s2">2. Les protocoles de paquets par radio et
Linux</a></h2>
<p>Le protocole <em>AX.25</em> fonctionne aussi bien en mode
connecté que non-connecté et s'emploie tel quel pour
des liaisons point-à-point ou pour encapsuler d'autres
protocoles tels qu'IP ou NetRom.</p>
<p>Sa structure se rapproche de celle du niveau 2 d'X25 avec des
extensions qui l'adaptent à l'environnement
radioamateur.</p>
<p>Le protocole NetRom a pour objectif de fournir un protocole
réseau complet. Il repose sur AX.25 au niveau liaison de
données et procure une couche réseau
dérivée d'AX.25. Le protocole NetRom autorise le
routage dynamique et la création d'alias pour les
noeuds.</p>
<p>Le protocole Rose a été initialement conçu
et réalisé par Tom Moulton alias W2VY. Il constitue
une mise en oeuvre du protocole par paquets X25 et peut
inter-opérer avec AX.25 au niveau liaison. Il fournit des
services de couche réseau. Les adresses Roses comportent 10
digits. Les quatre premiers constituent le code d'identification du
réseau de données (DNIC ou Data Network
Identification Code) et sont référencés dans
l'Appendice B de la recommandation X121 du CCITT. Des informations
supplémentaires sur le protocole Rose sont disponibles sur
le site suivant : <a href="http://www.rats.org/">Serveur Web
RATS</a>.</p>
<p>Alan Cox a créé les toutes premières
versions de support noyau pour AX.25. Jonathon Naylor
<code><g4klx@g4klx.demon.co.uk></code> a poursuivi le
développement, ajouté la gestion de NetRom et de Rose
et assure à présent officiellement la maintenance du
code noyau relatif à AX.25. La prise en compte de DAMA est
l'oeuvre de Joerg, DL1BKE, <code>jreuter@poboxes.com</code>. Thomas
Sailer, <code><sailer@ife.ee.ethz.ch></code> s'est
chargé des matériels Baycom et SoundModem. J'assure
pour ma part le suivi des utilitaires AX.25.</p>
<p>Linux gère les TNC (Terminal Node Controllers) KISS, les
cartes Ottawa PI, les PacketTwin Gracilis et autres cartes à
base de SCC Z8530 via le pilote SCC générique ainsi
que les modems sur ports série et parallèle de
Baycom. Le nouveau pilote pour modems à base de carte son de
Thomas accepte les Soundblaster et les cartes à base de
composants Crystal.</p>
<p>Le paquetage de programmes applicatifs comprend une messagerie
individuelle (PMS ou Personal Message System), une balise, un
programme de connexion en mode texte, un exemple de
récupération des trames AX.25 au niveau de
l'interface et des utilitaires de configuration du protocole
NetRom. Il comprend également un serveur de type AX.25 qui
gère les demandes de connexions AX.25 et un démon qui
se charge de l'essentiel du travail pour le protocole NetRom.</p>
<h2><a name="ss2.1">2.1 Fonctionnement</a></h2>
<p>La mise en oeuvre d'AX.25 sous Linux lui est propre de A
à Z. Bien qu'elle puisse ressembler à NOS, à
BPQ ou à d'autres versions d'AX.25 sur certains points, elle
ne se confond avec aucune d'entre elles. La version Linux peut
être configurée pour se comporter de façon
voisine aux autres mais le processus n'en reste pas moins
radicalement différent.</p>
<p>Pour vous aider à comprendre la démarche
intellectuelle à suivre lors de la configuration, cette
section décrit les fonctionnalités structurelles
d'AX.25 et son adaptation au contexte Linux.</p>
<p><b><em>Diagramme simplifié des couches
protocolaires</em></b></p>
<blockquote>
<pre>
<code>+----------+-----------+-------------+---------+
| AF_AX.25 | AF_NETROM | AF_INET | AF_ROSE |
+==========+===========+=============+=========+
| | | | |
| | | TCP/IP | |
| | +--------+ | |
| | NetRom | | Rose |
| +--------------------+----+---------+
| AX.25 |
+----------------------------------------------+
</code>
</pre></blockquote>
<p>Le diagramme précédent illustre simplement le fait
que Rose, NetRom, AX.25 et TCP/IP reposent tous sur AX.25 mais que
chacun est traité comme un protocole différent au
niveau de l'interface de programmation. Les noms `<code>AF_</code>'
correspondent aux noms donnés aux `<em>Familles
d'Adresses</em>' de chacun du point de vue du programmeur. On
notera ici l'obligation de configurer la pile AX.25 avant toute
configuration des protocoles NetRom, Rose ou TCP/IP.</p>
<p><b><em>Diagramme des modules logiciels de la pile réseau
de Linux</em></b></p>
<pre>
---------------+-----------+-----------------------++----------+---------------
Utilisateur |Programmes | call node || Démons | ax25d mheardd
| | pms mheard || | inetd netromd
---------------+-----------+-----------------------++----------+---------------
|Sockets | open(), close(), listen(), read(), write(), connect()
| +----------------------+-------------------+----------
| | AF_AX.25 | AF_NETROM | AF_ROSE | AF_INET
+-----------+--------------+-------+-----+-------------+----------
Noyau |Protocoles | AX.25 | NetRom | Rose | IP/TCP/UDP
+-----------+--------------+-------------+-------------+----------
|Périph. | ax0,ax1 | nr0,nr1 | rose0,rose1 | eth0,ppp0
+-----------+--------------+-------------+-------------+----------
|Pilotes | Kiss PI2 PacketTwin SCC BPQ | slip ppp
| | modems type son Baycom | ethernet
---------------+-----------+------------------------------------------+-----
Matériel | Cartes PI2, PacketTwin, SCC, Série, Ethernet
----------------------------------------------------------------------------
</pre>
Ce diagramme est plus général que le
précédent. Il montre les relations entre les
applications, le noyau et le matériel ainsi qu'entre
l'interface de programmation des sockets, les modules de
protocoles, les périphériques réseau et leurs
pilotes. Chaque niveau dépend de celui sur lequel il repose
et, de façon générale, la configuration doit
se faire de bas en haut. Par exemple, si vous souhaitez
exécuter le programme <em>call</em>, vous devez configurer
le matériel, vérifier que le pilote adéquat
est inclus dans le noyau, créer les
périphériques noyaux correspondants et inclure le
protocole requis par le programme <em>call</em>. J'ai essayé
d'organiser le présent document de cette façon.
<h2><a name="s3">3. Composants logiciels de la suite
AX.25/NetRom/Rose</a></h2>
<p>Le paquetage AX.25 comprend trois volets : les sources du
noyau, les outils de configuration réseau et les
applications utilisateur.</p>
<p>Les version 2.0.xx des noyaux Linux incluent les gestionnaires
AX.25, NetRom, SCC Z8530, PacketTwin et ceux des cartes PI. Les
noyaux 2.1.* les améliorent substantiellement. L'emploi d'un
noyau 2.1.* dans un système de production est vivement
déconseillé. Pour y remédier, Jonathon Naylor
propose un ensemble de patches pour mettre à niveau la
gestion du protocole radio amateur dans un noyau 2.0.28.
L'application des patches est très simple et apporte une
palette de fonctionnalités autrement absentes du noyau tel
le support Rose. L'emploi d'un noyau 2.2.x est également
envisageable.</p>
<h2><a name="ss3.1">3.1 Récupération du noyau, des
outils et utilitaires</a></h2>
<h3>Sources du noyau</h3>
<p>Les sources du noyau sont disponibles via le réseau de
miroirs de ftp.kernel.org : <b>ftp.xx.kernel.org</b> où
xx désigne un code pays tel fr, uk, de, us, etc... Les
différentes version du noyau se trouvent en :</p>
<blockquote>
<pre>
<code>/pub/linux/kernel/
</code>
</pre></blockquote>
Version courante de mise à jour d'AX.25 :
<b>ftp.pspt.fi</b>
<blockquote>
<pre>
<code>/pub/linux/ham/ax25/ax25-module-14e.tar.gz
</code>
</pre></blockquote>
<h3>Les outils réseau</h3>
<p>Dernière version alpha des outils réseau standard
pour Linux gérant AX.25 et NetRom :
<b>ftp.inka.de</b></p>
<blockquote>
<pre>
<code>/pub/comp/Linux/networking/net-tools/net-tools-1.33.tar.gz
</code>
</pre></blockquote>
<p>Paquetage ipfwadm : <b>ftp.xos.nl</b></p>
<blockquote>
<pre>
<code>/pub/linux/ipfwadm/
</code>
</pre></blockquote>
En 2.2.x, le paquetage <em>ipchains</em> remplace ipfwadm devenu
obsolète.
<h3>Les utilitaires AX.25</h3>
<p>Il existe deux familles distinctes d'outils AX.25. L'une
dédiée aux noyaux <code>2.0.*</code> et l'autre
destinée aussi bien aux version <code>2.1.*</code> qu'aux
noyaux <code>2.0.*</code> patchés. Le numéro de
version de ax25-utils indique la version du noyau la plus ancienne
à partir de laquelle les outils fonctionneront. A vous de
choisir une version des ax25-utils appropriée. Les
combinaisons suivantes fonctionnent, <b>utilisez les</b> .</p>
<blockquote>
<pre>
<code>Noyau Linux Utilitaires AX.25
---------------------- -------------------------
linux-2.0.29 ax25-utils-2.0.12c.tar.gz **
linux-2.0.28+module12 ax25-utils-2.1.22b.tar.gz **
linux-2.0.30+module14c ax25-utils-2.1.42a.tar.gz
linux-2.0.31+module14d ax25-utils-2.1.42a.tar.gz
linux-2.1.22 ++ ax25-utils-2.1.22b.tar.gz
linux-2.1.42 ++ ax25-utils-2.1.42a.tar.gz
</code>
</pre></blockquote>
<p><b>Note</b>: les versions <code>ax25-utils-2.0.*</code>
identifiées ci-dessus avec le symbole '<code>**</code>' sont
à présent obsolètes. Le document couvre
l'emploi des logiciels conseillés dans les tables. Bien que
les paquetages diffèrent, la plus grande partie des
informations reste valable pour les versions suivantes.</p>
<p>Utilitaires AX.25 : <a href=
"ftp://ftp.pspt.fi/pub/linux/ham/ax25/">ftp.pspt.fi</a> ou :
<a href=
"ftp://sunsite.unc.edu/pub/Linux/apps/ham/">sunsite.unc.edu</a></p>
<h2><a name="s4">4. Installation des logiciels
AX.25/NetRom/Rose</a></h2>
<p>Une mise en oeuvre correcte d'AX.25 dans votre système
Linux nécessite l'installation et la configuration d'un
noyau approprié ainsi que des utilitaires AX.25.</p>
<h2><a name="ss4.1">4.1 Compilation du noyau</a></h2>
<p>Si vous êtes un habitué de la compilation du noyau
Linux, contentez-vous de vérifier que vous avez
activé les options adéquates et sautez cette section.
Si ce n'est pas le cas, lisez ce qui suit.</p>
<p>En principe, les sources du noyau sont
décompactées au niveau du répertoire
<code>/usr/src</code> dans un sous-répertoire nommé
<code>linux</code>. Pour ce faire, prenez l'identité du
super-utilisateur <code>root</code> et exécutez les
commandes ci-dessous :</p>
<blockquote>
<pre>
<code># mv linux linux.old
# cd /usr/src
# tar xvfz linux-2.0.31.tar.gz
# tar xvfz /pub/net/ax25/ax25-module-14e.tar.gz
# patch -p0 </usr/src/ax25-module-14/ax25-2.0.31-2.1.47-2.diff
# cd linux
</code>
</pre></blockquote>
<p>Une fois les sources du noyau décompactées et la
mise à jour appliquée, lancez le script de
configuration et activez les options qui correspondent à la
configuration matérielle dont vous souhaitez disposer. Vous
utiliserez la commande :</p>
<blockquote>
<pre>
<code># make menuconfig
</code>
</pre></blockquote>
Si vous êtes bête^H^H^H^Hcourageux, vous pouvez essayer
<blockquote>
<pre>
<code># make config
</code>
</pre></blockquote>
Les claviophobes se serviront de :
<blockquote>
<pre>
<code># make xconfig
</code>
</pre></blockquote>
<p>Je vais décrire la méthode plein-écran
(menuconfig) dont j'apprécie la facilité de
déplacement mais vous êtes libre d'en utiliser une
autre.</p>
<p>Dans tous les cas, vous devrez choisir parmi une série
d'options auxquelles il faudra répondre par `Y' ou `N'
(voire `M' si vous avez recours aux modules, ce sur quoi je fais
l'impasse pour simplifier).</p>
<p>Options importantes pour la configuration d'AX.25 :</p>
<pre>
Code maturity level options --->
...
[*] Prompt for development and/or incomplete code/drivers
...
General setup --->
...
[*] Networking support
...
Networking options --->
...
[*] TCP/IP networking
[?] IP: forwarding/gatewaying
...
[?] IP: tunneling
...
[?] IP: Allow large windows (not recommended if <16Mb of memory)
...
[*] Amateur Radio AX.25 Level 2
[?] Amateur Radio NET/ROM
[?] Amateur Radio X.25 PLP (Rose)
...
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[?] BAYCOM ser12 and par96 driver for AX.25
[?] Soundcard modem driver for AX.25
[?] Soundmodem support for Soundblaster and compatible cards
[?] Soundmodem support for WSS and Crystal cards
[?] Soundmodem support for 1200 baud AFSK modulation
[?] Soundmodem support for 4800 baud HAPN-1 modulation
[?] Soundmodem support for 9600 baud FSK G3RUH modulation
[?] Serial port KISS driver for AX.25
[?] BPQ Ethernet driver for AX.25
[?] Gracilis PackeTwin support for AX.25
[?] Ottawa PI and PI/2 support for AX.25
[?] Z8530 SCC KISS emulation driver for AX.25
...
</pre>
Vous <b>devez</b> répondre `Y' aux options marquées
d'un <code>*</code>'. Le reste dépend de votre configuration
matérielle et d'options laissées à votre
choix. Certaines de ces options sont décrites un peu plus
loin. Si vous ne voyez pas ce dont il retourne, continuez la
lecture et revenez à cette section ultérieurement.
<p>Une fois la configuration du noyau achevée, vous devriez
pouvoir compiler proprement un nouveau noyau :</p>
<blockquote>
<pre>
<code># make dep
# make clean
# make zImage
</code>
</pre></blockquote>
<p>Déplacez ensuite le fichier
<code>arch/i386/boot/zImage</code> et éditez le fichier
<code>/etc/lilo.conf</code> en conséquence avant de relancer
<em>lilo</em> pour être sûr que vous démarrerez
bien sur le bon noyau.</p>
<h3>Un mot sur les modules</h3>
<p>Je vous recommande de ne <b>pas</b> compiler quelque pilote que
ce soit en tant que module. Dans presque toutes les installations,
vous n'y gagnez rien sinon une complexité accrue. De
nombreuses personnes ont des problèmes avec les modules, non
par la faute du code, mais parce que les modules sont plus
compliqués à installer et à configurer.
[NdT:manifestement nous ne faisons pas le même arbitrage
complexité/souplesse]</p>
<p>Si vous avez choisi de compiler certains composants en tant que
modules, vous devrez également utiliser :</p>
<blockquote>
<pre>
<code># make modules
# make modules_install
</code>
</pre></blockquote>
afin d'installer vos modules à l'emplacement adéquat.
<p>Certains ajouts au fichier <code>/etc/conf.modules</code> sont
nécessaires afin que <em>kerneld</em> sache gérer
l'interface d'accès aux fonctions modularisées. Les
entrées suivantes doivent être
présentes :</p>
<blockquote>
<pre>
<code>alias net-pf-3 ax25
alias net-pf-6 netrom
alias net-pf-11 rose
alias tty-ldisc-1 slip
alias tty-ldisc-3 ppp
alias tty-ldisc-5 mkiss
alias bc0 baycom
alias nr0 netrom
alias pi0a pi2
alias pt0a pt
alias scc0 optoscc (or one of the other scc drivers)
alias sm0 soundmodem
alias tunl0 newtunnel
alias char-major-4 serial
alias char-major-5 serial
alias char-major-6 lp
</code>
</pre></blockquote>
<blockquote>
<pre>
<code># modprobe -c
</code>
</pre></blockquote>
vous renverra la configuration courante.
<h3>Qu'y a-t-il de nouveau dans les noyaux 2.0.x patchés et
les 2.1.y ?</h3>
<p>Les noyaux <code>2.1.*</code> présentent des
améliorations au niveau de quasiment tous les pilotes et
protocoles. Citons les plus significatives :</p>
<dl>
<dt><b>Modularisation</b></dt>
<dd>
<p>tous les protocoles et gestionnaires ont été
modularisés de façon à être
gérés via <em>insmod</em> et <em>rmmod</em>. La
mémoire demandée par le noyau diminue dans le cas de
modules employés par intermittence. Le développement
et la mise au point des gestionnaires devient également plus
facile. Cela étant, la configuration devient
légèrement plus compliquée.</p>
</dd>
<dt><b>Uniformisation des pilotes</b></dt>
<dd>
<p>l'accès aux périphériques tels les Baycom,
SCC, PI, PacketTwin et autres a maintenant lieu via une interface
réseau usuelle semblable à celle du gestionnaire
ethernet. Ils n'apparaissent désormais plus comme des TNC
KISS. L'utilitaire <em>net2kiss</em> permet de créer une
interface KISS pour ces périphériques si on le
souhaite.</p>
</dd>
<dt><b>bugs</b></dt>
<dd>
<p>il y a eu de nombreuses corrections et des
fonctionnalités ont été ajoutées tel le
protocole Rose.</p>
</dd>
</dl>
<h2><a name="ss4.2">4.2 Les outils de configuration du
réseau</a></h2>
<p>A présent que le noyau est compilé, vous devez
faire de même avec les nouveaux outils de configuration du
réseau. Ces outils permettent de modifier la configuration
des périphériques réseau et des tables de
routage.</p>
<p>Le nouveau paquetage alpha des <code>net-tools</code> standard
gère AX.25 et NetRom. Je l'ai essayé et il semble
fonctionner correctement chez moi.</p>
<h3>Patch correctif incluant la gestion Rose</h3>
<p>Le paquetage standard net-tools-1.33.tar.gz comporte certains
bugs qui affectent AX.25 et NetRom. J'ai produit un correctif qui
supporte aussi Rose.</p>
<p>Le patch est disponible à l'adresse suivante :
<a href=
"ftp://zone.pspt.fi/pub/linux/ham/ax25/net-tools-1.33.rose.tjd.diff.gz">
zone.pspt.fi</a>.</p>
<h3>Compilation des net-tools standard</h3>
<p>Lisez le fichier <code>Release</code> et suivez les indications
qui y sont données. Je suis passé par les
étapes ci-dessous :</p>
<blockquote>
<pre>
<code># cd /usr/src
# tar xvfz net-tools-1.33.tar.gz
# zcat net-tools-1.33.rose.tjd.diff.gz | patch -p0
# cd net-tools-1.33
# make config
</code>
</pre></blockquote>
<p>Arrivés à ce point, vous devrez répondre
à une série de questions de configuration d'une
façon similaire à ce qui se fait pour le noyau.
N'oubliez pas d'inclure tous les protocoles et gestionnaires de
périphériques dont vous souhaitez vous servir
ultérieurement. Dans le doute, répondez par
l'affirmative (``Y'').</p>
<p>Une fois la compilation effectuée :</p>
<blockquote>
<pre>
<code># make install
</code>
</pre></blockquote>
installera les programmes à leur place définitive.
<p>Pour disposer des fonctionnalités de type pare-feu IP
(firewall), vous aurez besoin des derniers outils d'administration
<code>ipfwadm</code>. Ils remplacent <code>ipfw</code> qui ne
fonctionne à présent plus.</p>
<p>Pour la compilation d'<code>ipfwadm</code> :</p>
<blockquote>
<pre>
<code># cd /usr/src
# tar xvfz ipfwadm-2.0beta2.tar.gz
# cd ipfwadm-2.0beta2
# make install
# cp ipfwadm.8 /usr/man/man8
# cp ipfw.4 /usr/man/man4
</code>
</pre></blockquote>
<h2><a name="ss4.3">4.3 Utilitaires et applications AX.25</a></h2>
<p>Une fois les étapes de compilation et de
redémarrage du noyau menées à leur terme avec
succès, il vous reste à compiler les applications
AX.25. Les commandes devraient ressembler à ce qui
suit :</p>
<blockquote>
<pre>
<code># cd /usr/src
# tax xvfz ax25-utils-2.1.42a.tar.gz
# cd ax25-utils-2.1.42a
# make config
# make
# make install
</code>
</pre></blockquote>
<p>Les fichiers sont installés par défaut dans les
sous-répertoires <code>bin</code>, <code>sbin</code>,
<code>etc</code> et <code>man</code> du répertoire
<code>/usr</code>.</p>
<p>S'il s'agit de la première installation des utilitaires
AX.25 sur votre système, vous devrez installer quelques
fichiers de configuration type dans le répertoire
<code>/etc/ax25/</code> via :</p>
<blockquote>
<pre>
<code># make installconf
</code>
</pre></blockquote>
<p>En cas de messages du type :</p>
<pre>
gcc -Wall -Wstrict-prototypes -O2 -I../lib -c call.c
call.c: In function `statline':
call.c:268: warning: implicit declaration of function `attron'
call.c:268: `A_REVERSE' undeclared (first use this function)
call.c:268: (Each undeclared identifier is reported only once
call.c:268: for each function it appears in.)
</pre>
vérifiez encore une fois que les <em>ncurses</em> sont
correctement installées. Le script de configuration tente de
localiser les ncurses à certains emplacements usuels mais
sur des installations faisant n'importe quoi avec les ncurses, le
script échoue à cette étape.
<h2><a name="s5">5. Numéros d'identification, adresses et
préliminaires divers</a></h2>
<p>Chaque port AX.25 et NetRom sur votre système doit se
voir allouer un numéro d'identification (callsign/ssid). Il
se configure dans les fichiers dont il va être à
présent question.</p>
<p>Certaines mises en oeuvre d'AX.25 telles NOS et BPQ permettent
l'emploi d'un ssid commun sur un même port AX.25 et NetRom.
Pour des raisons techniques assez compliquées, Linux
l'interdit. En pratique, ça ne s'avère pas un
problème aussi important qu'on pourrait le croire.</p>
<p>Cela signifie que vous devez garder présents à
l'esprit certains éléments lorsque vous configurez
votre système.</p>
<ol>
<li>Chaque port AX.25 et NetRom doit disposer d'un ssid
unique.</li>
<li>TCP/IP utilise le ssid du port AX.25 par lequel il émet
ou reçoit (celui dont il est question juste au-dessus).</li>
<li>NetRom emploie le ssid spécifié dans son fichier
de configuration mais seulement lorsqu'il dialogue avec un autre
NetRom. Il ne s'agit <b>pas</b> du ssid que les clients AX.25 de
votre noeud NetRom vont employer. Davantage de détails sur
ce point tout à l'heure.</li>
<li>Rose utilise par défaut le ssid du port AX.25 à
moins qu'on ne lui en spécifie explicitement un autre
grâce à la commande `<em>rsparms</em>' qui forcera le
même ssid sur <b>tous</b> les ports.</li>
<li>Les autres programmes tels `<em>ax25d</em>' écoutent via
un ssid quelconque qui n'est soumis à aucune contrainte
d'unicité entre ports différents.</li>
<li>Si le routage est fait avec attention, vous pouvez affecter la
même adresse IP à tous les ports.</li>
</ol>
<h2><a name="ss5.1">5.1 Que sont les T1, T2, N2 ?</a></h2>
<p>Toutes les piles AX.25 ne sont pas de type TNC2. La nomenclature
Linux diffère sur certains points de celle du monde des TNC.
Le tableau ci-dessous vous aidera à établir les
correspondances entre les différents concepts.</p>
<blockquote>
<pre>
<code>-------+----------+------------------------------------------------
Linux | TAPR TNC | Description
-------+----------+------------------------------------------------
T1 | FRACK | Temps d'attente avant retransmission d'une
| | trame privée d'accusé de réception.
-------+----------+------------------------------------------------
T2 | RESPTIME | Temps minimum d'attente entre trames avant
| | émission d'un acquittement.
-------+----------+------------------------------------------------
T3 | CHECK | Périodicité d'émission d'un paquet de
| | vérification de l'état de la connexion.
-------+----------+------------------------------------------------
N2 | RETRY | Nombre de tentatives de retransmission avant
| | de signaler un échec.
-------+----------+------------------------------------------------
Idle | | Durée d'inactivité d'une connexion avant sa
| | fermeture.
-------+----------+------------------------------------------------
Window | MAXFRAME | Nombre maximal de trames transmises sans
| | acquittement.
-------+----------+------------------------------------------------
</code>
</pre></blockquote>
<h2><a name="ss5.2">5.2 Paramètres configurables
dynamiquement</a></h2>
<p>Les noyaux <code>2.1.*</code> et <code>2.0.* +moduleXX</code>
permettent la modification à la volée de
paramètres auparavant statiques. Un examen attentif de la
structure du répertoire <code>/proc/sys/net/</code>
révèle de nombreux fichiers dont les noms
correspondent à ceux de paramètres réseau. Les
fichiers dans le répertoire <code>/proc/sys/net/ax25/</code>
représentent chacun un port AX.25 configuré. Le nom
du fichier reflète celui du port. La structure des fichiers
dans <code>/proc/sys/net/ax25/<portname>/</code> est la
suivante :</p>
<pre>
Fichier Signification Valeur Défaut
ip_default_mode Mode IP par défaut 0=DG 1=VC 0
ax25_default_mode Mode AX.25 par défaut 0=normal 1=étendu 0
backoff_type Backoff 0=Linéaire 1=exponentiel 1
connect_mode Mode connecté 0=non 1=oui 1
standard_window_size Fenètre standard 1 <= N <= 7 2
extended_window_size Fenètre étendue 1 <= N <= 63 32
t1_timeout Délai maximal T1 1s <= N <= 30s 10s
t2_timeout Délai maximal T2 1s <= N <= 20s 3s
t3_timeout Délai maximal T3 0s <= N <= 3600s 300s
idle_timeout Attente d'inactivité 0m <= N 20m
maximum_retry_count N2 1 <= N <= 31 10
maximum_packet_length Trame AX.25 1 <= N <= 512 256
</pre>
T1, T2, T3 sont donnés en secondes tandis que la
durée d'inactivité est en minutes. Notez que les
valeurs employées dans l'interface sysctl s'expriment dans
une unité interne multiple par 10 du temps en secondes. La
résolution atteint donc le dixième de seconde. Dans
le cas d'une alarme qui peut être nulle, c'est à dire
pour T3 et pour la durée d'inactivité, une valeur
nulle équivaut à une désactivation.
<p>La structure des fichiers dans
<code>/proc/sys/net/netrom/</code> est la suivante :</p>
<pre>
Fichier Valeur par défaut
default_path_quality 10
link_fails_count 2
network_ttl_initialiser 16
obsolescence_count_initialiser 6
routing_control 1
transport_acknowledge_delay 50
transport_busy_delay 1800
transport_maximum_tries 3
transport_requested_window_size 4
transport_timeout 1200
</pre>
<p>La structure des fichiers dans <code>/proc/sys/net/rose/</code>
est la suivante :</p>
<pre>
Fichier Valeur par défaut
acknowledge_hold_back_timeout 50
call_request_timeout 2000
clear_request_timeout 1800
link_fail_timeout 1200
maximum_virtual_circuits 50
reset_request_timeout 1800
restart_request_timeout 1800
routing_control 1
window_size 3
</pre>
<p>Le positionnement d'un paramètre se fait simplement en
l'écrivant dans le fichier. Par exemple, pour
vérifier puis modifier la taille de fenêtre Rose, vous
pourriez exécuter :</p>
<blockquote>
<pre>
<code># cat /proc/sys/net/rose/window_size
3
# echo 4 >/proc/sys/net/rose/window_size
# cat /proc/sys/net/rose/window_size
4
</code>
</pre></blockquote>
<h2><a name="s6">6. Configuration d'un port AX.25</a></h2>
<p>Chaque application AX.25 nécessite un fichier de
configuration spécifique pour obtenir les paramètres
des ports AX.25 définis sur votre système. Pour les
ports AX.25, il s'agit du fichier <code>/etc/ax25/axport</code>.
Chaque port dont vous souhaitez vous servir doit être
répertorié dans ce fichier.</p>
<h2><a name="ss6.1">6.1 Création des
périphériques AX.25</a></h2>
<p>Le périphérique réseau correspond à
ce qui apparaît lorsque vous entrez la commande
`<em>ifconfig</em>'. Il s'agit de l'abstraction logicielle par le
biais de laquelle le noyau Linux émet et reçoit des
données réseau. Presque tous les
périphériques réseau sont associés
à une entité matérielle mais il y a certaines
exceptions. Le périphérique réseau se rattache
directement à un gestionnaire de
périphérique.</p>
<p>Le code AX.25 de Linux inclut un grand nombre de gestionnaires
de périphériques. Le pilote KISS est sûrement
le plus courant mais on peut également citer les pilotes
SCC, Baycom et modem-son.</p>
<p>Chacun de ces pilotes crée un périphérique
lors de son invocation.</p>
<h3>Création des périphériques KISS</h3>
<p><b>Options de configuration du noyau</b> :</p>
<blockquote>
<pre>
<code>General setup --->
[*] Networking support
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[*] Serial port KISS driver for AX.25
</code>
</pre></blockquote>
<p>Le TNC KISS sur un port série constitue sûrement la
configuration la plus courante. À vous de
préconfigurer et de connecter le TNC à un port
série. Un programme de communication tel <em>minicom</em> ou
<em>seyon</em> vous permettra de configurer le TNC en kiss.</p>
<p>Servez-vous du programme <em>kissattach</em> pour créer
les périphériques KISS. Par exemple :</p>
<blockquote>
<pre>
<code># /usr/sbin/kissattach /dev/ttyS0 radio
# kissparms -p radio -t 100 -s 100 -r 25
</code>
</pre></blockquote>
<p>Les périphériques KISS se retrouvent sous la
dénomination `<code>ax[0-9]</code>'. Au premier appel de
<em>kissattach</em>, `<code>ax0</code>' est
créé ; au second, `<code>ax1</code>', etc ...
Chaque périphérique KISS est associé à
un port série.</p>
<p><em>kissparms</em> permet de positionner divers
paramètres sur un périphérique KISS.</p>
<p>De façon précise, l'exemple
précédent créerait un
périphérique KISS reposant sur le
périphérique série `<code>/dev/ttyS0</code>'
et le port `<code>radio</code>' du fichier
<code>/etc/ax25/axports</code>. Il positionne ensuite
<em>txdelay</em> et <em>slottime</em> à 100 ms et
<em>ppersist</em> à 25.</p>
<p>Reportez vous aux pages de <em>man</em> pour davantage
d'informations.</p>
<h3>Configuration des TNC Dual Port</h3>
<p>L'utilitaire <em>mkiss</em> inclus dans le paquetage ax25-utils
permet l'emploi des modems d'un TNC à doubles ports. La
configuration est simple. Elle consiste à prendre le
contrôle du périphérique série
connecté au TNC multiports et à le faire ressembler
à une collection de périphériques chacun
connecté à un TNC monoport. Vous devrez le faire
<em>avant</em> toute autre configuration AX.25. Les
périphériques que vous configurerez correspondent
à des pseudo-TTY (<code>/dev/ttyq*</code>) et non aux ports
série. Les pseudo-TTY mettent en place un équivalent
de tuyau via lequel des programmes prévus pour dialoguer
avec des périphériques de type tty peuvent
communiquer. Chaque tuyau possède une
extrémité maître (`<code>/dev/ptyq*</code>') et
une esclave (`<code>/dev/ttyq*</code>'). Les
extrémités sont en relation telles que si
<code>/dev/ptyq0</code> est l'extrémité maître
d'un tuyau, alors <code>/dev/ttyq0</code> est son
extrémité esclave. Le côté maître
doit être ouvert avant le côté esclave.
<em>mkiss</em> divise un périphérique série
grâce à ce mécanisme.</p>
<p>Par exemple, pour un TNC double-port connecté au port
série <code>/dev/ttyS0</code> en 9600 bps, les commandes
suivantes créeront deux pseudo-tty qui se comporteront comme
des ports séries munis de TNC usuels :</p>
<blockquote>
<pre>
<code># /usr/sbin/mkiss -s 9600 /dev/ttyS0 /dev/ptyq0 /dev/ptyq1
# /usr/sbin/kissattach /dev/ttyq0 port1
# /usr/sbin/kissattach /dev/ttyq1 port2
</code>
</pre></blockquote>
<p><code>/dev/ttyq0</code> et <code>/dev/ttyq1</code> se manipulent
ensuite avec <em>kissattach</em> comme décrit
précédemment dans l'exemple relatif à
<code>port1</code> et <code>port2</code>. N'utilisez pas
directement <em>kissattach</em> sur le port série car
<em>mkiss</em> y accède.</p>
<p><em>mkiss</em> accepte de nombreux arguments optionnels. En
voici un résumé :</p>
<dl>
<dt><b>-c</b></dt>
<dd>
<p>provoque l'ajout d'un octet de contrôle à chaque
trame KISS. La plupart des mises en oeuvre de KISS ne le
gèrent pas. La rom KISS G8BPG en est capable.</p>
</dd>
<dt><b>-s <speed></b></dt>
<dd>
<p>fixe le débit du port série.</p>
</dd>
<dt><b>-h</b></dt>
<dd>
<p>active la négociation matérielle sur le port
série (inactive par défaut). La plupart des mises en
oeuvre KISS ne la gèrent pas.</p>
</dd>
<dt><b>-l</b></dt>
<dd>
<p>déclenche l'émission de messages à
destination de <em>syslog</em>.</p>
</dd>
</dl>
<h3>Création d'un périphérique Baycom</h3>
<p><b>Options de compilation du noyau</b> :</p>
<blockquote>
<pre>
<code>Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
General setup --->
[*] Networking support
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[*] BAYCOM ser12 and par96 driver for AX.25
</code>
</pre></blockquote>
<p>Malgré l'opinion suivant laquelle les modems Baycom ne
fonctionneraient pas très bien sous Linux, Thomas
Sailer(<code><sailer@ife.ee.ethz.ch></code>) en a
développé le gestionnaire. Son pilote gère les
ports série <code>Ser12</code> et <code>Par96</code> ainsi
que les modems parallèles <code>PicPar</code>. Vous
trouverez davantage d'informations concernant les modems à
l'adresse : <a href="http://www.baycom.de/">Baycom Web
site</a>.</p>
<p>La première étape consiste à
déterminer les ports d'entrée/sortie et les adresses
des ports série ou parallèle auxquels se connecte(nt)
le(s) modem(s).</p>
<p>Les périphériques BayCom se retrouvent sous la
dénomination <code>bc0</code>, <code>bc1</code>,
<code>bc2</code> etc...</p>
<p>L'utilitaire <em>sethdlc</em> permet de configurer le pilote
avec les paramètres précédents. Si votre
système n'est muni que d'un seul modem, vous pouvez
également les passer en argument lors du chargement du
module avec <em>insmod</em>.</p>
<p>Un exemple. Désactivation du gestionnaire du port
série COM1: puis configuration du pilote BayCom pour un
modem série Ser12 sur ce même port avec activation de
l'option logicielle DCD :</p>
<blockquote>
<pre>
<code># setserial /dev/ttyS0 uart none
# insmod hdlcdrv
# insmod baycom mode="ser12*" iobase=0x3f8 irq=4
</code>
</pre></blockquote>
<p>Un modem parallèle de type Par96 sur le port LPT1:
utilisant la détection DCD matérielle :</p>
<blockquote>
<pre>
<code># insmod hdlcdrv
# insmod baycom mode="par96" iobase=0x378 irq=7 options=0
</code>
</pre></blockquote>
<p>Ce n'est pas la meilleure façon de faire. L'utilitaire
<em>sethdlc</em> fonctionne également avec plusieurs
périphériques.</p>
<p>La page de <em>man</em> d'<em>sethdlc</em> est très
détaillée mais quelques exemples mettront en
lumière les aspects les plus importants de la configuration.
On suppose que le module BayCom a déjà
été chargé avec :</p>
<blockquote>
<pre>
<code># insmod hdlcdrv
# insmod baycom
</code>
</pre></blockquote>
Vous pouvez également avoir incorporé le gestionnaire
en dur dans le noyau.
<p>Configuration de <code>bc0</code> pour un modem parallèle
BayCom sur LPT1 avec détection DCD logicielle :</p>
<blockquote>
<pre>
<code># sethdlc -p -i bc0 mode par96 io 0x378 irq 7
</code>
</pre></blockquote>
<p>Configuration de <code>bc1</code> pour un modem série sur
COM1 :</p>
<blockquote>
<pre>
<code># sethdlc -p -i bc1 mode "ser12*" io 0x3f8 irq 4
</code>
</pre></blockquote>
<h3>Configuration des paramètres d'accès au canal
AX.25</h3>
<p>Ces paramètres équivalent à ppersist,
txdelay et slottime pour KISS. Ici aussi, vous utiliserez
<em>sethdlc</em>.</p>
<p>La page de man relative à <em>sethdlc</em> reste la
source d'informations la plus complète mais un ou deux
autres exemples ne feront pas de mal.</p>
<p>Configuration de <code>bc0</code> avec TxDelay égal
à 200 ms, SlotTime à 100 ms, PPersist à 40, en
half duplex :</p>
<blockquote>
<pre>
<code># sethdlc -i bc0 -a txd 200 slot 100 ppersist 40 half
</code>
</pre></blockquote>
Notez que les paramètres de durée sont donnés
en millisecondes.
<h3>Configuration d'AX.25 avec le pilote BayCom</h3>
<p>Le pilote BayCom crée des périphériques
réseau standard dont la configuration pour AX.25 est voisine
de celle liée à l'emploi des cartes PI ou
PacketTwin.</p>
<p>Tout d'abord il faut donner un numéro d'identification
AX.25 au périphérique. <em>ifconfig</em> le fait
très bien :</p>
<blockquote>
<pre>
<code># /sbin/ifconfig bc0 hw ax25 VK2KTJ-15 up
</code>
</pre></blockquote>
La commande précédente affecte l'identité
AX.25 <code>VK2KTJ-15</code> au périphérique
<code>bc0</code>. Vous disposez également de
<em>axparms</em> mais vous aurez de toute façon besoin
d'<em>ifconfig</em> pour activer le
périphérique :
<blockquote>
<pre>
<code># ifconfig bc0 up
# axparms -setcall bc0 vk2ktj-15
</code>
</pre></blockquote>
<p>L'étape suivante consiste à ajouter une
entrée dans le fichier <code>/etc/ax25/axports</code> comme
vous le feriez pour tout autre périphérique. Les
données du fichier <code>axports</code> étant
associées aux périphériques réseau par
l'intermédiaire du numéro d'identification, la ligne
que vous rajouterez devra comprendre celui de votre BayCom.</p>
<p>La nouvelle interface AX.25 se comporte à présent
comme les autres. Vous pouvez la configurer pour IP, la
gérer via ax25d et l'utiliser pour NetRom ou Rose si bon
vous semble.</p>
<h3>Création d'un périphérique modem-son</h3>
<p><b>Options de compilation du noyau</b> :</p>
<blockquote>
<pre>
<code>Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
General setup --->
[*] Networking support
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[*] Soundcard modem driver for AX.25
[?] Soundmodem support for Soundblaster and compatible cards
[?] Soundmodem support for WSS and Crystal cards
[?] Soundmodem support for 1200 baud AFSK modulation
[?] Soundmodem support for 4800 baud HAPN-1 modulation
[?] Soundmodem support for 9600 baud FSK G3RUH modulation
</code>
</pre></blockquote>
Thomas Sailer a développé un nouveau pilote noyau qui
traite une carte son comme un modem : connectez votre
dispositif radio directement sur votre carte son pour
émettre des paquets ! Thomas conseille au moins un
486DX2 à 66 MHz pour exploiter le logiciel ; tout le
traitement numérique est effectué par le
microprocesseur.
<p>Actuellement, le pilote émule les modems AFSK à
1200 bps, HAPN à 4880 et FSK à 9600 (compatible avec
G3RUH). Seules les cartes son compatibles SoundBlaster et
WindowsSoundSystem sont supportées. Un soupçon
d'électronique est nécessaire pour aider la carte son
à alimenter le dispositif radio. Des informations sur ce
sujet se trouvent sur la page suivante : <a href=
"http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html">Thomas's
SoundModem PTT circuit web page</a>. Les possibilités sont
nombreuses : récupération à la sortie de
la carte son, traitement sur les ports parallèle,
série ou midi. Des exemples de schémas illustrent
tout ces cas sur le site de Thomas.</p>
<p>Les périphériques modem-son se retrouvent sous la
dénomination <code>sm0</code>, <code>sm1</code>,
<code>sm2</code>, etc...</p>
<p><b>Remarque</b>: le pilote SoundModem et le sous-système
de gestion du son entrent en compétition sous Linux.
Assurez-vous que le son est désactivé avant
d'utiliser le pilote SoundModem. Vous pouvez bien sûr
compiler les deux en tant que modules, les insérer et les
ôter en fonction de vos besoins.</p>
<h3>Configuration de la carte son</h3>
<p>Le pilote SoundModem n'initialise pas la carte réseau. Le
paquetage ax25-utils comprend l'utilitaire `<em>setcrystal</em>'
pour le faire sur les cartes son à base de composants
Crystal. Si vous avez un autre modèle de carte, servez-vous
d'un autre logiciel pour l'initialiser. L'emploi de setcrystal est
fort simple :</p>
<blockquote>
<pre>
<code>setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]
</code>
</pre></blockquote>
Par exemple, pour une carte SoundBlaster à l'adresse 0x388
employant l'interruption 10 et la canal DMA 1, vous
entreriez :
<blockquote>
<pre>
<code># setcrystal -s 0x388 -i 10 -d 1
</code>
</pre></blockquote>
Pour une carte WindowSoundSystem à l'adresse 0x534 employant
l'interruption 5 et la canal DMA 3 :
<blockquote>
<pre>
<code># setcrystal -w 0x534 -i 5 -d 3
</code>
</pre></blockquote>
<p>Le paramètre <code>[-f synthio]</code> correspond
à l'adresse du synthétiseur. Le paramètre
<code>[-c dma2]</code> détermine le second canal DMA pour un
fonctionnement simultané dans les deux sens
(full-duplex).</p>
<h3>Configuration des périphériques modem-son</h3>
<p>Une fois la carte son configurée, vous devez
spécifier au pilote où la trouver et quelle type de
modem il lui faut émuler.</p>
<p>L'utilitaire <em>sethdlc</em> vous permet de passer ces
paramètres. Si vous n'avez qu'une seule carte
installée, vous pouvez les passer en arguments à
l'insertion du module SoundModem.</p>
<p>Par exemple, avec une seule carte de type SoundBlaster
configurée comme ci-dessus, émulant un modem 1200
bps :</p>
<blockquote>
<pre>
<code># insmod hdlcdrv
# insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1
</code>
</pre></blockquote>
Ce n'est pas la meilleure façon de faire. L'utilitaire
<em>sethdlc</em> fonctionne également avec plusieurs
périphériques.
<p>La page de <em>man</em> d'<em>sethdlc</em> est très
détaillée mais quelques exemples mettront ici encore
en lumière les aspects les plus importants de la
configuration. On suppose que le module modem-son a
déjà été chargé avec :</p>
<blockquote>
<pre>
<code># insmod hdlcdrv
# insmod soundmodem
</code>
</pre></blockquote>
Vous pouvez également avoir incorporé le gestionnaire
en dur dans le noyau.
<p>Configuration du pilote pour émuler un modem G3RUH 9600
sur le périphérique <code>sm0</code> avec la carte
WindowsSoundSystem précédente et le port
parallèle en 0x378 pour alimenter
l'émetteur :</p>
<blockquote>
<pre>
<code># sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378
</code>
</pre></blockquote>
Configuration du pilote pour émuler un modem HAPN 4800 sur
le périphérique <code>sm1</code> avec la carte
SoundBlaster précédente et le port série en
0x2f8 pour alimenter l'émetteur :
<blockquote>
<pre>
<code># sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8
</code>
</pre></blockquote>
Configuration du pilote pour émuler un modem AFS 1200 sur le
périphérique <code>sm1</code> avec la carte
SoundBlaster précédente et le port série en
0x2f8 pour alimenter l'émetteur :
<blockquote>
<pre>
<code># sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8
</code>
</pre></blockquote>
<h3>Configuration des paramètres d'accès au canal
AX.25</h3>
<p>Ces paramètres équivalent à ppersist,
txdelay et slottime pour KISS. Ici aussi, vous utiliserez
<em>sethdlc</em>.</p>
<p>La page de man relative à <em>sethdlc</em> reste la
source d'informations la plus complète mais un ou deux
autres exemples ne feront toujours pas de mal.</p>
<p>Configuration de <code>sm0</code> avec TxDelay égal
à 100 ms, SlotTime à 50 ms, PPersist à 128 en
full duplex :</p>
<blockquote>
<pre>
<code># sethdlc -i sm0 -a txd 100 slot 50 ppersist 128 full
</code>
</pre></blockquote>
Notez que les paramètres de durée sont donnés
en millisecondes.
<h3>Choix du volume et ajustement du pilote</h3>
<p>Il est <em>très</em> important que les niveaux audio
soient correctement ajustés pour qu'un modem-radio
fonctionne correctement. Les modem-son n'échappent pas
à la règle. Thomas a mis au point des utilitaires
pour faciliter cette tâche : <em>smdiag</em> et
<em>smmixer</em>.</p>
<dl>
<dt><b><em>smdiag</em></b></dt>
<dd>
<p>fournit deux type d'affichage : soit un écran de
type oscilloscope, soit un visuel normal.</p>
</dd>
<dt><b><em>smmixer</em></b></dt>
<dd>
<p>permet l'ajustement des niveaux audio de transmission et de
réception.</p>
</dd>
</dl>
<em>smdiag</em> en mode 'visuel' avec un périphérique
SoundModem en <code>sm0</code> :
<blockquote>
<pre>
<code># smdiag -i sm0 -e
</code>
</pre></blockquote>
<em>smmixer</em> avec un périphérique SoundModem en
<code>sm0</code> :
<blockquote>
<pre>
<code># smmixer -i sm0
</code>
</pre></blockquote>
<h3>Configuration d'AX.25 avec le pilote SoundModem</h3>
<p>Le pilote soundmodem crée des périphériques
réseau standard dont la configuration pour AX.25 est voisine
de celle liée à l'emploi des cartes PI ou
PacketTwin.</p>
<p>Tout d'abord il faut donner un numéro d'identification
AX.25 au périphérique. <em>ifconfig</em> le fait
très bien :</p>
<blockquote>
<pre>
<code># /sbin/ifconfig sm0 hw ax25 VK2KTJ-15 up
</code>
</pre></blockquote>
La commande précédente affecte l'identité
AX.25 <code>VK2KTJ-15</code> au périphérique
<code>sm0</code>. Vous disposez également de
<em>axparms</em> mais vous aurez de toute façon besoin
d'<em>ifconfig</em> pour activer le
périphérique :
<blockquote>
<pre>
<code># ifconfig sm0 up
# axparms -setcall sm0 vk2ktj-15
</code>
</pre></blockquote>
<p>L'étape suivante consiste à ajouter une
entrée dans le fichier <code>/etc/ax25/axports</code> comme
vous le feriez pour tout autre périphérique. Les
données du fichier <code>axports</code> étant
associées aux périphériques réseau par
l'intermédiaire du numéro d'identification, la ligne
que vous rajouterez devra comprendre celui de votre modem-son.</p>
<p>La nouvelle interface AX.25 se comporte à présent
comme les autres. Vous pouvez la configurer pour IP, la
gérer via ax25d et l'utiliser pour NetRom ou Rose si bon
vous semble.</p>
<h3>Création d'un périphérique à base
de carte PI</h3>
<p><b>Options de compilation du noyau</b> :</p>
<blockquote>
<pre>
<code>General setup --->
[*] Networking support
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[*] Ottawa PI and PI/2 support for AX.25
</code>
</pre></blockquote>
<p>Les périphériques PI se retrouvent sous la
dénomination `<code>pi[0-9][ab]</code>' où la
première carte détectée se verra allouer
`<code>pi0</code>', la seconde `<code>pi1</code>', etc...
`<code>a</code>' et `<code>b</code>' se rapportent à la
première et à la seconde interface physique des
cartes PI. Si vous avez inclus le pilote de cartes PI dans votre
noyau et que la détection s'est effectuée
correctement, vous pouvez configurer le
périphérique :</p>
<blockquote>
<pre>
<code># /sbin/ifconfig pi0a hw ax25 VK2KTJ-15 up
</code>
</pre></blockquote>
<p>La commande précédente affecte l'identité
AX.25 <code>VK2KTJ-15</code> au premier port de la carte PI et
l'active. Pour utiliser le périphérique, il vous
reste à ajouter au fichier <code>/etc/ax25/axports</code>
l'entrée correspondant à son identité
AX.25.</p>
<p>Le gestionnaire de cartes PI a été écrit
par : <code>David Perry,
<dp@hydra.carleton.edu></code></p>
<h3>Création d'un périphérique PacketTwin</h3>
<p><b>Options de compilation du noyau</b> :</p>
<blockquote>
<pre>
<code>General setup --->
[*] Networking support
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[*] Gracilis PackeTwin support for AX.25
</code>
</pre></blockquote>
<p>Les périphériques PacketTwin se retrouvent sous la
dénomination `<code>pt[0-9][ab]</code>' où la
première carte détectée se verra allouer
`<code>pt0</code>', la seconde `<code>pt1</code>', etc.
`<code>a</code>' et `<code>b</code>' se rapportent à la
première et à la seconde interfaces physiques des
cartes PacketTwin. Si vous avez inclus le pilote de cartes PI dans
votre noyau et que la détection s'est effectuée
correctement, vous pouvez configurer le
périphérique :</p>
<blockquote>
<pre>
<code># /sbin/ifconfig pt0a hw ax25 VK2KTJ-15 up
</code>
</pre></blockquote>
<p>La commande précédente affecte l'identité
AX.25 <code>VK2KTJ-15</code> au premier port de la carte PacketTwin
et l'active. Pour utiliser le périphérique, il vous
reste à ajouter au fichier <code>/etc/ax25/axports</code>
l'entrée correspondant à son identité
AX.25.</p>
<p>Le gestionnaire de cartes PacketTwin a été
écrit par : <code>Craig Small VK2XLZ,
<csmall@triode.apana.org.au></code>.</p>
<h3>Création d'un périphérique SCC
générique</h3>
<p><b>Options de compilation du noyau</b> :</p>
<blockquote>
<pre>
<code>General setup --->
[*] Networking support
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[*] Z8530 SCC KISS emulation driver for AX.25
</code>
</pre></blockquote>
<p>Joerg Reuter, DL1BKE, <code>jreuter@poboxes.com</code> a
écrit le module générique de gestion des
cartes à base de SCC Z8530. Son pilote supporte une large
gamme de cartes différentes et offre une interface similaire
à un TNC KISS que vous pouvez traiter comme telle.</p>
<h3>Récupération et compilation des outils de
configuration</h3>
<p>Bien que le pilote soit inclus dans les arborescences standard
du noyau, Joerg accompagne le paquetage de configuration dont vous
aurez besoin des versions les plus récentes.</p>
<p>Vous trouverez le paquetage des outils de configuration à
une des adresses suivantes : <a href=
"http://www.rat.de/jr/">Joerg's web page</a></p>
<p><b>db0bm.automation.fh-aachen.de</b></p>
<blockquote>
<pre>
<code>/incoming/dl1bke/
</code>
</pre></blockquote>
<p><b>insl1.etec.uni-karlsruhe.de</b></p>
<blockquote>
<pre>
<code>/pub/hamradio/linux/z8530/
</code>
</pre></blockquote>
<p><b>ftp.ucsd.edu</b></p>
<blockquote>
<pre>
<code>/hamradio/packet/tcpip/linux
/hamradio/packet/tcpip/incoming/
</code>
</pre></blockquote>
<p>Différentes versions s'offrent à vous. Choisissez
la plus adaptée à votre noyau :</p>
<pre>
z8530drv-2.4a.dl1bke.tar.gz 2.0.*
z8530drv-utils-3.0.tar.gz 2.1.6 et au delà
</pre>
<p>Voici les commandes que j'ai employées lors de la
compilation et de l'installation du paquetage pour mon noyau
2.0.30 :</p>
<blockquote>
<pre>
<code># cd /usr/src
# gzip -dc z8530drv-2.4a.dl1bke.tar.gz | tar xvpofz -
# cd z8530drv
# make clean
# make dep
# make module # Si vous souhaitez modulariser le pilote
# make for_kernel # Si vous préférez un pilote inclus dans le noyau
# make install
</code>
</pre></blockquote>
<p>Au terme de ces opérations, trois nouveaux
exécutables devraient s'être installés dans
votre répertoire <code>/sbin</code> : <em>gencfg</em>,
<em>sccinit</em> et <em>sccstat</em>. Ces programmes vont vous
servir à configurer le pilote pour votre carte.</p>
<p>De nouveaux périphériques apparaîtront
également dans votre répertoire <code>/dev</code>
sous les noms <code>scc0</code>-<code>scc7</code>. Ils joueront
plus tard le rôle de périphériques KISS que
vous pourrez employer.</p>
<p>Si vous lancez 'make for_kernel', vous devrez également
recompiler votre noyau. Afin que le pilote z8530 soit inclus,
vérifiez que vous avez bien répondu `<code>Y</code>'
à : `<code>Z8530 SCC kiss emulation driver for
AX.25</code>' durant le `<code>make config</code>'.</p>
<p>Si vous avez choisi 'make module', le module <code>scc.o</code>
sera installé dans le sous-répertoire adéquat
de <code>/lib/modules</code> et il ne vous sera pas
nécessaire de recompiler tout le noyau. N'oubliez pas
d'exécuter un <em>insmod</em> afin de charger le module
avant d'essayer de le configurer.</p>
<h3>Configurer le pilote pour sa carte</h3>
<p>La conception du pilote SCC z8530 vise une flexibilité
maximale ainsi que la gestion du plus grand nombre de cartes
possible. Le prix à payer se retrouve au niveau de la
configuration.</p>
<p>Le paquetage comprend une documentation plus
détaillée et vous aurez tout intérêt
à vous y reporter si vous rencontrez le moindre
problème. Intéressez-vous plus
particulièrement à <code>doc/scc_eng.doc</code> et
à <code>doc/scc_ger.doc</code>. J'ai repris les points les
plus importants mais de nombreux détails sont passés
sous silence.</p>
<p>Le fichier de configuration principal, lu par le programme
<em>sccinit</em>, se trouve en <code>/etc/z8530drv.conf</code>. Il
se divise en deux parties : configuration des
paramètres matériels et configuration du canal. Une
fois ce fichier au point, vous n'aurez plus qu'à
ajouter :</p>
<blockquote>
<pre>
<code># sccinit
</code>
</pre></blockquote>
au fichier <code>rc</code> chargé de la configuration du
réseau et le périphérique sera
initialisé conformément au contenu du fichier de
configuration. Effectuez ces opérations avant d'utiliser le
gestionnaire.
<h3>Configuration des paramètres matériels</h3>
<p>La première partie se divise en strophes, chacune
correspondant à un composant 8530. Une strophe comprend une
liste de mots clefs et d'arguments. Le fichier peut décrire
jusqu'à quatre composants SCC par défaut. Si vous
avez besoin d'aller au-delà, modifiez la ligne <code>#define
MAXSCC 4</code> dans le fichier <code>scc.c</code>.</p>
<p>Liste des mots-clefs et des arguments :</p>
<dl>
<dt><b>chip</b></dt>
<dd>
<p>le terme <code>chip</code> sert à séparer les
strophes. Il ne nécessite pas d'arguments et ceux-ci sont de
toute façon ignorés.</p>
</dd>
<dt><b>data_a</b></dt>
<dd>
<p>adresse du port de données pour le canal `A' du z8530. Un
nombre hexadécimal est attendu en argument (par exemple
0x300).</p>
</dd>
<dt><b>ctrl_a</b></dt>
<dd>
<p>adresse du port de contrôle pour le canal `A' du z8530. Un
nombre hexadécimal est attendu en argument (par exemple
0x304).</p>
</dd>
<dt><b>data_b</b></dt>
<dd>
<p>adresse du port de données pour le canal `B' du z8530. Un
nombre hexadécimal est attendu en argument (par exemple
0x301).</p>
</dd>
<dt><b>ctrl_b</b></dt>
<dd>
<p>adresse du port de contrôle pour le canal `B' du z8530. Un
nombre hexadécimal est attendu en argument (par exemple
0x305).</p>
</dd>
<dt><b>irq</b></dt>
<dd>
<p>interruption (IRQ) utilisée par le SCC 8530. Un entier, 5
par exemple, est attendu.</p>
</dd>
<dt><b>pclock</b></dt>
<dd>
<p>fréquence du signal d'horloge sur la broche PCLK du 8530.
L'argument est donné en Hz par un nombre entier (4915200 par
défaut).</p>
</dd>
<dt><b>board</b></dt>
<dd>
<p>modèle de la munie du 8530 : <<====== ne
manque-t-il pas un mot ?</p>
<dl>
<dt><b>PA0HZP</b></dt>
<dd>
<p>carte SCC PA0HZP</p>
</dd>
<dt><b>EAGLE</b></dt>
<dd>
<p>carte Eagle</p>
</dd>
<dt><b>PC100</b></dt>
<dd>
<p>carte SCC PC100 DRSI</p>
</dd>
<dt><b>PRIMUS</b></dt>
<dd>
<p>carte PRIMUS-PC (DG9BL)</p>
</dd>
<dt><b>BAYCOM</b></dt>
<dd>
<p>carte (U)SCC BayCom</p>
</dd>
</dl>
</dd>
<dt><b>escc</b></dt>
<dd>
<p>optionnel, active la gestion des cartes SCC étendues
(ESCC) telles la 8580, la 85180 ou la 85280. L'argument est une
chaîne de caractères qui peut prendre les valeurs
`yes' ou `no' (`no' par défaut).</p>
</dd>
<dt><b>vector</b></dt>
<dd>
<p>optionnel, donne l'adresse du vecteur d'acquittement pour les
cartes PA0HZP. Il est commun à l'ensemble des composants et
prend par défaut la valeur nulle.</p>
</dd>
<dt><b>special</b></dt>
<dd>
<p>optionnel, donne l'adresse du registre spécial sur
diverses cartes. Nul par défaut.</p>
</dd>
<dt><b>option</b></dt>
<dd>
<p>optionnel. Nul par défaut.</p>
</dd>
</dl>
<p>Quelques exemples de configuration des cartes les plus
courantes :</p>
<dl>
<dt><b>BayCom USCC</b></dt>
<dd>
<blockquote>
<pre>
<code>chip 1
data_a 0x300
ctrl_a 0x304
data_b 0x301
ctrl_b 0x305
irq 5
board BAYCOM
#
# SCC chip 2
#
chip 2
data_a 0x302
ctrl_a 0x306
data_b 0x303
ctrl_b 0x307
board BAYCOM
</code>
</pre></blockquote>
</dd>
<dt><b>PA0HZP SCC card</b></dt>
<dd>
<blockquote>
<pre>
<code>chip 1
data_a 0x153
data_b 0x151
ctrl_a 0x152
ctrl_b 0x150
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
#
#
#
chip 2
data_a 0x157
data_b 0x155
ctrl_a 0x156
ctrl_b 0x154
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
</code>
</pre></blockquote>
</dd>
<dt><b>DRSI SCC card</b></dt>
<dd>
<blockquote>
<pre>
<code>chip 1
data_a 0x303
data_b 0x301
ctrl_a 0x302
ctrl_b 0x300
irq 7
pclock 4915200
board DRSI
escc no
</code>
</pre></blockquote>
</dd>
</dl>
Si vous disposez déjà d'une configuration qui
fonctionne avec votre carte sous NOS, la commande <em>gencfg</em>
permet de convertir les commandes du pilote NOS PE1CHL en quelque
chose d'utilisable pour le pilote z8530.
<p><em>gencfg</em> s'invoque simplement avec les mêmes
paramètres que ceux employés pour le pilote PE1CHL
avec NET/NOS. Par exemple, pour obtenir une ébauche de
fichier de configuration pour une carte OptopSCC :</p>
<blockquote>
<pre>
<code># gencfg 2 0x150 4 2 0 1 0x168 9 4915200
</code>
</pre></blockquote>
<h3>Configuration du canal</h3>
<p>Vous préciserez tous les autres paramètres
relatifs au port que vous configurez dans la section
spécifique au canal. Cette section se divise
également en strophes. Une strophe correspond à un
port logique et il y aura donc deux strophes de canal pour une
strophe de paramètres matériels puisque chaque SCC
8530 inclut deux ports.</p>
<p>Les mots-clefs et leurs arguments s'inscrivent également
dans le fichier <code>/etc/z8530drv.conf</code>, <b>à la
suite</b> de la section des paramètres matériels.</p>
<p>L'ordre est très important dans cette section mais tout
devrait marcher même si vous vous écartez de celui
proposé.</p>
<dl>
<dt><b>device</b></dt>
<dd>
<p>en première position, spécifie le nom du
périphérique auquel le reste de la configuration
s'applique (par exemple <code>/dev/scc0</code>)</p>
</dd>
<dt><b>speed</b></dt>
<dd>
<p>débit de l'interface en bits par seconde. Un nombre
entier est attendu (par exemple <code>1200</code>)</p>
</dd>
<dt><b>clock</b></dt>
<dd>
<p>origine de l'horloge de synchronisation des données. Les
valeurs possibles sont :</p>
<dl>
<dt><b>dpll</b></dt>
<dd>
<p>fonctionnement normal monodirectionnel (half-duplex) ;</p>
</dd>
<dt><b>external</b></dt>
<dd>
<p>le modem dispose de sa propre horloge Rx/Tx ;</p>
</dd>
<dt><b>divider</b></dt>
<dd>
<p>utilisation du diviseur bidirectionnel (si disponible).</p>
</dd>
</dl>
</dd>
<dt><b>mode</b></dt>
<dd>
<p>type de codage des données. À choisir entre
<code>nrzi</code> et <code>nrz</code></p>
</dd>
<dt><b>rxbuffers</b></dt>
<dd>
<p>nombre de tampons de réception à allouer en
mémoire. Un nombre entier est attendu (8 par exemple)</p>
</dd>
<dt><b>txbuffers</b></dt>
<dd>
<p>nombre de tampons d'émission à allouer en
mémoire. Un nombre entier est attendu (8 par exemple )</p>
</dd>
<dt><b>bufsize</b></dt>
<dd>
<p>taille des tampons d'émission et de réception. La
valeur est donnée en octets et correspond à la
longueur totale d'une trame. Elle doit donc prendre en compte aussi
bien les données que l'en-tête. Cet argument est
optionnel et prend par défaut la valeur <code>384</code></p>
</dd>
<dt><b>txdelay</b></dt>
<dd>
<p>délai d'attente de la transmission KISS. Un nombre entier
de ms est attendu</p>
</dd>
<dt><b>persist</b></dt>
<dd>
<p>paramètre persist (KISS). Argument de type entier</p>
</dd>
<dt><b>slot</b></dt>
<dd>
<p>slot time (KISS). Argument de type entier en ms</p>
</dd>
<dt><b>tail</b></dt>
<dd>
<p>the KISS transmit tail value. Argument entier en ms</p>
</dd>
<dt><b>fulldup</b></dt>
<dd>
<p>indicateur de fonctionnement bidirectionnel (KISS), à
choisir entre <code>1</code> pour le bidirectionnel et
<code>0</code> pour le monodirectionnel</p>
</dd>
<dt><b>wait</b></dt>
<dd>
<p>paramètre d'attente (KISS). Argument de type entier en
ms</p>
</dd>
<dt><b>min</b></dt>
<dd>
<p>paramètre min (KISS). Argument de type entier en
secondes</p>
</dd>
<dt><b>maxkey</b></dt>
<dd>
<p>temps de keyup (?) maximal (KISS). Argument de type entier en
secondes</p>
</dd>
<dt><b>idle</b></dt>
<dd>
<p>délai d'attente sur inactivité (KISS). Argument de
type entier en secondes</p>
</dd>
<dt><b>maxdef</b></dt>
<dd>
<p>paramètre maxdef (KISS). Argument de type entier</p>
</dd>
<dt><b>group</b></dt>
<dd>
<p>paramètre group (KISS). Argument de type entier</p>
</dd>
<dt><b>txoff</b></dt>
<dd>
<p>valeur de txoff (KISS). Argument de type entier en ms</p>
</dd>
<dt><b>softdcd</b></dt>
<dd>
<p>valeur de softdcd (KISS). Argument de type entier</p>
</dd>
<dt><b>slip</b></dt>
<dd>
<p>indicateur slip (KISS). Argument de type entier</p>
</dd>
</dl>
<h3>Utilisation du pilote</h3>
<p>Il suffit d'employer les périphériques
<code>/dev/scc*</code> comme on le ferait avec n'importe quel tty
série connecté à un TNC KISS. Par exemple,
avec une carte SCC, vous exécuteriez quelque chose du
style :</p>
<blockquote>
<pre>
<code># kissattach -s 4800 /dev/scc0 VK2KTJ
</code>
</pre></blockquote>
<p>NOS permet également d'attacher le
périphérique de la même façon. Avec
JNOS, vous entreriez une commande du style :</p>
<blockquote>
<pre>
<code>attach asy scc0 0 ax25 scc0 256 256 4800
</code>
</pre></blockquote>
<h3>Les outils <em>sccstat</em> et <em>sccparam</em></h3>
<p>Afin de diagnostiquer les problèmes, <em>sccstat</em>
affiche la configuration courante de n'importe quel
périphérique SCC. Essayez :</p>
<blockquote>
<pre>
<code># sccstat /dev/scc0
</code>
</pre></blockquote>
Vous devriez récupérer une quantité
impressionnante d'informations touchant à la configuration
et à l'état du port SCC <code>/dev/scc0</code>.
<p><em>sccparam</em> sert à modifier la configuration
après l'initialisation du noyau. La syntaxe est similaire
à celle de la commande <code>param</code> de NOS. Pour
positionner <code>txtail</code> à 100 ms sur un
port :</p>
<blockquote>
<pre>
<code># sccparam /dev/scc0 txtail 0x8
</code>
</pre></blockquote>
<h3>Création d'un périphérique BPQ</h3>
<p><b>Options de configuration du noyau</b> :</p>
<blockquote>
<pre>
<code>
General setup --->
[*] Networking support
Network device support --->
[*] Network device support
...
[*] Radio network interfaces
[*] BPQ Ethernet driver for AX.25
</code>
</pre></blockquote>
<p>Linux gère le BPQ compatible Ethernet. Vous pouvez ainsi
dialoguer en AX.25 via un réseau Ethernet local et
interconnecter votre poste Linux avec d'autres machines BPQ sur
réseau local.</p>
<p>Les périphériques BPQ se retrouvent sous la
dénomination `<code>bpq[0-9]</code>'. `<code>bpq0</code>'
est associé à `<code>eth0</code>',
`<code>bpq1</code>' à `<code>eth1</code>' etc.</p>
<p>La configuration est simple. Mettez d'abord en place un
périphérique Ethernet standard. Pour cela, vous aurez
pris soin d'inclure dans le noyau la gestion de votre adaptateur
Ethernet. Pour plus de détails, reportez vous
à : <a href=
"Ethernet-HOWTO.html">Ethernet-HOWTO</a>.</p>
<p>Avant d'activer la gestion BPQ, le périphérique
Ethernet doit s'être vu affecter un numéro
d'identification AX.25. Par exemple :</p>
<blockquote>
<pre>
<code># /sbin/ifconfig bpq0 hw ax25 vk2ktj-14 up
</code>
</pre></blockquote>
<p>Vérifiez bien que l'identifiant correspond à celui
qui figure dans le fichier <code>/etc/ax25/axports</code> pour ce
port.</p>
<h3>Configuration d'un noeud BPQ pour le dialogue avec la couche
AX.25 de Linux</h3>
<p>Souvent, l'Ethernet BPQ repose sur des adresses de type
multicast. Ce n'est pas le cas dans la mise en oeuvre sous Linux
qui recourt aux adresses générales (broadcast)
usuelles sur Ethernet. Le fichier NET.CFG du gestionnaire ODI BPQ
doit donc être modifié pour ressembler à ce qui
suit :</p>
<blockquote>
<pre>
<code>LINK SUPPORT
MAX STACKS 1
MAX BOARDS 1
LINK DRIVER E2000 ; ou tout autre MLID adapté à votre carte
INT 10 ;
PORT 300 ; selon votre carte
FRAME ETHERNET_II
PROTOCOL BPQ 8FF ETHERNET_II ; requis pour BPQ - peut jouer sur PID
BPQPARAMS ; optionnel - requis seulement pour
; modifier la cible par défaut
ETH_ADDR FF:FF:FF:FF:FF:FF ; adresse de la cible
</code>
</pre></blockquote>
<h2><a name="ss6.2">6.2 Mise au point du fichier
<code>/etc/ax25/axports</code></a></h2>
<p><code>/etc/ax25/axports</code> est un fichier texte standard que
vous créerez avec n'importe quel éditeur. Son format
est le suivant :</p>
<blockquote>
<pre>
<code>portname callsign baudrate paclen window description
</code>
</pre></blockquote>
avec :
<dl>
<dt><b>portname</b></dt>
<dd>
<p>nom affecté au port</p>
</dd>
<dt><b>callsign</b></dt>
<dd>
<p>identifiant AX.25</p>
</dd>
<dt><b>baudrate</b></dt>
<dd>
<p>vitesse de communication avec le TNC</p>
</dd>
<dt><b>paclen</b></dt>
<dd>
<p>longueur de paquet maximale applicable au port pour les
communications AX.25 en mode connecté</p>
</dd>
<dt><b>window</b></dt>
<dd>
<p>paramètre de fenêtre (K) AX.25. Il s'agit de la
même chose que le paramètre <code>MAXFRAME</code> de
nombreux TNC.</p>
</dd>
<dt><b>description</b></dt>
<dd>
<p>champ de commentaire</p>
</dd>
</dl>
<p>Chez moi, le fichier ressemble à ça :</p>
<blockquote>
<pre>
<code>radio VK2KTJ-15 4800 256 2 4800bps 144.800 MHz
ether VK2KTJ-14 10000000 256 2 BPQ/ethernet device
</code>
</pre></blockquote>
<p>Rappelez-vous que vous devez affecter un numéro
d'identification (ssid) unique à chaque port AX.25 que vous
créez. Ajoutez une ligne pour chaque
périphérique que vous emploierez ; cela concerne
les ports KISS, BayCom, SCC, PI, PT et modem-son. Les
entrées dans le fichier sont associées aux
périphériques réseau par le biais de
l'identificateur AX.25 : au moins une bonne raison de les
prendre différents.</p>
<h2><a name="ss6.3">6.3 Routage AX.25</a></h2>
<p>Vous pouvez décider de mettre en place des routes par
défaut spécifiques à certains hôtes, par
exemple pour des connexions AX.25 courantes ou des connexions IP.
L'utilitaire <em>axparms</em> effectue cette tâche. Sa page
de <em>man</em> en donne une description exhaustive. À titre
d'exemple :</p>
<blockquote>
<pre>
<code># /usr/sbin/axparms -route add radio VK2XLZ VK2SUT
</code>
</pre></blockquote>
Cette commande établit une entrée pour
<code>VK2XLZ</code> via <code>VK2SUT</code> sur le port AX.25
nommé <code>radio</code>.
<h2><a name="s7">7. TCP/IP et l'interface AX.25</a></h2>
<p>Si vous disposez d'interfaces KISS, deux méthodes
s'offrent à vous pour configurer une adresse IP : soit
la commande <em>kissattach</em>, soit le recours conventionnel
à <em>ifconfig</em>.</p>
<p>Modifiant l'exemple KISS précédent de façon
à créer une interface AX.25 avec une adresse IP
égale à <code>44.136.8.5</code> et un
<code>MTU</code> de <code>512</code> octets :</p>
<blockquote>
<pre>
<code># /usr/sbin/kissattach -i 44.136.8.5 -m 512 /dev/ttyS0 radio
# /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 ax0
# /sbin/route add default ax0
</code>
</pre></blockquote>
Au besoin, vous emploierez <em>ifconfig</em> pour configurer les
autres paramètres.
<p>Si vous disposez d'autre interfaces, utilisez <em>ifconfig</em>
pour configurer l'adresse IP et le masque de réseau du port
et ajoutez une route vers le port comme vous le feriez avec
n'importe quelle autre interface IP. L'exemple suivant s'appuie sur
une carte PI mais fonctionnerait de façon similaire avec un
périphérique AX.25 quelconque :</p>
<blockquote>
<pre>
<code># /sbin/ifconfig pi0a 44.136.8.5 netmask 255.255.255.0 up
# /sbin/ifconfig pi0a broadcast 44.136.8.255 mtu 512
# /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 pi0a
# /sbin/route add default pi0a
</code>
</pre></blockquote>
Les commandes précédentes correspondent à une
configuration familière aux utilisateurs de NOS et de ses
variantes ou de toute autre logiciel IP. Notez que la route par
défaut n'est pas nécessaire si un autre
périphérique réseau la met lui-même en
place.
<p>Pour tester votre configuration, lancez un ping ou un telnet
vers votre machine :</p>
<blockquote>
<pre>
<code># ping -i 5 44.136.8.58
</code>
</pre></blockquote>
L'argument `<code>-i 5</code>' force <em>ping</em> à envoyer
ses requêtes ICMP toutes les 5 secondes et non chaque
seconde.
<h2><a name="s8">8. Configuration d'un port NetRom</a></h2>
<p>Le protocole NetRom s'appuye sur les ports AX.25 que vous
créerez. Sa configuration s'effectue par
l'intermédiaire de deux fichiers. L'un décrit les
interfaces NetRom et l'autre les ports AX.25 sous-jacents. La
procédure détaillée ci-dessous s'appliquera
à toutes les interfaces NetRom que vous souhaiterez
définir.</p>
<h2><a name="ss8.1">8.1 Le fichier
<code>/etc/ax25/nrports</code></a></h2>
<p>Ce fichier est l'analogue pour les ports NetRom du fichier
<code>/etc/ax25/axports</code> pour les ports AX.25. Tous les
périphériques NetRom que vous souhaitez employer
doivent figurer dans le fichier <code>/etc/ax25/nrports</code>. Le
plus souvent, une station Linux ne comprendra qu'un seul port
NetRom qui utilisera certains des périphériques
AX.25. Pour certains services tels un BBS, le besoin de
définir plusieurs alias NetRom peut se manifester ; on
ajoute alors des périphériques NetRom en
conséquence.</p>
<p>Le format du fichier est le suivant :</p>
<blockquote>
<pre>
<code>name callsign alias paclen description
</code>
</pre></blockquote>
Avec :
<dl>
<dt><b>name</b></dt>
<dd>
<p>nom affecté au port.</p>
</dd>
<dt><b>callsign</b></dt>
<dd>
<p>identifiant pour le trafic NetRom transitant par ce port.
Attention, il ne s'agit <b>pas</b> de l'adresse à laquelle
les clients doivent se connecter pour disposer d'une interface de
type <em>noeud</em> (ce mode sera décrit un peu plus loin).
L'identifiant doit être unique et ne
réapparaître nulle part dans les fichiers
<code>/etc/ax25/axports</code> et
<code>/etc/ax25/nrports</code>.</p>
</dd>
<dt><b>alias</b></dt>
<dd>
<p>alias NetRom du port.</p>
</dd>
<dt><b>paclen</b></dt>
<dd>
<p>taille maximale des trames NetRom transmises par le port.</p>
</dd>
<dt><b>description</b></dt>
<dd>
<p>commentaire.</p>
</dd>
</dl>
<p>Par exemple, pour créer un port NetRom connu du reste du
réseau NetRom sous l'identité
`<code>LINUX:VK2KTJ-9</code>' :</p>
<blockquote>
<pre>
<code>netrom VK2KTJ-9 LINUX 236 Linux Switch Port
</code>
</pre></blockquote>
Des programmes tels <em>call</em> se servent du fichier
<code>nrports</code>.
<h2><a name="ss8.2">8.2 Le fichier
<code>/etc/ax25/nrbroadcast</code></a></h2>
<p>Ce second fichier peut contenir une nombre d'entrées
variable, normalement une pour chaque port AX.25 convoyant du
trafic NetRom.</p>
<p>Le format du fichier est le suivant :</p>
<blockquote>
<pre>
<code>axport min_obs def_qual worst_qual verbose
</code>
</pre></blockquote>
Avec :
<dl>
<dt><b>axport</b></dt>
<dd>
<p>nom du port tiré du fichier
<code>/etc/ax25/axports</code>. En l'absence d'entrée dans
le fichier <code>/etc/ax25/nrbroadcasts</code> pour un port AX.25,
aucun routage NetRom n'aura lieu via ce port et toute diffusion
NetRom sera ignorée.</p>
</dd>
<dt><b>min_obs</b></dt>
<dd>
<p>paramètre d'obsolescence minimale du port.</p>
</dd>
<dt><b>def_qual</b></dt>
<dd>
<p>qualité par défaut.</p>
</dd>
<dt><b>worst_qual</b></dt>
<dd>
<p>qualité minimale admissible. Toute route de
qualité moindre sera ignorée.</p>
</dd>
<dt><b>verbose</b></dt>
<dd>
<p>activation de la diffusion des informations de routage globales
ou seulement relatives au noeud.</p>
</dd>
</dl>
Par exemple :
<blockquote>
<pre>
<code>radio 1 200 100 1
</code>
</pre></blockquote>
<h2><a name="ss8.3">8.3 Création des
périphériques réseau NetRom</a></h2>
<p>Une fois les deux fichiers mis au point, il faut créer
les périphériques NetRom. La démarche est
proche du cas AX.25 à ceci près que l'on se sert
à présent de la commande <em>nrattach</em>. Elle
constitue un pendant à la commande <em>axattach</em> et
crée des périphériques NetRom qui se
retrouvent sous la dénomination `<code>nr[0-9]</code>' (la
première invocation produit `<code>nr0</code>', la seconde
`<code>nr1</code>' etc.) Pour associer un
périphérique NetRom au port défini
précédemment, on utilise :</p>
<blockquote>
<pre>
<code># nrattach netrom
</code>
</pre></blockquote>
Cette commande active le périphérique NetRom
(<code>nr0</code>) nommé <code>netrom</code>
configuré conformément au contenu du fichier
<code>/etc/ax25/nrports</code>.
<h2><a name="ss8.4">8.4 Lancement du démon NetRom</a></h2>
<p>Le noyau Linux gère le protocole NetRom et assure la
commutation mais il ne prend pas en charge certaines fonctions. Le
démon NetRom maintient les tables de routage NetRom et
diffuse les messages de routage NetRom. Il se lance via :</p>
<blockquote>
<pre>
<code># /usr/sbin/netromd -i
</code>
</pre></blockquote>
Le fichier <code>/proc/net/nr_neigh</code> devrait progressivement
se remplir d'informations concernant vos voisins NetRom.
<p>N'oubliez pas d'inclure la commande
<code>/usr/sbin/netromd</code> dans vos scripts de démarrage
ou d'en créer un dédié à
l'automatisation du processus.</p>
<h2><a name="ss8.5">8.5 Routage NetRom</a></h2>
<p>Peut-être voudrez-vous mettre en place des routes
statiques pour certains hôtes particuliers. La commande
<em>nrparms</em> dispose d'une telle fonction. Reportez-vous
à la page de <em>man</em> pour une description
complète. A titre d'exemple, pour indiquer sur mon port
AX.25 `<code>radio</code>' une route NetRom vers le
<code>#MINTO:VK2XLZ-10</code> en passant par mon voisin
<code>VK2SUT-9</code> :</p>
<blockquote>
<pre>
<code># /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9
</code>
</pre></blockquote>
<p><em>nrparms</em> permet également de créer
manuellement de nouveau voisins. La commande suivante crée
un voisin NetRom <code>VK2SUT-9</code> d'une qualité de
<code>120</code> qui ne sera pas supprimé
automatiquement.</p>
<blockquote>
<pre>
<code># /usr/sbin/nrparms -routes radio VK2SUT-9 + 120
</code>
</pre></blockquote>
<h2><a name="s9">9. TCP/IP sur une interface NetRom</a></h2>
<p>La configuration ressemble à celle d'AX.25 pour
TCP/IP.</p>
<p>Soit vous précisez l'adresse IP et le MTU avec
<em>nrattach</em>, soit vous utilisez les commandes
<em>ifconfig</em> et <em>route</em>. Il vous faudra ajouter
à la main les caractéristiques <em>arp</em> des
hôtes concernés par votre routage puisque votre
machine ne dispose d'aucun mécanisme pour déterminer
une adresse NetRom utilisable afin d'atteindre une interface IP
particulière.</p>
<p>Pour créer une interface <code>nr0</code> d'adresse IP
<code>44.136.8.5</code>, de MTU <code>512</code> et
configuré conformément aux spécifications du
fichier <code>/etc/ax25/nrports</code> relatives au port NetRom
appelé <code>netrom</code> :</p>
<blockquote>
<pre>
<code># /usr/sbin/nrattach -i 44.136.8.5 -m 512 netrom
# route add 44.136.8.5 nr0
</code>
</pre></blockquote>
<p>Autre méthode :</p>
<blockquote>
<pre>
<code># /usr/sbin/nrattach netrom
# ifconfig nr0 44.136.8.5 netmask 255.255.255.0 hw netrom VK2KTJ-9
# route add 44.136.8.5 nr0
</code>
</pre></blockquote>
En ce qui concerne le volet arp et le routage, pour joindre
l'interface IP <code>44.136.80.4</code> à l'adresse NetRom
<code>BBS:VK3BBS</code> via un voisin NetRom d'identifiant
<code>VK2SUT-0</code>, on exécuterait :
<blockquote>
<pre>
<code># route add 44.136.80.4 nr0
# arp -t netrom -s 44.136.80.4 vk2sut-0
# nrparms -nodes vk3bbs + BBS 120 6 sl0 vk2sut-0
</code>
</pre></blockquote>
Les arguments `<code>120</code>' et `<code>6</code>' passés
à la <em>nrparms</em> fixent les paramètres de
qualité et d'obsolescence NetRom pour la route.
<h2><a name="s10">10. Configuration des ports Rose</a></h2>
<p>Le protocole de transmission de paquets Rose est semblable
à la couche trois des spécifications X.25. La gestion
Rose du noyau est une version <b>modifiée</b> de <a href=
"http://fpac.lmi.ecp.fr/f1oat/f1oat.html">FPAC Rose
implementation</a>.</p>
<p>La couche Rose s'appuie sur les ports AX.25 que vous
définissez. La procédure détaillée
ci-dessous s'appliquera à toutes les interfaces NetRom que
vous souhaiterez définir.</p>
<h2><a name="ss10.1">10.1 Le fichier
<code>/etc/ax25/rsports</code></a></h2>
<p>Ce fichier est l'analogue pour les ports Rose du fichier
<code>/etc/ax25/axports</code> pour les ports AX.25.</p>
<p>Le format du fichier est le suivant :</p>
<blockquote>
<pre>
<code>name addresss description
</code>
</pre></blockquote>
Avec :
<dl>
<dt><b>name</b></dt>
<dd>
<p>nom affecté au port.</p>
</dd>
<dt><b>address</b></dt>
<dd>
<p>adresse Rose sur 10 digits.</p>
</dd>
<dt><b>description</b></dt>
<dd>
<p>commentaire.</p>
</dd>
</dl>
Par exemple :
<blockquote>
<pre>
<code>rose 5050294760 Rose Port
</code>
</pre></blockquote>
Notez que Rose emploie par défaut l'identifiant/ssid du port
AX.25.
<p>La commande <em>rsparms</em> permet de modifier l'identifiant
Rose. Par exemple, pour que Linux se serve de l'identifiant
<code>VK2KTJ-10</code> pour le trafic Rose sur tous les ports AX.25
.</p>
<blockquote>
<pre>
<code># /usr/sbin/rsprams -call VK2KTJ-10
</code>
</pre></blockquote>
<h2><a name="ss10.2">10.2 Création des
périphériques réseau Rose</a></h2>
<p>Une fois le fichier <code>/etc/ax25/rsports</code> mis au point,
vous pouvez créer les périphériques Rose en
reprenant la démarche AX.25. Vous emploierez la commande
<em>rsattach</em> qui crée des périphériques
sous l'appellation `<code>rose[0-5]</code>' (la première
invocation produit `<code>rose0</code>', la seconde
`<code>rose1</code>' etc...). Par exemple :</p>
<blockquote>
<pre>
<code># rsattach rose
</code>
</pre></blockquote>
Cette commande active le périphérique Rose
(<code>rose0</code>) nommé `<code>rose</code>'
configuré conformément au contenu du fichier
<code>/etc/ax25/rsports</code>.
<h2><a name="ss10.3">10.3 Routage Rose</a></h2>
<p>Le protocole Rose ne gère pour l'instant que le routage
statique. Il se définit par le biais de la commande
<em>rsparms</em>.</p>
<p>Par exemple, pour indiquer une route vers le noeud Rose
<code>5050295502</code> via un port AX.25 nommé
`<code>radio</code>' dans le fichier <code>/etc/ax25/axports</code>
en passant par le voisin d'identificateur
<code>VK2XLZ</code> :</p>
<blockquote>
<pre>
<code># rsparms -nodes add 5050295502 radio vk2xlz
</code>
</pre></blockquote>
<p>Un masque vous permettra éventuellement de regrouper
différentes destinations Rose sur une seule route. Par
exemple :</p>
<blockquote>
<pre>
<code># rsparms -nodes add 5050295502/4 radio vk2xlz
</code>
</pre></blockquote>
On retrouve l'exemple précédent à ceci
près que toute adresse de destination dont les quatre
premiers digits correspondent (toute adresse commençant par
<code>5050</code> donc) sera routée. La variante suivante
s'avère sûrement la moins ambiguë :
<blockquote>
<pre>
<code># rsparms -nodes add 5050/4 radio vk2xlz
</code>
</pre></blockquote>
<h2><a name="s11">11. Communications AX.25/NetRom/Rose</a></h2>
<p>Maintenant que vos interfaces AX.25, NetRom et Rose sont
activées, vous devriez être capable de procéder
à des essais.</p>
<p>Le paquetage des utilitaires AX.25 comprend le programme
`<em>call</em>' qui sert d'intermédiaire pour AX.25, NetRom
et Rose.</p>
<p>Un appel AX.25 :</p>
<blockquote>
<pre>
<code>/usr/bin/call radio VK2DAY via VK2SUT
</code>
</pre></blockquote>
<p>Un appel NetRom vers un noeud d'alias
<code>SUNBBS</code> :</p>
<blockquote>
<pre>
<code>/usr/bin/call netrom SUNBBS
</code>
</pre></blockquote>
<p>Un appel Rose pour <code>HEARD</code> au noeud
<code>5050882960</code> :</p>
<blockquote>
<pre>
<code>/usr/bin/call rose HEARD 5050882960
</code>
</pre></blockquote>
<p>Remarque : vous devez préciser à
<em>call</em> le port à employer, vu que le même noeud
de destination peut être joignable via n'importe lequel des
ports que vous aurez configurés.</p>
<p><em>call</em> fournit un terminal de contrôle en mode
ligne de commande pour les appels AX.25. Les lignes
commençant par `<code>~</code>' sont identifiées
comme des commandes. La commande `<code>~.</code>' coupe la
communication.</p>
<p>Reportez-vous à la page de man sous <code>/usr/man</code>
pour davantage d'informations.</p>
<h2><a name="s12">12. Configurer Linux pour accepter les
connexions</a></h2>
<p>Linux est un système d'exploitation puissant qui
présente beaucoup de flexibilité dans sa
configuration. Le coût de cette flexibilité se
retrouve dans la mise au point de la configuration
souhaitée. Avant d'être en mesure d'accepter les
connexions AX.25, NetRom ou Rose, vous devez vous poser un certain
nombre de questions. La plus importante : "Que vais-je laisser
de visible aux utilisateurs une fois connectés ?" Des gens
ont mis au point de sympathiques petites applications qui
fournissent des services aux appelants tels <em>pms</em> ou, plus
évolué, <em>node</em> (tous deux sont compris dans le
paquetage des utilitaires AX.25). Vous pouvez également
souhaiter offrir une invite d'identification afin que les
utilisateurs disposent d'un shell ou même écrire vos
propres programmes tels une base de données maison ou un
jeu. Quoi que vous fassiez, il faut spécifier à AX.25
le programme à exécuter quand une connexion
s'établit.</p>
<p>Le démon <em>ax25d</em> joue un rôle similaire
à celui rempli par <em>inetd</em> pour les connexion TCP/IP
entre machines UNIX. Il se met à l'écoute des
connexions entrantes et lorsqu'il en détecte une, il examine
par l'intermédiaire d'un fichier de configuration le
programme à lancer auquel il transmet la connexion.
Puisqu'il s'agit d'un outil standard de gestion des appels AX.25,
NetRom et Rose, je vais à présent décrire les
étapes de sa configuration.</p>
<h2><a name="ss12.1">12.1 Le fichier
<code>/etc/ax25/ax25d.conf</code></a></h2>
<p>Ce fichier contient la configuration du démon
<em>ax25d</em> en charge des connexions AX.25, NetRom et Rose.</p>
<p>Bien que le fichier paraisse un peu cryptique au premier abord,
il s'avère rapidement des plus simples à l'usage,
avec quelques pièges à éviter.</p>
<p>Le format général du fichier est le
suivant :</p>
<blockquote>
<pre>
<code># Je suis un commentaire qu'ax25d ignorera
[nom de port] || <nom de port> || {nom de port}
<interlocuteur1> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <commande> <args>
<interlocuteur2> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <commande> <args>
parametres window T1 T2 T3 idle N2 <mode>
<interlocuteur3> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <commande> <args>
...
default window T1 T2 T3 idle N2 <mode> <uid> <cmd> <commande> <args>
</code>
</pre></blockquote>
<p>Avec :</p>
<dl>
<dt><b>#</b></dt>
<dd>
<p>en début de ligne pour indiquer un commentaire
ignoré du programme <em>ax25d</em></p>
</dd>
<dt><b><port_name></b></dt>
<dd>
<p>nom du port AX.25, NetRom ou Rose tel que spécifié
dans un des fichiers <code>/etc/ax25/axports</code>,
<code>/etc/ax25/nrports</code> ou <code>/etc/ax25/rsports</code>.
Le nom du port est entouré par `<code>[]</code>' s'il s'agit
d'un port AX.25, `<code><></code>' si c'est un port NetRom ou
`<code>{}</code>' pour un port Rose. Ce champ admet une variante
qui précède le nom du port par `<code>callsign/ssid
via</code>' pour indiquer que vous voulez accepter les appels vers
l'identificateur cité par l'intermédiaire de cette
interface. Un exemple l'illustrera.</p>
</dd>
<dt><b><peer></b></dt>
<dd>
<p>est l'identifiant du noeud auquel la configuration s'applique.
Si vous ne spécifiez pas de ssid, tous seront
considérés comme valables.</p>
</dd>
<dt><b>window</b></dt>
<dd>
<p>paramètre de fenêtre AX.25 (K) ou valeur de
MAXFRAMDE pour cette configuration.</p>
</dd>
<dt><b>T1</b></dt>
<dd>
<p>délai de retransmission de trame (T1) exprimé en
demi-secondes.</p>
</dd>
<dt><b>T2</b></dt>
<dd>
<p>délai d'attente par le logiciel AX.25 d'une seconde trame
avant de préparer une réponse. S'exprime en
secondes.</p>
</dd>
<dt><b>T3</b></dt>
<dd>
<p>délai d'inactivité avant qu'une connexion inactive
ne soit coupée. S'exprime en secondes.</p>
</dd>
<dt><b>idle</b></dt>
<dd>
<p>période d'inactivité en secondes.</p>
</dd>
<dt><b>N2</b></dt>
<dd>
<p>nombre d'essais de retransmission avant qu'une connexion ne soit
coupée.</p>
</dd>
<dt><b><mode></b></dt>
<dd>
<p>procure un mécanisme d'établissement de certains
types de permissions. Les modes sont activés ou
inhibés grâce à une combinaison de
caractères représentant chacun un droit.
L'accentuation ne joue pas et les caractères doivent former
un bloc ininterrompu.</p>
<dl>
<dt><b>u/U</b></dt>
<dd>
<p>UTMP - non-supporté</p>
</dd>
<dt><b>v/V</b></dt>
<dd>
<p>Validate call - non-supporté</p>
</dd>
<dt><b>q/Q</b></dt>
<dd>
<p>Quiet - pas d'enregistrement des connexions</p>
</dd>
<dt><b>n/N</b></dt>
<dd>
<p>check NetRom Neighbour - non-supporté</p>
</dd>
<dt><b>d/D</b></dt>
<dd>
<p>Disallow Digipeaters - les connexions doivent être
directes</p>
</dd>
<dt><b>l/L</b></dt>
<dd>
<p>Lockout - connexion interdite</p>
</dd>
<dt><b>*/0</b></dt>
<dd>
<p>marker - marqueur, pas de mode spécifique</p>
</dd>
</dl>
</dd>
<dt><b><uid></b></dt>
<dd>
<p>userid sous laquelle le programme maintenant la connexion sera
exécuté.</p>
</dd>
<dt><b><cmd></b></dt>
<dd>
<p>nom complet de la commande à lancer, sans arguments.</p>
</dd>
<dt><b><cmd-name></b></dt>
<dd>
<p>texte qui apparaîtra à l'invocation de <em>ps</em>
comme commande du programme (en général la même
chose que <cmd> mais sans le chemin d'accès).</p>
</dd>
<dt><b><arguments></b></dt>
<dd>
<p>arguments de ligne de commande passés à
<:cmd> lorsqu'il est lancé. Les éléments
suivants permettent de passer des informations
utilisées :</p>
<dl>
<dt><b>%d</b></dt>
<dd>
<p>nom du port recevant la connexion</p>
</dd>
<dt><b>%U</b></dt>
<dd>
<p>identificateur AX.25 de l'extrémité
connectée, sans ssid, en majuscules</p>
</dd>
<dt><b>%u</b></dt>
<dd>
<p>identificateur AX.25 de l'extrémité
connectée, sans ssid, en minuscules</p>
</dd>
<dt><b>%S</b></dt>
<dd>
<p>identificateur AX.25 de l'extrémité
connectée, avec ssid, en majuscules</p>
</dd>
<dt><b>%s</b></dt>
<dd>
<p>identificateur AX.25 de l'extrémité
connectée, avec ssid, en minuscules</p>
</dd>
<dt><b>%P</b></dt>
<dd>
<p>identificateur AX.25 du noeud distant initiateur de la
connexion, sans ssid, en majuscules</p>
</dd>
<dt><b>%p</b></dt>
<dd>
<p>identificateur AX.25 du noeud distant initiateur de la
connexion, sans ssid, en minuscules</p>
</dd>
<dt><b>%R</b></dt>
<dd>
<p>identificateur AX.25 du noeud distant initiateur de la
connexion, avec ssid, en majuscules</p>
</dd>
<dt><b>%r</b></dt>
<dd>
<p>identificateur AX.25 du noeud distant initiateur de la
connexion, avec ssid, en minuscules</p>
</dd>
</dl>
</dd>
</dl>
<p>Ue section au format précédent est requise pour
chaque interface AX.25, NetRom ou Rose que vous voulez voir
accepter des connexions.</p>
<p>Le paragraphe comprend deux lignes particulières, l'une
commençant par la chaîne `<code>parameters</code>' et
l'autre par la chaîne `<code>default</code>' (il y a une
différence).</p>
<p>`<code>default</code>' couvre tous les cas qui ne sont pas
spécifiés ailleurs. Ainsi, tous les appels sur
l'interface <interface_call> ne disposant pas d'une
règle spécifique se retrouvent dans la rubrique
`<code>default</code>'. En l'absence d'une telle section, toutes
les connexions hors règle sont immédiatement
interrompues sans autre forme de procès.</p>
<p>`<code>parameters</code>' est plus subtil et dissimule le
piège mentionné précédemment. Si le
caractère `*' est présent dans un champ, une valeur
par défaut issue de la section `<code>parameters</code>' est
employée. Le noyau possède d'ailleurs une liste de
valeurs utilisées en l'absence de `<code>parameters</code>'.
Le danger réside en ce que les entrées
spécifiées via `<code>parameters</code>' ne
s'appliquent qu'aux règles qui les suivent. Une même
interface peut comporter plusieurs entrées
`<code>parameters</code>'. Notez que les règles
`<code>parameters</code>' ne permettent pas de positionner les
champs `<code>uid</code>' et `<code>command</code>'.</p>
<h2><a name="ss12.2">12.2 Un exemple de fichier
<code>ax25d.conf</code></a></h2>
<blockquote>
<pre>
<code># ax25d.conf pour VK2KTJ - 02/03/97
# Ce fichier de configuration utilise le port AX.25 défini plus haut.
# <peer> Win T1 T2 T3 idl N2 <mode> <uid> <exec> <argv[0]>[<args....>]
[VK2KTJ-0 via radio]
parameters 1 10 * * * * *
VK2XLZ * * * * * * * root /usr/sbin/axspawn axspawn %u +
VK2DAY * * * * * * * root /usr/sbin/axspawn axspawn %u +
NOCALL * * * * * * L
default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj
[VK2KTJ-1 via radio]
default * * * * * 0 root /usr/sbin/node node
<netrom>
parameters 1 10 * * * * *
NOCALL * * * * * * L
default * * * * * * 0 root /usr/sbin/node node
{VK2KTJ-0 via rose}
parameters 1 10 * * * * *
VK2XLZ * * * * * * * root /usr/sbin/axspawn axspawn %u +
VK2DAY * * * * * * * root /usr/sbin/axspawn axspawn %u +
NOCALL * * * * * * L
default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj
{VK2KTJ-1 via rose}
default * * * * * 0 root /usr/sbin/node node radio
</code>
</pre></blockquote>
<p>Dans cet exemple, toute personne réclamant une connexion
via l'identificateur `<code>VK2KTJ-0</code>' du port AX.25
`<code>radio</code>' se verra appliquer les règles
suivantes :</p>
<p>Tout appel depuis un identifiant `NOCALL' se verra
rejeté. Notez l'emploi du mode `L'.</p>
<p>La ligne <code>parameters</code> modifie deux paramètres
par défaut du noyau (Window et T1) et exécutera
<em>/usr/sbin/axspawn</em>. Les instances de
<em>/usr/sbin/axspawn</em> appelées ainsi apparaîtront
en tant que <em>axspawn</em> dans un affichage issu de <em>ps</em>.
Les deux lignes qui suivent définissent deux stations
auxquelles s'appliqueront les permissions.</p>
<p>La dernière ligne de la section est la règle
fourre-tout appliquée au reste des connexions (VK2XLZ et
VK2DAY inclus dès lors qu'ils ont recours à un ssid
différent de -1). Tous les paramètres prennent leurs
valeurs par défaut et le programme <em>pms</em> sera
lancé avec un argument de ligne de commande
spécifiant une connexion AX.25 d'identifiant
<code>VK2KTJ</code> (reportez-vous à la partie
`Configuration du PMS' pour davantage de détails).</p>
<p>La configuration suivante accepte les appels à
<code>VK2KTJ-1</code> via le port <code>radio</code>. Le programme
<em>node</em> est exécuté à chaque
connexion.</p>
<p>Vient ensuite une spécification de connexions NetRom
(notez l'emploi des signes inférieur et supérieur
à la place des crochets). Toute personne se connectant via
le port `<code>netrom</code>' déclenche le programme
<em>node</em> si son identifiant est différent de
`<code>NOCALL</code>'. Dans le cas contraire, tout accès est
refusé.</p>
<p>Les deux dernières configurations concernent des
connexions entrantes Rose, la première pour ceux qui
appellent le `<code>VK2KTJ-0</code>' sur notre noeud Rose et la
seconde pour ceux qui emploient le `<code>VK2KTJ-1</code>'. Elles
fonctionnent de la même façon. Notez l'emploi des
accolades qui indiquent des ports Rose.</p>
<p>L'exemple manque un peu de naturel mais je crois qu'il illustre
clairement les propriétés importantes de la syntaxe
du fichier de configuration. La page de <em>man</em> explique dans
son intégralité le contenu du fichier
<code>ax25d.conf</code>. Le paquetage <code>ax25-utils</code>
inclut un exemple plus détaillé qui pourrait
également vous être utile.</p>
<h2><a name="ss12.3">12.3 Lancer <em>ax25d</em></a></h2>
<p>Une fois les deux fichiers de configuration mis au point, lancez
la commande :</p>
<blockquote>
<pre>
<code># /usr/sbin/ax25d
</code>
</pre></blockquote>
À présent, les gens devraient pouvoir se connecter en
AX.25 à votre machine. N'oubliez pas de modifier les
fichiers de commande de démarrage du système de
façon que <code>ax25d</code> soit invoqué
automatiquement à chaque réinitialisation de la
station.
<h2><a name="s13">13. Le logiciel <em>node</em></a></h2>
<p>Le logiciel <em>node</em> a été
développé par Tomi Manninen
<code><tomi.manninen@hut.fi></code>. Il a été
conçu à partir du programme PMS et offre une
fonctionnalité de noeud facilement configurable. Une fois
les utilisateurs connectés, il leur permet de se servir de
telnet, de NetRom, de Rose et de AX.25 vers l'extérieur
ainsi que d'obtenir diverses informations telles finger, la liste
des noeuds et des écoutes etc. Le noeud peut être
configuré assez simplement pour exécuter n'importe
quelle commande Linux.</p>
<p>Normalement, le noeud sera invoqué par <em>ax25d</em>,
bien qu'il puisse également être appelé par le
démon IP <em>inetd</em> pour permettre aux utilisateurs
d'obtenir un accès telnet à votre machine. Le
lancement depuis la ligne de commande est également
possible.</p>
<h2><a name="ss13.1">13.1 Le fichier
<code>/etc/ax25/node.conf</code></a></h2>
<p><code>node.conf</code> est un fichier texte qui spécifie
la configuration du noeud. Son format est le suivant :</p>
<blockquote>
<pre>
<code># /etc/ax25/node.conf
# Fichier de configuration du programme node(8)
#
# Un '#' indique une ligne de commentaire qui sera ignorée.
# Nom d'hôte de la machine noeud
hostname radio.gw.vk2ktj.ampr.org
# Réseau local
# définit ce qui doit être considéré comme 'local' du point de vue de la
# vérification des permissions grâce à nodes.perms.
localnet 44.136.8.96/29
# Ports cachés
# rend certains ports invisibles aux utilisateurs. Les ports n'apparaîtront pas
# via la commande Ports.
hiddenports rose netrom
# Identification du noeud
# apparaîtra à l'invite du noeud
NodeId LINUX:VK2KTJ-9
# Port NetRom
# nom du port NetRom qui employé pour les connexions NetRom sortant du noeud
NrPort netrom
# Délai d'inactivité du noeud
# en secondes
idletimout 1800
# Délai d'inactivité des connexions
# en secondes
conntimeout 1800
# Reprise de connexion
# indique si les utilisateurs doivent être reconnectés spontanément en cas
# de rupture de la connexion distante ou bien s'ils doivent être complètement
# déconnectés.
reconnect on
# Alias
alias CONV "telnet vk1xwt.ampr.org 3600"
alias BBS "connect radio vk2xsb"
# Alias (commandes externes)
# exécution de commandes externes au noeud
# extcmd <cmd> <flag> <userid> <commande>
# Flag == 1 pour l'instant
# <commande> a le même format que dans ax25d.conf
extcmd PMS 1 root /usr/sbin/pms pms -u %U -o VK2KTJ
# Enregistrement
# le niveau 3 est le plus détaillé, 0 désactive l'enregistrement
loglevel 3
# Caractère de contrôle
# 20 = (Control-T)
EscapeChar 20
</code>
</pre></blockquote>
<h2><a name="ss13.2">13.2 Le fichier
<code>/etc/ax25/node.perms</code></a></h2>
<p><em>node</em> affecte des permissions aux utilisateurs. On
décide ainsi des utilisateurs qui ont le droit ou non
d'employer des commandes telles (T)elnet ou (C)onnect.
<code>node.perms</code> contient cinq champs. Le caractère
`*' dans l'un d'eux indique une absence de contraintes pour son
application. On construit ainsi facilement des règles
applicables par défaut.</p>
<dl>
<dt><b>user</b></dt>
<dd>
<p>Le premier champ indique l'identifiant d'appel concerné
par les permissions. Une éventuelle partie ssid sera
ignorée.</p>
</dd>
<dt><b>method</b></dt>
<dd>
<p>Chaque protocole et chaque méthode d'accès
disposent également de permissions. Par exemple, les
utilisateurs connectés via AX.25 ou NetRom peuvent
être autorisés à se servir de (C)onnect tandis
que ceux issus d'une session telnet depuis un noeud non-local s'en
verront refuser l'accès. Le deuxième champ
spécifie donc à quelle méthode d'accès
les permissions s'appliquent. Voici les classes de méthodes
d'accès :</p>
<blockquote>
<pre>
<code>method description
------ -----------------------------------------------------------
ampr session telnet depuis une adresse amprnet (44.0.0.0)
ax25 connexion AX.25
host node invoqué depuis la ligne de commande
inet session telnet depuis une adresse non locale, de type non amprnet
local session telent depuis un hôte 'local'
netrom connexion NetRom
rose connexion Rose
* n'importe quelle connexion
</code>
</pre></blockquote>
</dd>
<dt><b>port</b></dt>
<dd>
<p>Vous pouvez également contrôler les permissions
pour les utilisateurs AX.25 sur la base des ports employés.
Le troisième champ contient un nom de port si vous
décidez d'employer cette possibilité (disponible
seulement pour les connexions AX.25).</p>
</dd>
<dt><b>password</b></dt>
<dd>
<p>Un mot de passe peut également être demandé
lors de l'établissement de la connexion. Cela s'avère
pratique pour protéger des comptes utilisateurs
spécifiques disposant de privilèges
particulièrement élevés. Si le
quatrième champ est positionné, il correspond au mot
de passe attendu.</p>
</dd>
<dt><b>permissions</b></dt>
<dd>
<p>Les permissions sont fixées par le biais du dernier champ
de chaque ligne. L'information est codée au niveau du bit,
chaque service disposant d'un bit qui indique s'il est ou non
activé. Ci-suit la liste des services et la position du
champ avec le bit positionné :</p>
<blockquote>
<pre>
<code>valeur description
------ -------------------------------------------------
1 Login
2 (C)onnect AX.25
4 (C)onnect NetRom
8 (T)elnet vers les hôtes locaux
16 (T)elnet vers amprnet (44.0.0.0)
32 (T)elnet vers les hôtes non-locaux, de type non-amprnet
64 (C)onnect AX.25 pour les ports cachés
128 (C)onnect Rose
</code>
</pre></blockquote>
On additionne ensuite les puissances de deux associées aux
bits des permissions activées. Le résultat va dans le
cinquième champ.</dd>
</dl>
<p>Un exemple de fichier <code>nodes.perms</code> :</p>
<blockquote>
<pre>
<code># /etc/ax25/node.perms
#
# L'opérateur a pour identité VK2KTJ, s'identifie par le mot de passe 'secret'
# et dispose de toutes les permissions pour toutes les méthodes de connexion.
vk2ktj * * secret 255
# Les utilisateurs suivants sont exclus
NOCALL * * * 0
PK232 * * * 0
PMS * * * 0
# Les utilisateur d'INET n'ont pas le droit de se connecter
* inet * * 0
# Les utilisateurs AX.25, NetRom, locaux, liés à l'hôte ou AMPR disposent de
# (C)onnect et de (T)elnet vers les hôtes locaux et ampr mais se voient
# interdire les autres adresses IP.
* ax25 * * 159
* netrom * * 159
* local * * 159
* host * * 159
* ampr * * 159
</code>
</pre></blockquote>
<h2><a name="ss13.3">13.3 Exécution de <em>node</em> depuis
<em>ax25d</em></a></h2>
<p>L'invocation du programme <em>node</em> par le démon
<em>ax25d</em> nécessite l'ajout de règles
appropriées au fichier <code>/etc/ax25/ax25d.conf</code>. Je
souhaitais une configuration telle que les utilisateurs puissent se
connecter soit à <em>node</em> soit à un service de
leur choix. <em>ax25d</em> l'autorise par le biais d'une
création astucieuse d'alias de ports. Par exemple, partant
de la configuration d'<em>ax25d</em> donnée plus haut, on
veut que tous les utilisateurs se connectant à
<code>VK2KTJ-1</code> reçoivent le noeud. Pour cela, on
ajoute la règle suivante au fichier
<code>/etc/ax25/ax25d.conf</code> :</p>
<blockquote>
<pre>
<code>[vk2ktj-1 via radio]
default * * * * * 0 root /usr/sbin/node node
</code>
</pre></blockquote>
Linux répondra à toute demande de connexion sur le
port AX.25 `<code>radio</code>' d'identifiant
`<code>VK2KTJ-1</code>' en exécutant le programme
<em>nde</em>.
<h2><a name="ss13.4">13.4 Exécution de <em>node</em> depuis
<em>inetd</em></a></h2>
<p>Offrir la possibilité d'ouvrir une session telnet sur
votre machine et d'accéder au programme <em>node</em> est
une tache plutôt facile. Commencez par choisir le port auquel
les utilisateurs se connecteront. Dans mon exemple, j'ai pris
arbitrairement le port 3694 bien que Tomi détaille dans sa
documentation la marche à suivre pour remplacer le
démon telnet usuel par le programme <em>node</em>.</p>
<p>Il faut modifier deux fichiers.</p>
<p>Ajouter au fichier <code>/etc/services</code> :</p>
<blockquote>
<pre>
<code>node 3694/tcp #OH2BNS's node software
</code>
</pre></blockquote>
et au fichier <code>/etc/inetd.conf</code> :
<blockquote>
<pre>
<code>node stream tcp nowait root /usr/sbin/node node
</code>
</pre></blockquote>
Une fois <em>inetd</em> redémarré, tout utilisateur
effectuant un telnet vers le port 3694 de votre machine se verra
demander un login et, selon la configuration, un mot de passe avant
d'être connecté à <em>node</em>.
<h2><a name="s14">14. Configuration de <em>axspawn</em>.</a></h2>
<p><em>axspawn</em> permet aux stations AX.25 qui se connectent
d'ouvrir une session sur votre machine. Il peut être
lancé par le programme <em>ax25d</em> décrit
ci-dessus d'une façon similaire à <em>node</em>. Pour
ouvrir une session utilisateur, vous ajouterez une variante de la
ligne suivante au fichier
<code>/etc/ax25/ax25d.conf</code> :</p>
<blockquote>
<pre>
<code>default * * * * * 1 root /usr/sbin/axspawn axspawn %u
</code>
</pre></blockquote>
Si la ligne s'achève sur le caractère <code>+</code>,
l'utilisateur devra appuyer sur la touche d'entrée avant de
pouvoir s'identifier. Par défaut, il n'y a pas d'attente.
Toutes les configurations d'hôtes qui suivent la ligne
précédente déclencheront l'appel
d'<em>axspawn</em> lorsqu'ils se connecteront. Quand
<em>axspawn</em> s'exécute, il vérifie tout d'abord
que l'argument de ligne de commande fourni est un identifiant
licite, supprime le SSID puis parcourt le fichier
<code>/etc/passwd</code> pour voir si l'utilisateur dispose d'un
compte. Si c'est le cas et que le mot de passe associé est
<code>""</code> (vide) ou <code>+</code>, la session utilisateur
est ouverte. En présence d'un autre mot de passe, celui-ci
est demandé. Si le compte n'existe pas, <em>axspawn</em>
peut être configuré de façon à en
créer un automatiquement.
<h2><a name="ss14.1">14.1 Mise au point du fichier
<code>/etc/ax25/axspawn.conf</code></a></h2>
<p>Le format du fichier est le suivant :</p>
<blockquote>
<pre>
<code># /etc/ax25/axspawn.conf
#
# creation automatique de comptes utilisateur
create yes
#
# compte d'invite en l'absence de creation automatique et si tout le reste
# echoue. Se desactive ave "no"
guest no
#
# id ou nom du groupe pour le compte automatique
group ax25
#
# id de depart
first_uid 2001
#
# id maximale
max_uid 3000
#
# emplacement des repertoires utilisateurs crees automatiquement
home /home/ax25
#
# shell utilisateur
shell /bin/bash
#
# lien entre les id utilisateur et le numero d'identification pour les
# connexions sortantes
associate yes
</code>
</pre></blockquote>
<p>Détail des huit caractéristiques configurables de
<em>axspawn</em> :</p>
<dl>
<dt><b>#</b></dt>
<dd>
<p>indique un commentaire.</p>
</dd>
<dt><b>create</b></dt>
<dd>
<p>si ce champ est positionné à <code>yes</code>
alors <em>axspawn</em> tentera de créer un compte pour tout
utilisateur qui n'apparaît pas dans le fichier
<code>/etc/passwd</code>.</p>
</dd>
<dt><b>guest</b></dt>
<dd>
<p>fournit le nom du compte à employer pour les utilisateurs
n'en ayant pas lorsque <em>create</em> est positionné
à <code>no</code>. On y trouve souvent <code>ax25</code> ou
<code>guest</code>.</p>
</dd>
<dt><b>group</b></dt>
<dd>
<p>indique le groupe pour les utilisateurs qui n'apparaissent pas
dans le fichier <code>/etc/passwd</code>.</p>
</dd>
<dt><b>first_uid</b></dt>
<dd>
<p>valeur de départ des identités utilisateur lors de
la création automatique</p>
</dd>
<dt><b>max_uid</b></dt>
<dd>
<p>identité utilisateur maximale disponible à la
création automatique</p>
</dd>
<dt><b>home</b></dt>
<dd>
<p>répertoire dans lequel seront créés les
comptes utilisateurs</p>
</dd>
<dt><b>shell</b></dt>
<dd>
<p>shell de login des nouveaux utilisateurs</p>
</dd>
<dt><b>associate</b></dt>
<dd>
<p>indique si les connexions sortantes de l'utilisateur ont lieu
avec son identifiant d'appel personnel ou avec celui de votre
station</p>
</dd>
</dl>
<h2><a name="s15">15. Configuration de <em>pms</em></a></h2>
<p><em>pms</em> fournit un système simple de messagerie
personnelle. Il a été écrit à l'origine
par Alan Cox. Dave Brown, N2RJT,
<code><dcb@vectorbd.com></code> en a repris le
développement. Les fonctionnalités sont
restées simples : envoi de courrier électronique
au propriétaire de la station et obtention d'informations
limitée. Dave travaille actuellement à les
enrichir.</p>
<p>Il faut tenir à jour quelques fichiers contenant des
informations sur le système et ajouter les entrées
adéquates au fichier <code>ax25d.conf</code> de telle sorte
qu'il s'exécute pour les utilisateurs connectés.</p>
<h2><a name="ss15.1">15.1 Mise au point du fichier
<code>/etc/ax25/pms.motd</code></a></h2>
<p>Le fichier <code>/etc/ax25/pms.motd</code> contient
l'équivalent du message du jour affiché aux
utilisateurs après qu'ils se sont connectés et ont
reçu l'en-tête usuel de BBS. Il s'agit d'un simple
fichier texte qui sera transmis tel quel.</p>
<h2><a name="ss15.2">15.2 Mise au point du fichier
<code>/etc/ax25/pms.info</code></a></h2>
<p><code>/etc/ax25/pms.info</code> est également un simple
fichier texte dans lequel vous renseignerez des informations plus
détaillées relatives à votre station ou
à sa configuration. Ce fichier est transmis aux utilisateurs
en réponse à la commande <code>Info</code> depuis
l'invite <code>PMS</code>.</p>
<h2><a name="ss15.3">15.3 Associer les identifiants AX.25 aux
comptes utilisateurs</a></h2>
<p>Lors de l'envoi d'un courrier à destination d'un
identifiant d'appel AX.25, <em>pms</em> s'attend à trouver
une association avec une identité d'utilisateur usuelle sur
la station. La section suivante décrit le processus.</p>
<h2><a name="ss15.4">15.4 Ajout de PMS au fichier
<code>/etc/ax25/ax25d.conf</code></a></h2>
<p>L'ajout de <em>pms</em> au fichier <code>ax25d.conf</code> est
très simple. Il vous faut néanmoins garder un
élément en tête : Dave a ajouté la
prise en compte d'arguments de ligne commande à PMS afin de
gérer différentes conventions de fin de ligne. AX.25
et NetRom requièrent une fin de ligne et un saut de ligne
tandis que le standard Unix comprend juste le caractère de
fin de ligne. Par exemple, pour une entrée correspondant au
lancement par défaut de PMS à l'ouverture d'une
connexion sur un port AX.25, vous ajouteriez :</p>
<blockquote>
<pre>
<code>default 1 10 5 100 5 0 root /usr/sbin/pms pms -a -o vk2ktj
</code>
</pre></blockquote>
<p>Cette ligne exécute <em>pms</em> en lui précisant
qu'il s'agit d'une connexion AX.25 et que PMS a pour
propriétaire <code>vk2ktj</code>. Consultez la page de
<em>man</em> pour l'emploi d'autres méthodes de
connexion.</p>
<h2><a name="ss15.5">15.5 Tester PMS</a></h2>
<p>Exécutez depuis la ligne de commande :</p>
<pre>
# /usr/sbin/pms -u vk2ktj -o vk2ktj
</pre>
En remplaçant votre identifiant d'appel par le mien, cela
lancera pms en lui imposant l'emploi de la convention unix de fin
de ligne et en donnant <code>vk2ktj</code> comme identité
à l'utilisateur connecté.
<p>Vous pouvez également demander à un autre noeud de
se connecter afin de confirmer le fonctionnement de votre
<code>ax25d.conf</code>.</p>
<h2><a name="s16">16. Configuration des programmes
<em>user_call</em></a></h2>
<p>On trouve derrière ce nom les programmes
<em>ax25_call</em> et <em>netrom_call</em>. Il s'agit de programmes
très simples destinés à être
lancés par <em>ax25d</em> pour automatiser les connexions
depuis des hôtes distants. On peut bien sûr les
employer dans des scripts ou via d'autres démons tels
<em>node</em>.</p>
<p>Ils équivalent au programme <em>call</em> et n'effectuent
aucun traitement sur les données, ce qui vous épargne
le problème des conversions de fin de lignes.</p>
<p>Un exemple pour commencer. On suppose que vous disposez d'un
petit réseau personnel, d'une station Linux tenant lieu de
passerelle radio et d'une autre machine -- on prendra un noeud
BPQ -- qui lui est connectée par un lien ethernet.</p>
<p>En principe, si vous voulez que les utilisateurs radio puissent
joindre le noeud BPQ, il leur faudra le faire par
l'intermédiaire de votre noeud Linux ou se connecter au
démon node puis établir la connexion.
<em>ax25_call</em> peut simplifier le processus s'il est
invoqué par <em>ax25d</em>.</p>
<p>Prenons le cas d'un noeud BPQ d'identifiant
<code>VK2KTJ-9</code>, la station Linux étant munie d'un
port AX.25/ethernet nommé `<code>bpq</code>'.
`<code>radio</code>' désignera le port radio de la machine
passerelle.</p>
<p>Un enregistrement dans le fichier
<code>/etc/ax25/ax25d.conf</code> du type :</p>
<blockquote>
<pre>
<code>[VK2KTJ-1 via radio]
default * * * * * * *
root /usr/sbin/ax25_call ax25_call bpq %u vk2ktj-9
</code>
</pre></blockquote>
permet aux les connexions directes à `<code>VK2KTJ-1</code>'
qui n'est autre que le démon Linux <em>ax25d</em>, celui ci
les commutant automatiquement sur un lien AX.25 à
`<code>VK2KTJ-9</code>' via l'interface `<code>bpq</code>'.
<p>Vous pouvez essayer toutes sortes d'autres configurations. Les
utilitaires `<em>netrom_call</em>' et `<em>rose_call</em>'
opèrent de façon similaire. Un radioamateur en a fait
usage pour faciliter l'accès à un BBS distant. En
principe, on aurait dû entrer à la main une
chaîne de connexion démesurément longue. Il a
donc ajouté une entrée faisant apparaitre le BBS
comme une entité appartenant au réseau local,
<em>ax25d</em> servant en fait de proxy pour l'accès
à la machine distante.</p>
<h2><a name="s17">17. Configuration des commandes Rose Uplink et
Downlink</a></h2>
<p>Si vous avez l'habitude des réalisations Rose à
base de ROM, vous ne serez pas dépaysé par la
méthode d'appel AX.25 à travers un réseau
Rose. Soit un noeud local d'utilisateurs Rose d'identifiant
<code>VK2KTJ-5</code> et un appelant AX.25 souhaitant se connecter
à <code>VK5XXX</code> au noeud Rose distant
<code>5050882960</code>, il lancera la commande :</p>
<blockquote>
<pre>
<code>c vk5xxx v vk2ktj-5 5050 882960
</code>
</pre></blockquote>
<p>Au niveau du noeud distant, <code>VK5XXX</code> recevra une
connexion avec l'identifiant des utilisateurs locaux AX.25
digipétée par l'intermédiaire de l'identifiant
des noeuds Rose distants.</p>
<p>La couche protocolaire Rose de Linux ne gère pas cette
fonctionnalité dans le noyau mais les deux applications
<em>rsuplnk</em> et <em>rsdwnlnk</em> savent s'en charger.</p>
<h2><a name="ss17.1">17.1 Configuration d'une liaison Rose
descendante</a></h2>
<p>Afin que votre station Linux accepte un appel Rose et
établisse une connexion AX.25 vers une destination à
l'écoute de laquelle il n'est pas, vous devez ajouter un
enregistrement à votre fichier
<code>/etc/ax25/ax25d.conf</code>. En principe, cette ligne
correspondra au comportement par défaut pour les connexions
Rose entrantes. Par exemple, vous êtes à
l'écoute des demandes d'accès Rose aux destinations
telles <code>NODE-0</code> ou <code>HEARD-0</code> que vous
gérez localement, mais toutes les autres connexions sont
transmises à la commande <em>rsdwnlink</em> sous
l'hypothèse qu'il s'agit d'utilisateurs AX.25.</p>
<p>Une configuration typique :</p>
<blockquote>
<pre>
<code>#
{* via rose}
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/rsdwnlnk rsdwnlnk 4800 vk2ktj-5
#
</code>
</pre></blockquote>
<p>Avec cette configuration, tout appel qui effectue une connexion
Rose sur votre noeud Linux vers une destination à
l'écoute de laquelle vous ne vous tenez pas se verra
converti en une connexion AX.25 sur le port <code>4800</code> avec
<code>VK2KTJ-5</code> pour chemin.</p>
<h2><a name="ss17.2">17.2 Configuration d'un liaison Rose
montante</a></h2>
<p>Pour que votre station Linux accepte les connexions AX.25 d'une
façon similaire à celle du noeud Rose, vous ajouterez
à votre fichier <code>/etc/ax25/ax25d.conf</code> une ligne
du type :</p>
<blockquote>
<pre>
<code>#
[VK2KTJ-5* via 4800]
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/rsuplnk rsuplnk rose
#
</code>
</pre></blockquote>
<p>Notez la syntaxe particulière pour l'identifiant local.
Le caractère `<code>*</code>' indique que l'application doit
être invoquée si l'identifiant est reconnu dans le
chemin de répétition d'une connexion.</p>
<p>Avec cette configuration, un appel AX.25 peut établir des
appels Rose au moyen de la séquence présentée
dans l'introduction. Toute personne demandant un relai via
l'identifiant <code>VK2KTJ-5</code> sur le port AX.25
<code>4800</code> sera traité par la commande
<em>rsuplnk</em>.</p>
<h2><a name="s18">18. Association des identifiants AX.25 aux
comptes utilisateurs</a></h2>
<p>Dans de nombreuses situations, il est fortement souhaitable
d'associer un identifiant à compte utilisateur. Par exemple
lorsque plusieurs opérateurs radioamateurs partagent la
même machine et souhaitent employer leur propre identifiant
lorsqu'ils effectuent des appels ou lorsque des utilisateurs de PMS
désirent dialoguer avec quelqu'un en particulier sur une
station.</p>
<p>Les utilitaires AX.25 permettent de réaliser cette
association. On l'a déjà évoqué dans la
section relative à PMS mais je le répète ici
afin de m'assurer que vous ne passerez pas à
côté.</p>
<p>L'association s'effectue grâce à la commande
<em>axparms</em>. Par exemple :</p>
<blockquote>
<pre>
<code># axparms -assoc vk2ktj terry
</code>
</pre></blockquote>
Cette commande associe l'identifiant AX.25 <code>vk2ktj</code>
à l'utilisateur <code>terry</code>. Tout courrier
destiné à <code>vk2ktj</code> sur <em>pms</em> sera
transmis au compte Linux <code>terry</code>.
<p>Songez à mettre ces correspondances dans vos fichiers
<em>rc</em> de démarrage afin qu'elles soient disponibles
à chaque réinitialisation.</p>
<p><b>Notez</b> que vous ne devez surtout pas associer un
identifiant au compte <code>root</code> vu que cela pourrait poser
des problèmes de configuration à d'autres
programmes.</p>
<h2><a name="s19">19. Entrées du système de fichier
<code>/proc/</code></a></h2>
<p>Le pseudo système de fichiers <code>/proc</code> contient
divers fichiers spécifiques aux programmes AX.25 et NetRom.
Ces fichiers sont normalement employés par les utilitaires
AX.25 mais leur formatage est tel qu'ils peuvent vous
intéresser. Le format est suffisamment simple pour ne pas
nécessiter beaucoup d'explications.</p>
<dl>
<dt><b>/proc/net/arp</b></dt>
<dd>
<p> : liste des associations entre adresses IP et adresses de
niveau MAC, qu'il s'agisse d'ethernet, d'AX.25 ou d'un autre
protocole MAC.</p>
</dd>
<dt><b>/proc/net/ax25</b></dt>
<dd>
<p> : sockets AX.25 ouverts. Elles peuvent être en
attente de connexion ou actives.</p>
</dd>
<dt><b>/proc/net/ax25_bpqether</b></dt>
<dd>
<p> : identifiants AX.25 de type Ethernet BPQ.</p>
</dd>
<dt><b>/proc/net/ax25_calls</b></dt>
<dd>
<p> : équivalences entre identités
d'utilisateurs Linux et identifiants d'appel telles que
définies par la commande <em>axparms -assoc</em>.</p>
</dd>
<dt><b>/proc/net/ax25_route</b></dt>
<dd>
<p> : informations sur les chemins AX.25</p>
</dd>
<dt><b>/proc/net/nr</b></dt>
<dd>
<p> : sockets NetRom ouvertes. Elles peuvent être en
attente de connexion ou actives.</p>
</dd>
<dt><b>/proc/net/nr_neigh</b></dt>
<dd>
<p> : liste de voisins NetRom</p>
</dd>
<dt><b>/proc/net/nr_nodes</b></dt>
<dd>
<p> : informations sur les voisins NetRom</p>
</dd>
<dt><b>/proc/net/rose</b></dt>
<dd>
<p> : sockets Rose ouvertes. Elles peuvent être en
attente de connexion ou actives.</p>
</dd>
<dt><b>/proc/net/rose_nodes</b></dt>
<dd>
<p> : correspondances entre destinations et voisins Rose</p>
</dd>
<dt><b>/proc/net/rose_neigh</b></dt>
<dd>
<p> : liste de voisins Rose</p>
</dd>
<dt><b>/proc/net/rose_routes</b></dt>
<dd>
<p> : connexions Rose en cours</p>
</dd>
</dl>
<h2><a name="s20">20. Programmation réseau AX.25, NetRom,
Rose</a></h2>
<p>L'avantage le plus important lié à l'utilisation
des protocoles par paquets radioamateurs du noyau réside en
la facilité de développement des programmes et
applications qui les emploient.</p>
<p>Bien que la programmation réseau sous Unix déborde
du cadre de ce document, je vais décrire les principaux
éléments d'utilisation des protocoles AX.25, NetRom
et Rose au sein de vos programmes.</p>
<h2><a name="ss20.1">20.1 Familles d'adresses</a></h2>
<p>La programmation AX.25, NetRom et Rose est assez semblable
à la programmation TCP/IP sous Linux. LEs principales
différences se font au niveau des familles d'adresses et des
structures d'adresse à mettre en place.</p>
<p>Les noms de familles d'adresses pour AX.25, NetRom et Rose sont
respectivement <code>AF_AX.25</code>, <code>AF_NETROM</code> et
<code>AF_ROSE</code>.</p>
<h2><a name="ss20.2">20.2 Fichiers d'en-tête</a></h2>
<p>Incluez toujours les fichiers `<code>ax25.h</code>',
`<code>netrom.h</code>' ou `<code>rose.h</code>' si vous vous
servez de ces protocoles. Les débuts de fichiers-types
ressemblent à quelque chose du style :</p>
<p>Pour AX.25 :</p>
<blockquote>
<pre>
<code>#include <ax25.h>
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_AX.25
</code>
</pre></blockquote>
<p>Pour NetRom :</p>
<blockquote>
<pre>
<code>#include <ax25.h>
#include <netrom.h>
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_NETROM;
</code>
</pre></blockquote>
<p>Pour Rose :</p>
<blockquote>
<pre>
<code>#include <ax25.h>
#include <rose.h>
int s, addrlen = sizeof(struct sockaddr_rose);
struct sockaddr_rose sockaddr;
sockaddr.srose_family = AF_ROSE;
</code>
</pre></blockquote>
<h2><a name="ss20.3">20.3 Mise en forme des identifiants et
exemples</a></h2>
<p>La librairie <code>lib/ax25.a</code> du paquetage des
utilitaires AX.25 contient des routines de conversion des
identifiants. Vous pouvez bien sûr écrire les
vôtres si vous le souhaitez.</p>
<p>Les programmes <em>user_call</em> sont d'excellents exemples
à partir desquels travailler. Leur source code est inclus
dans les outils AX.25. Si vous passez un peu de temps à les
examiner, vous remarquerez rapidement que quatre-vingt-dix pour
cent du travail consiste à préparer l'ouverture des
sockets. En fait la connexion est rapide mais la mise en place
prend du temps.</p>
<p>Les exemples sont assez simples pour ne pas prêter
à confusion. Si vous avez des questions, adressez-vous
directement à la liste de diffusion <code>linux-hams</code>
où quelqu'un vous aidera sûrement.</p>
<h2><a name="s21">21. Quelques configurations-types</a></h2>
<p>Ci-suivent des exemples de configurations parmi les plus
typiques. Il ne s'agit que d'un guide dans la mesure où il y
a autant de façons de configurer un réseau qu'il y a
de réseaux disponibles mais il peut vous servir de point de
départ.</p>
<h2><a name="ss21.1">21.1 Un petit réseau Ethernet local
avec un routeur Linux vers un réseau radio local</a></h2>
<p>Nombre d'entre vous disposent de petits réseaux locaux
chez eux et désirent connecter les stations de ce
réseau à un réseau radio local. J'ai ce type
de configuration chez moi. J'ai réussi à obtenir un
bloc d'adresses contiguës que je gère par une route
unique sur mon Ethernet local. Votre coordinateur IP local vous
aidera si vous souhaitez procéder ainsi. Les adresses du
réseau Ethernet local forment un sous-ensemble des adresses
radio. Voici ma configuration personnelle avec le routeur
Linux :</p>
<blockquote>
<pre>
<code> . . . . . .
-+- .
| Reseau /---------\ . Reseau
| 44.136.8.96/29| | . 44.136.8/24 \ | /
| | Routeur | . \|/
| | | . |
| eth0 | & | . /-----\ /----------\ |
+---------------+ +-----| TNC |----| Radio |---/
| 44.136.8.97 | serveur | . \-----/ \----------/
| | | sl0
| | Linux | 44.136.8.5
| | | .
| | | .
| \_________/ .
-+- . . . . . .
</code>
</pre></blockquote>
<blockquote>
<pre>
<code>#!/bin/sh
# /etc/rc.net
# Configuration d'un port AX.25 de type KISS et d'une interface Ethernet
echo "/etc/rc.net"
echo " Configuring:"
echo -n " loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."
echo -n " ethernet:"
/sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \
broadcast 44.136.8.103 up
/sbin/route add 44.136.8.97 eth0
/sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0
echo " done."
echo -n " AX.25: "
kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800
ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255
route add -host 44.136.8.5 sl0
route add -net 44.136.8.0 window 1024 sl0
echo -n " Netrom: "
nrattach -i 44.136.8.5 netrom
echo " Routing:"
/sbin/route add default gw 44.136.8.68 window 1024 sl0
echo " default route."
echo done.
# end
</code>
</pre></blockquote>
<p><code>/etc/ax25/axports</code></p>
<blockquote>
<pre>
<code># name callsign speed paclen window description
4800 VK2KTJ-0 4800 256 2 144.800 MHz
</code>
</pre></blockquote>
<p><code>/etc/ax25/nrports</code></p>
<blockquote>
<pre>
<code># name callsign alias paclen description
netrom VK2KTJ-9 LINUX 235 Linux Switch Port
</code>
</pre></blockquote>
<p><code>/etc/ax25/nrbroadcast</code></p>
<blockquote>
<pre>
<code># ax25_name min_obs def_qual worst_qual verbose
4800 1 120 10 1
</code>
</pre></blockquote>
<ul>
<li>L'option IP_FORWARDING doit être activée dans le
noyau.</li>
<li>Les fichiers de configuration AX.25 correspondent
essentiellement à ceux donnés dans les sections
précédentes. Reportez-y vous si
nécessaire.</li>
<li>J'ai décidé d'attribuer au port radio une adresse
qui n'appartient pas au bloc attribué à mon
réseau local. Rien n'y obligeait et j'aurais dû
facilement y affecter l'adresse <code>44.136.8.97</code>.</li>
<li><code>44.136.8.68</code> correspond à ma passerelle
d'encapsulation IP dans IP et est donc ma route par
défaut.</li>
<li>Chaque station sur l'Ethernet est munie de la route
suivante :
<blockquote>
<pre>
<code>route add -net 44.0.0.0 netmask 255.0.0.0 \
gw 44.136.8.97 window 512 mss 512 eth0
</code>
</pre></blockquote>
Les paramètres <em>mss</em> et <em>window</em> me permettent
d'obtenir les meilleures performances possibles aussi bien pour les
connexions Ethernet locales que pour les accès radio.</li>
<li>smail, http, ftp et d'autres démons s'exécutent
également sur le routeur qui est ainsi la seule station
à fournir aux autres des services.</li>
<li>Le routeur est un 386DX20 d'entrée de gamme avec
20 Mo de disque et une configuration Linux minimaliste.</li>
</ul>
<h2><a name="ss21.2">21.2 Passerelle d'encapsulation IP dans
IP</a></h2>
<p>L'emploi de Linux comme passerelle d'encapsulation IP est
maintenant courant à travers le monde. Le nouveau
gestionnaire de tunnel IP accepte les routes multiples
encapsulées et rend obsolète l'ancien démon
<em>ipip</em>.</p>
<p>Un schéma classique :</p>
<blockquote>
<pre>
<code> . . . . . .
--- .
| Reseau /----------\ . Reseau
| 154.27.3/24 | | . 44.136.16/24 \ | /
| | Linux | . \|/
| | | . |
| eth0 | | . /-----\ /----------\ |
+---------------+Passerelle+-----| TNC |----| Radio |---/
| 154.27.3.20 | | . \-----/ \----------/
| | IPIP | sl0
| | | 44.136.16.1
| | | .
| | | .
| \__________/ .
--- . . . . . .
</code>
</pre></blockquote>
<p>Voici les fichiers de configuration
intéressants :</p>
<blockquote>
<pre>
<code># /etc/rc.net
# This file is a simple configuration that provides one KISS AX.25
# radio port, one Ethernet device, and utilises the kernel tunnel driver
# to perform the IPIP encapsulation/decapsulation
#
echo "/etc/rc.net"
echo " Configuring:"
#
echo -n " loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."
#
echo -n " ethernet:"
/sbin/ifconfig eth0 154.27.3.20 netmask 255.255.255.0 \
broadcast 154.27.3.255 up
/sbin/route add 154.27.3.20 eth0
/sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0
echo " done."
#
echo -n " AX.25: "
kissattach -i 44.136.16.1 -m 512 /dev/ttyS1 4800
/sbin/ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.16.255
/sbin/route add -host 44.136.16.1 sl0
/sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 sl0
#
echo -n " tunnel:"
/sbin/ifconfig tunl0 44.136.16.1 mtu 512 up
#
echo done.
#
echo -n "Routing ... "
source /etc/ipip.routes
echo done.
#
# end.
</code>
</pre></blockquote>
<p>et :</p>
<blockquote>
<pre>
<code># /etc/ipip.routes
# This file is generated using the munge script
#
/sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1
/sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17
/sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3
...
...
...
</code>
</pre></blockquote>
<p><code>/etc/ax25/axports</code></p>
<blockquote>
<pre>
<code># name callsign speed paclen window description
4800 VK2KTJ-0 4800 256 2 144.800 MHz
</code>
</pre></blockquote>
<p>Quelques points à noter :</p>
<ul>
<li>Le nouveau gestionnaire de tunnel utilise le champ <em>gw</em>
de la table de routage à la place du paramètre
<em>pointopoint</em> pour fixer l'adresse de la passerelle IPIP
distante. Il supporte ainsi plusieurs routes par interface.</li>
<li>Vous <b>pouvez</b> attribuer la même adresse à
deux interfaces réseau. Dans l'exemple courant,
<code>sl0</code> et <code>tunl0</code> ont tous deux
été munis de l'adresse IP du port Radio. La
passerelle distante récupère ainsi la bonne adresse
de votre passerelle dans les datagrammes encapsulés qu'elle
reçoit.</li>
<li>Les commandes de routage relatives aux routes
encapsulées peuvent être générées
automatiquement via une version modifiée du script
<em>munge</em> incluse ci-dessous. Les instructions de routage sont
écrites dans un fichier séparé et
appelées par la commande <code>source
/etc/ipip.routes</code> de <em>bash</em> (en supposant que vous
employez les mêmes conventions). Le fichier source doit
être au format de commande route NOS.</li>
<li>Remarquez l'emploi de l'argument <em>window</em> dans la
commande <em>route</em>. Ce paramètre améliore les
performances de la liaison radio.</li>
</ul>
<p>Le nouveau script tunnel-munge :</p>
<blockquote>
<pre>
<code>#!/bin/sh
#
# From: Ron Atkinson <n8fow@hamgate.cc.wayne.edu>
#
# This script is basically the 'munge' script written by Bdale N3EUA
# for the IPIP daemon and is modified by Ron Atkinson N8FOW. It's
# purpose is to convert a KA9Q NOS format gateways route file
# (usually called 'encap.txt') into a Linux routing table format
# for the IP tunnel driver.
#
# Usage: Gateway file on stdin, Linux route format file on stdout.
# eg. tunnel-munge < encap.txt > ampr-routes
#
# NOTE: Before you use this script be sure to check or change the
# following items:
#
# 1) Change the 'Local routes' and 'Misc user routes' sections
# to routes that apply to your own area (remove mine please!)
# 2) On the fgrep line be sure to change the IP address to YOUR
# gateway Internet address. Failure to do so will cause serious
# routing loops.
# 3) The default interface name is 'tunl0'. Make sure this is
# correct for your system.
echo "#"
echo "# IP tunnel route table built by $LOGNAME on `date`"
echo "# by tunnel-munge script v960307."
echo "#"
echo "# Local routes"
echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"
echo "#"
echo "# Misc user routes"
echo "#"
echo "# remote routes"
fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \
awk '{
split($3, s, "/")
split(s[1], n,".")
if (n[1] == "") n[1]="0"
if (n[2] == "") n[2]="0"
if (n[3] == "") n[3]="0"
if (n[4] == "") n[4]="0"
if (s[2] == "1") mask="128.0.0.0"
else if (s[2] == "2") mask="192.0.0.0"
else if (s[2] == "3") mask="224.0.0.0"
else if (s[2] == "4") mask="240.0.0.0"
else if (s[2] == "5") mask="248.0.0.0"
else if (s[2] == "6") mask="252.0.0.0"
else if (s[2] == "7") mask="254.0.0.0"
else if (s[2] == "8") mask="255.0.0.0"
else if (s[2] == "9") mask="255.128.0.0"
else if (s[2] == "10") mask="255.192.0.0"
else if (s[2] == "11") mask="255.224.0.0"
else if (s[2] == "12") mask="255.240.0.0"
else if (s[2] == "13") mask="255.248.0.0"
else if (s[2] == "14") mask="255.252.0.0"
else if (s[2] == "15") mask="255.254.0.0"
else if (s[2] == "16") mask="255.255.0.0"
else if (s[2] == "17") mask="255.255.128.0"
else if (s[2] == "18") mask="255.255.192.0"
else if (s[2] == "19") mask="255.255.224.0"
else if (s[2] == "20") mask="255.255.240.0"
else if (s[2] == "21") mask="255.255.248.0"
else if (s[2] == "22") mask="255.255.252.0"
else if (s[2] == "23") mask="255.255.254.0"
else if (s[2] == "24") mask="255.255.255.0"
else if (s[2] == "25") mask="255.255.255.128"
else if (s[2] == "26") mask="255.255.255.192"
else if (s[2] == "27") mask="255.255.255.224"
else if (s[2] == "28") mask="255.255.255.240"
else if (s[2] == "29") mask="255.255.255.248"
else if (s[2] == "30") mask="255.255.255.252"
else if (s[2] == "31") mask="255.255.255.254"
else mask="255.255.255.255"
if (mask == "255.255.255.255")
printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\
,n[1],n[2],n[3],n[4],$5
else
printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\
,n[1],n[2],n[3],n[4],$5,mask
}'
echo "#"
echo "# default the rest of amprnet via mirrorshades.ucsd.edu"
echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0"
echo "#"
echo "# the end"
</code>
</pre></blockquote>
<h2><a name="ss21.3">21.3 Configuration d'une passerelle
d'encapsulation AXIP</a></h2>
<p>Nombre de passerelles Radio Amateur avec l'Internet encapsulent
AX.25, NetRom et Rose dans IP. Le cas des trames AX.25
relève du RFC 1226 écrit par Brian Kantor. Mike
Westerhof a réalisé un démon d'encapsulation
AX.25 sous Unix en 1991. Le paquetage des utilitaires ax25-utils en
contient une version légèrement
améliorée.</p>
<p>Un programme d'encapsulation AXIP reçoit des trames AX.25
d'un côté, examine la destination AX.25 afin d'en
déduire l'adresse IP à laquelle les envoyer et les
encapsule dans un datagramme TCP/IP avant de les émettre. Il
accepte également les datagrammes TCP/IP qui contiennent des
trames AX.25, extrait ces dernières et les traite comme s'il
s'agissait de trames AX.25 reçues depuis un port AX.25. La
distinction des trames IP contenant de l'AX.25 se fait par
l'intermédiaire d'un identifiant de protocole égal
à 4 (la valeur 94 est possible quoique
désuète). Le RFC 1226 décrit tout ça en
détail.</p>
<p>L'outil <em>ax25ipd</em> inclus dans le paquetage ax25-utils se
présente comme un programme gérant une interface
KISS, au travers de laquelle passeront des trames AX.25, et une
interface d'adaptation TCP/IP. Il se configure par
l'intermédiaire du fichier
<code>/etc/ax25/ax25ipd.conf</code>.</p>
<h3>Options de configuration d'AXIP</h3>
<p><em>ax25ipd</em> opère dans deux modes :
"digipeater" et "tnc". En mode "tnc", le démon agit comme un
TNC kiss. Vous lui fournissez des trames d'encapsulation KISS et il
les transmet comme dans la configuration normale. En mode
"digipeater", le démon agit comme un noeud de transmission
AX.25. Les différences entre ces deux modes sont
subtiles.</p>
<p>Vous configurez dans le fichier à cet effet les "routes"
ou correspondances entre les identifiants AX.25 et les adresses IP
des machines auxquelles vous désirez également
transmettre des paquets AX.25. Chaque route dispose d'options qui
seront expliquées un peu plus tard.</p>
<p>Voici les autres options à configurer :</p>
<ul>
<li>le tty du démon <em>ax25ipd</em> ainsi que sa vitesse
(en général l'extrémité d'un
tuyau)</li>
<li>l'identifiant souhaité pour le mode "digipeat"</li>
<li>l'intervalle beacon</li>
<li>le choix entre une encapsulation AX.25 dans des datagrammes IP
ou bien dans des datagrammes UDP/IP. L'essentiel des passerelles
AXIP emploie une encapsulation IP mais certaines sont
situées derrière des filtres qui ne laisseront passer
que les datagrammes UDP/IP. Le choix doit coïncider avec ce
qui est attendu à l'autre extrémité.</li>
</ul>
<h3>Un fichier de configuration
<code>/etc/ax25/ax25ipd.conf</code>typique</h3>
<blockquote>
<pre>
<code>#
# fichier de configuration ax25ipd pour la station floyd.vk5xxx.ampr.org
#
# Transport axip. 'ip' garantit la compatibilite avec la plupart des
# autres passerelles.
#
socket ip
#
# Mode d'operation de ax25ipd (digi ou tnc)
#
mode tnc
#
# Si digi est selectionne, vous devez definir un identifiant. Si vous avez
# choisi tnc, l'identifiant est optionnel mais cela pourrait changer dans le
# futur (2 identifiants pour une kiss double port).
#
#mycall vk5xxx-4
#mycall2 vk5xxx-5
#
# En mode digi, on peut definir un alias (2 etc.).
#
#myalias svwdns
#myalias2 svwdn2
#
# ident toutes les 540 secondes ...
#
#beacon after 540
#btext ax25ip -- tncmode rob/vk5xxx -- Experimental AXIP gateway
#
# Port serie (ou tuyau connecte a kissattach dans mon cas)
#
device /dev/ttyq0
#
# Vitesse du peripherique
#
speed 9600
#
# niveau de log 0 - pas de sortie
# niveau de log 1 - informations de configuration
# niveau de log 2 - evenements majeurs et erreurs
# niveau de log 3 - evenements majeurs, erreurs et suivi des trames AX.25
# niveau de log 4 - tout
# niveau de log 0 pour le moment
#
loglevel 2
#
# En mode digi, on peut avoir un veritable tnc. param permet de passer les
# parametres tnc.
#
#param 1 20
#
# Adresses de broadcast. Chaque adresse figurant dans la liste sera relayee
# vers une des routes munies de l'indicateur idoine.
#
broadcast QST-0 NODES-0
#
# Definition des routes AX.25. Autant que necessaires
# Format :
# route <id destination> <ip destination> [indicateur]
#
# Indicateurs valides :
# b - broadcast
# d - route par defaut
#
route vk2sut-0 44.136.8.68 b
route vk5xxx 44.136.188.221 b
route vk2abc 44.1.1.1
#
#
</code>
</pre></blockquote>
<h3>Exécuter <em>ax25ipd</em></h3>
<dl>
<dt><b>Commencez par mettre en palce le fichier
<code>/etc/ax25/axports</code></b></dt>
<dd>
<blockquote>
<pre>
<code># /etc/ax25/axports
#
axip VK2KTJ-13 9600 256 AXIP port
#
</code>
</pre></blockquote>
</dd>
<dt><b>Exécutez <em>kissattach</em> pour créer le
port :</b></dt>
<dd>
<blockquote>
<pre>
<code>/usr/sbin/kissattach /dev/ptyq0 axip
</code>
</pre></blockquote>
</dd>
<dt><b>Lancez <em>ax25ipd</em> :</b></dt>
<dd>
<blockquote>
<pre>
<code>/usr/sbin/ax25ipd &
</code>
</pre></blockquote>
</dd>
<dt><b>Testez la liaison AXIP :</b></dt>
<dd>
<blockquote>
<pre>
<code>call axip vk5xxx
</code>
</pre></blockquote>
</dd>
</dl>
<h3>Remarques concernant certains indicateurs des routes</h3>
<p>"<code>route</code>" met en place les destinations d'envoi de
vos trames AX.25 encapsulées. Lorsque le démon
<em>ax25ipd</em> reçoit un paquet sur son interface, il
compare l'identifiant de destination avec chacun de ceux
présents dans sa table de routage. S'il trouve une
correspondance, le paquet est alors encapsulé dans un
datagramme IP et transmis à l'hôte
spécifié.</p>
<p>Deux indicateurs peuvent être ajoutés à
n'importe quelle route du fichier
<code>ax25ipd.conf</code> :</p>
<dl>
<dt><b>b</b></dt>
<dd>
<p>tout trafic à destination d'une adresse
repérée par le mot-clef "<code>broadcast</code>" doit
transiter par cette route.</p>
</dd>
<dt><b>d</b></dt>
<dd>
<p>tout paquet ne correspondant à aucune autre route doit
suivre ce chemin.</p>
</dd>
</dl>
<p>L'indicateur de broadcast est très utile puisqu'il permet
l'envoi d'informations à destination de toutes les stations
vers des stations AXIP : les routes axip fonctionnent
normalement en point-à-point et sont incapables de
gérer des paquets de diffusion générale.</p>
<h2><a name="ss21.4">21.4 Lier NOS à Linux au moyen d'un
pipe</a></h2>
<p>De nombreuses personnes aiment se servir de NOS sous Linux en
raison de la richesse fonctionnelle et de la facilité
d'emploi auxquelles il les a habituées. La plupart d'entre
eux souhaitent que leur version de NOS puisse dialoguer avec le
noyau Linux de façon à offrir certaines des
possibilités de Linux aux radio-utilisateurs de NOS.</p>
<p>Brandon S. Allbery, alias KF8NH, a fourni les informations qui
suivent relatives à l'interconnexion de NOS avec le noyau
Linux par l'intermédiaire de tuyaux (pipe).</p>
<p>Linux et NOS gérant tous deux le protocole SLIP, il est
possible de les relier au moyen d'une liaison slip. Vous pourriez
le faire grâce à deux ports série et à
un câble null-modem mais ce serait aussi coûteux
qu'inefficace. Comme d'autres systèmes de type Unix, Linux
dispose de tuyaux dits `pipes' (prononcer paillepeu). Il s'agit de
pseudo-périphériques qui émulent le
comportement de tty usuels du point de vue des logiciels en
redirigeant le flux vers d'autres tuyaux. Pour les utiliser, un
programme doit d'abord ouvrir l'extrémité
<b>maître</b> d'un tuyau après quoi un second
programme peut ouvrir la terminaison <b>esclave</b>. Lorsque les
deux bouts sont ouverts, les programmes peuvent communiquer l'un
avec l'autre en écrivant des caractères dans les
tuyaux comme s'il s'agissait de terminaux usuels.</p>
<p>Pour employer les tuyaux entre NOS et Linux, vous devez d'abord
choisir un tuyau. Le répertoire <code>/dev</code> en
regorge : les extrémités maîtres se
nomment <code>ptyq[1-f]</code> et celles esclaves
<code>ttyq[1-f]</code>. Gardez à l'esprit qu'elles
fonctionnent par paires et que si vous utilisez
<code>/dev/ptyqf</code> à un bout, vous devrez employer
<code>/dev/ttyqf</code> à l'autre.</p>
<p>Une fois le tuyau choisi, vous allouez la terminaison
maître à Linux et l'esclave à NOS (le noyau
démarre le premier et l'extrémité maître
doit être la première ouverte). N'oubliez pas que le
noyau Linux doit être muni d'une adresse IP différente
de celle de NOS. A mettre en place si ce n'est pas
déjà le cas.</p>
<p>Le tuyau se configure comme un périphérique
série. Pour une liaison slip, les commandes à
exécuter seront donc du type :</p>
<blockquote>
<pre>
<code># /sbin/slattach -s 38400 -p slip /dev/ptyqf &
# /sbin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.70.248.67 /
mtu 1536 44.70.4.88
# /sbin/route add 44.70.248.67 sl0
# /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.70.248.67
</code>
</pre></blockquote>
<p>Dans cet exemple, le noyau Linux dispose de l'adresse
<code>44.70.4.88</code> et NOS de l'adresse
<code>44.70.248.67</code>. La commande <em>route</em> de la
dernière ligne indique simplement au noyau Linux qu'il doit
router tous les datagrammes à destination d'amprnet via le
lien slip créé par la commande <em>slattach</em>.
Vous pouvez par exemple copier ces commandes dans le fichier
<code>/etc/rc.d/rc.inet2</code> (selon votre installation)
après toutes les autres commandes de configuration
réseau afin que la liaison slip apparaisse automatiquement
à la réinitialisation du système.
Remarque : on ne gagne rien à utiliser <em>cslip</em>
au lieu de <em>slip</em>. Au contraire, les performances diminuent
de par la nature purement virtuelle du lien (on passe plus de temps
à compresser les en-têtes qu'à transmettre
toutes les données).</p>
<p>Essayez les commandes suivantes pour configurer la terminaison
du côté NOS :</p>
<blockquote>
<pre>
<code># you can call the interface anything you want; I use "linux" for convenience.
attach asy ttyqf - slip linux 1024 1024 38400
route addprivate 44.70.4.88 linux
</code>
</pre></blockquote>
<p>Ces commandes créent un port slip nommé `linux'
sur l'extrémité esclave du tuyau et ajoutent une
route qui y pointe. Une fois NOS démarré, vous
devriez pouvoir exécuter des ping et des telnet de NOS vers
Linux et vice-versa. Si ce n'est pas le cas, vérifiez encore
une fois que vous ne vous êtes trompé nulle part,
surtout au niveau des adresses et des tuyaux.</p>
<h2><a name="s22">22. Où trouver de l'information sur...
?</a></h2>
<p>Ce document suppose une certaine expérience de la
transmission paquets par radio, et, comme ce n'est pas
forcément le cas, j'ai regroupé un ensemble de
références à d'autres informations utiles.</p>
<h2><a name="ss22.1">22.1 Transmission paquets par radio</a></h2>
<p>Vous trouverez des informations générales sur la
transmission paquets par radio sur les sites suivants :</p>
<ul>
<li><a href="http://www.arrl.org/">American Radio Relay
League</a>,</li>
<li><a href="http://www.rats.org/">Radio Amateur Teleprinter
Society</a></li>
<li><a href="http://www.tapr.org/">Tucson Amateur Packet Radio
Group</a></li>
</ul>
<h2><a name="ss22.2">22.2 Documentation sur les protocoles</a></h2>
<ul>
<li>AX.25, NetRom - Jonathon Naylor a regroupé de nombreux
documents sur le sujet qui sont disponibles via : <a href=
"ftp://ftp.pspt.fi/pub/ham/linux/ax25/ax25-doc-1.0.tar.gz">ax25-doc-1.0.tar.gz</a></li>
</ul>
<h2><a name="ss22.3">22.3 Documentation sur le
matériel</a></h2>
<ul>
<li>Informations sur la carte <b>PI2</b> : <a href=
"http://hydra.carleton.ca/">Ottawa Packet Radio Group</a>.</li>
<li>Informations sur le matériel <b>Baycom</b> :
<a href="http://www.baycom.de/">Baycom Web Page</a>.</li>
</ul>
<h2><a name="s23">23. Groupes de discussion radioamateurs et
Linux</a></h2>
<p>Il existe plusieurs endroits où parler de Linux ou de
radio amateurisme. Par exemple dans les groupes de discussion
<code>comp.os.linux.*</code>, sur la liste de diffusion
<code>HAMS</code> de <code>vger.rutgers.edu</code>. Mentionnons
également la liste <code>tcp-group</code> sur
<code>ucsd.edu</code> (origine des discussions TCP/IP radio
amateur) et le canal <code>#linpeople</code> sur le réseau
irc <code>linuxnet</code>.</p>
<p>Pour vous abonner à la liste de diffusion Linux
<b>linux-hams</b>, envoyez un courrier à :</p>
<blockquote>
<pre>
<code>Majordomo@vger.rutgers.edu
</code>
</pre></blockquote>
avec dans le corps du message la ligne suivante :
<blockquote>
<pre>
<code>subscribe linux-hams
</code>
</pre></blockquote>
La ligne de sujet sera ignorée.
<p>La liste de diffusion <b>linux-hams</b> est archivée aux
adresses :</p>
<p><a href="http://hes.iki.fi/archive/linux-hams/">zone.pspt.fi</a>
et : <a href=
"http://zone.oh7rba.ampr.org/archive/linux-hams/">zone.oh7rba.ampr.org</a>.
Les débutants sont priés de commencer par utiliser
les archives. Celles-ci contiennent des réponses à
l'essentiel des questions courantes.</p>
<p>Pour souscrire à la liste <code>tcp-group</code>, envoyez
un courrier à l'adresse :</p>
<blockquote>
<pre>
<code>listserver@ucsd.edu
</code>
</pre></blockquote>
avec dans le corps du message la ligne :
<blockquote>
<pre>
<code>subscribe tcp-group
</code>
</pre></blockquote>
<p><b>Remarque :</b> n'oubliez pas que <code>tcp-group</code>
a pour thème les discussions autour de l'emploi des
protocoles évolués parmi lesquels figure TCP/IP.
<em>Les questions spécifiques à Linux n'y ont
normalement pas leur place.</em></p>
<h2><a name="s24">24. Remerciements</a></h2>
<p>Les personnes dont les noms suivent ont contribué
à l'élaboration de ce document (l'ordre n'a pas
d'importance): Jonathon Naylor, Thomas Sailer, Joerg Reuter, Ron
Atkinson, Alan Cox, Craig Small, John Tanner, Brandon Allbery, Hans
Alblas, Klaus Kudielka, Carl Makin.</p>
<h2><a name="s25">25. Copyright.</a></h2>
<p>Copyright (c) 1996 Terry Dawson.</p>
<p>La distribution de ce document doit se conformer aux termes de
la licence LDP tels que définis à l'adresse :
<a href=
"http://sunsite.unc.edu/LDP/COPYRIGHT.html">sunsite.unc.edu/LDP/COPYRIGHT.html</a>.</p>
</body>
</html>
|