Инсталляция Linux.

перевод Балуева А. Н.

Оглавление

  • ГЛАВА 6. СЕТИ

    ГЛАВА 6. СЕТИ

    В начало страницы

    В этой главе мы обсуждаем организацию сетей --как конфигурировать связи, используя TCP/IP, SLIP, PPP или UUCP, электронную почту и службу новостей.

    6.1 Организация сетей с TCP/IP.

    В начало страницы

    Linux поддерживает полную реализацию сетевых протоколов TCP/IP (Transport Control Protocol/Internet Protocol). TCP/IP стала наиболее успешным механизмом для организации компьютерных сетей по всму миру. С Linux и картой Ethernet вы можете соединить вашу машину с локальной сетью области или (при помощи соответствуюших сетевых устройств) с Internet--всемирной сетью TCP/IP.

    Организацию малых локальных сетей из машин UNIX осуществить легко. Для этого нужен контроллер Ethernet на каждой машине, подходящие кабели Ethernet и другое оборудование. Или, если ваш университет имеет доступ в Internet, вы можете легко добавить вашу машину Linux к этой сети.

    Текущая реализация TCP/IP и соответствующие протоколы для Linux носят название "NET-3," а до этого назывались "NET-2." Это не имеет отношения к так называемому NET-2 release of BSD UNIX; "NET-3" в этом контексте означает вторую реализацию TCP/IP для Linux.

    Linux NET-3 также поддерживает SLIP--Serial Line Internet Protocol и PPP--Point-to-Point Protocol. SLIP и PPP позволяют вам иметь спомощью модема dialup Internet access. Если ваша контора или университет обеспечивает доступ по SLIP или PPP, вы можете звонить (dial) в сервер SLIP или PPP и соединять вашу машину с Internet по телефонной линии. Альтернативно, если ваша машина Linux также имеет доступ по Ethernet в Internet, вы можете установить ваш Linux box как SLIP или PPP сервер.

    Для полной информации об установке TCP/IP под Linux мы рекомендуем вам прочесть Linux NET-3 HOWTO, доступный по анонимному FTP из sunsite.unc.edu. NET-3 HOWTO есть исчерпывающее руководство по конфигурированию TCP/IP, включая связи Ethernet и SLIP или PPP под Linux. Linux Ethernet HOWTO есть связанный с этим документ, который описывает конфигурацию различных драйверов карт Ethernet для Linux. Linux Network Administrator's Guide, из проекта Linux Documentation также доступен. См. приложение A.

    Представляет интерес также книга TCP/IP Network Administration, автор Craig Hunt. Она содержит полную информацию по использованию и конфигурированию TCP/IP на системах UNIX.

    Требования к аппаратуре со стороны TCP/IP.

    Вы можете использовать Linux TCP/IP без всякой сетевой аппаратуры -- конфигурация режима "loopback" позволяет вам говорить с самим собой. Это необходимо для некоторы приложений и игр, которые используют сетевые устройства "loopback".

    Но если вы хотите использовать Linux с сетью Ethernet TCP/IP, вам нужно иметь карту Ethernet. Поддерживаются обычные карты, такие как 3com 3c503, HP PCLAN (27245 и 27xxx серий), Western Digital WD80x3 и Novell NE2000/NE1000, и многие другие. См. детали в Linux Ethernet and Hardware HOWTO.

    Имеется несколько известных ситуаций относительно поддерживаюших карт, которых следует опасаться. Некторые карты, хотя и работают, но дают малую производтельность или имеют другие ограничения. Примером может быть 3Com 3C501 с ужасной производительностью и Racal-Interlan NI6510, использующая am7990 lance chip, которая не работает с RAM более 16 мегабайт. Теми же недостатками обладают клоны NE1000/NE2000. См. Linux Ethernet HOWTO, где имеется более полная дискуссиея о совместимости оборудования для Linux Ethernet.

    Linux также поддерживает SLIP and PPP,которые позволяют вам использовать модем для доступа в Internet по телефонной линии. В этом случае вам будет нужен модем, свместимый с вашим SLIP или PPP-сервером, требующим скорости передачи 14.4bps, как минимум модем V.32bis . Производительность сильно увеличивается с 33.6bps или еще боле быстрыми модемами.

    6.1.1 Конфигурирование TCP/IP на вашей системе.

    В начало страницы

    В этом разделе мы собираемся обсудить, как конфигурируется связь Ethernet TCP/IP в вашей системе. Заметим, что этот метод должен работать для многих систем, но, конечно, не для всех. Приведенные сведения будут достаточны, чтобы навести вас на правильный путь конфигурации параметроов сети для вашей машины. Но остается в тени множество не упоминаемых здесь деталей. По этому поводу мы отправляем вас к Linux Network Administrators' Guide и NET-3-HOWTO за дополнительной информацией.[1*]

    Прежде всего, предположим, что вы имеете систему Linux, на котоой установлено оборудование TCP/IP. Оно включает базовых клиентов, таких как telnet и ftp, команды системной администрации, такие как ifconfig и route (обычно они находятся в /etc), и сетевые конфигурационные файлы (такие как /etc/hosts). Другие, относящиеся к Linux и описанные выше сетевые документы объясняют, как надо подходить к установке сетевого оборудования Linux, если вы его еще не имеете.

    Мы предположим также, что ваше ядро было сконфигурировано и компилировано с задействованной поддержкой TCP/IP. См. раздел 4.9 по поводу информации о компиляции вашего ядра. Чтобы задействовать сетевую организацию, вы должны ответить "yes" на соответствующие вопросы при конфигурационных шагах и перестроить ядро.

    После того, как это сделано, вы должны модифицировать несколько конфигурационных файлов, используемых в NET-3. По большей части это -- простая процедура. К несчастью, имеются значительные разногласия между дистрибуциями Linux отнсительно различных конфигурацинных файлов и поддерживающих программ TCP/IP. В большинстве случаях их можно найти в /etc, но в других случаях они лежат в /usr/etc, /usr/etc/inet или других неожиданных местах. В худшем случае вам придется использовать команду find для нахождения файлов в вашей системе. Заметим также, что не все дистрибуции держат конфигурационные файлы NET-3 и программы в одном и том же месте--они могут быть разбросаны по многим каталогам.

    Следующая информация относится прежде всего к связям Ethernet. Если вы планируете использовать SLIP или PPP, читайте этот раздел, чтобы усвоить основные понятия, и следуйте более специальным инструкциям из следующих разделов.

    Ваша сетевая конфигурация.

    Прежде чем конфигурировать TCP/IP, вам нужно определить следующую информацию об организации сетей. В большинстве случаев ваш местный сетевой администратор может предоставить ее вам.

    *** IP адрес. Это уникальный машинный адрес в точечно-десятичном формате. Примером может служить 128.253.153.54. Ваша сетевая администрация предоставит вам этот адрес. Если вы конфигурируете только режим loopback (т.e. ни SLIP, ни Ethernet карт, только связь TCP/IP к вашей машине), то ваш адрес IP будет 127.0.0.1.

    *** Ваша сетевая маска ("netmask"). Это -- точечная четверка, подобная адресу IP,

    ----------------------------------------

    [1*] Часть этой информации адаптирована из NET-3-HOWTO, авторы Terry Dawson и Matt Welsh. она определяет, какая часть IP-адреса указывает номер подсети ( subnetwork) и какая часть указывает хостa этой подсети. (Если вам непонятны эти термины TCP/IP, рекомендуем вам прочесть вводный материал к сетевой администрации.) Сетевая маска есть битовый трафарет, который нужно наложить на адрес в вашей сети, чтобы oпределить, к какой подсети он относится. Это очень важно для маршрутизации. И если вы, например, найдете, что вы можете счастливо говорить с людьми извне вашей сети, но не с людьми внутри вашей сети, то велика вероятность того, что маска ошибочна.

    Ваши сетевые администраторы должны выбирать сетевую маску во время проектирования сети, и поэтому они должны быть в состоянии снабдить вас правильной маской. Большинство сетей есть подсети класса С, которые используют 255.255.255.0 в качестве их сетевых масок. Сети класса B используют 255.255.0.0. Коды NET-3 будут автоматически выбирать маску, которая не предполагает никаких подсетей по умолчанию, если вы такую не указываете.

    Это приложимо также к портам loopback. Поскольку адрес порта loopback всегда 127.0.0.1, сетевая маска для этого порта всегда 255.0.0.0. Вы можете или указывать это явно или полагаться на маску по умолчанию.

    *** Ваш сетевой адрес. Это есть ваш IP-адрес, замаскированный побитно сетевой маской по операции AND. Например, если ваша сетевая маска есть 255.255.255.0, а ваш IP-адрес есть 128.253.154.32, ваш сетевой адрес есть 128.253.154.0. С сетевой маской 255.255.0.0 он будет 128.253.0.0. Если вы используете только loopback, вы не имеете сетевого адреса.

    *** Ваш broadcast-адрес. Адрес broadcast используется для broadcast-пакетов к каждой машине вашей подсети. Следовательно, если номер хоста для машин на вашей подсети указан последним байтом вашего IP-адреса (сетевая маска 255.255.255.0), вашим broadcast-адресом будет ваш сетевой адрес ORed с 0.0.0.255. Например, если ваш IP-адрес есть 128.253.154.32 а ваша сетевая маска есть 255.255.255.0, ваш broadcast-адрес будет 128.253.154.255.

    Заметим, что по историческим причинам некоторые сети установлены для использования сетевого адреса в качестве broadcast-адреса. Если вы сомневаетесь, справьтесь у ваших сетевых администраторов. (Во многих случаях достаточно дуплицировать конфигурацию сети других вашин в вашей подсети, подставив, естественно, ваш собственный IP address) Если вы используете только loopback, вы не имеете адреса broadcast.

    *** Ваш gateway-адрес. Это адрес машины, которая служит вашим "шлюзом" во внешний мир (то-есть к машинам не вашей подсети). Во многих случаях машина-шлюз (gateway machine) имеет адрес IP, идентичный вашему, но с ".1" в качестве ее хост-адреса; например. если ваш IP-адрес есть 128.253.154.32, ваш шлюз может быть 128.253.154.1. Ваш сетевой администратор снабдит вас IP-адресом вашего шлюза (gateway).

    Фактически вы можете иметь много шлюзов. Шлюз есть просто машина, которая живет на двух разных сетях (имеет IP-адреса на различных подсетях), и маршрутизирует пакеты между ними. Многие сети имеют один шлюз "во внешний мир" (сеть, непосредственно соединенная с вашей собственной), но в некоторых случаях вы будете иметь много шлюзов -- свой для каждой соседней сети. Если вы используете только loopback, вы не имеете gateway-адреса. То же самое будет, если ваша сеть изолирована от других.

    *** Адрес вашего сервера имен. Большинство машин в сети имеют сервер имен, который транслирует имена хостов в их IP адреса. Ваш сетевой администратор сообщит вам адрес вашего сервера имен. Вы можете также исполнять сервер на вашей собственной машине, запустив названный, и в этом случае адрес сервера имен есть 127.0.0.1. Если вам не абсолютно необходимо исполнять ваш собственный сервер имен, мы рекомендуем вам использовать тот, который предусмотрен для вас в сети (если он предусмотрен). Конфигурирование названного есть совсем другое дело; наше мнение по этому поводу -- позволить вам говорить с сетью. Вопроса разрешения имен вы можете коснуться позже. Если вы используете только loopback, вам не нужен адрес сервера имен.

    Пользователи SLIP/PPP: Вы можете требовать или не требовать любую упомянутую выше информацию, кроме адреса сервера имен. При использовании LIP, ваш адрес IP обычно определяется одним из двух следующих способов: или (a) вы имеете "статический" IP-адрес, который всегда один и тот же при вашей связи с сетью, или (b) вы имеете "динамический" IP-адрес, который отводится из пула доступных адресов, когда вы связываетесь с сервером. В следующем разделе о конфигурациях SLIP об этом говорится подробнее.

    NET-3 поддерживает полную маршрутизацию, многие маршруты, организацию подсетей (на этой стадии только на байтовой границе), полную 9-ярдность (the whole nine yards). Изложеное выше описывает большинство базисных конфигураций TCP/IP. Ваша может быть совсем другой: при сомнениях консультируйтесь с вашими местными сетевыми гуру и смотрите в man pages по поводу маршрутов и ifconfig. Конфигурирование сетей TCP/IP лежит далеко от предмета этой книги; все предыдущее должно быть достаточным для начального импульса вам в этой области.

    Сетевые файлы rc files.

    rc-файлы есть всеситемные конфигурационные сценарии, исполняемые во время загрузки по программе init, которая запускает всех базисных демонов в системе (таких как sendmail, cron, и т.д.) и конфигурирует такие вещи как сетевые параметры, имена системных хостов и т.п. Файлы rc обычно находятся в каталоге /etc/rc.d но на некоторых системах могут быть и в /etc. Обычно дистрибуции Slackware используют файлы rc.inet1 и т.д. в /etc/rc.d, в то время как дистрибуции RedHat используют ряд каталогов.

    Здесь мы собираемся описаь файлы rc, используемые для конфигурирования TCP/IP. Имеются два таких файла: rc.inet1 и rc.inet2. rc.inet1 используется для конфигурирования основных параметров сети (таких как IP-адреса и маршрутная информация), и rc.inet2, запускающий демонов TCP/IP (telnetd, ftpd, и др.)

    Многие системы объединяют эти два файла в один, называмый обычно rc.inet или rc.net. Имя, данное вашим файлам rc, не играет роли, поскольку они правильно выполняют свои функции и вызываются при загрузке сценарием init. Чтобы обеспечить это, вам может понадобиться отредактировать /etc/inittab и убрать комментарии в строках, выполняющих нужные rc файлы или файл. В худшем случае нужно будет воссоздать файлы rc.inet1 and rc.inet2 с самого начала и добавить строки для них в /etc/inittab.

    Как мы уже сказали, rc.inet1 конфигурирует базисный сетевой интерфейс. Он включает ваши IP и сетевые алреса и маршрутную информационную таблицу для вашей сети. Маршрутные таблицы используются для маршрутов исходящих (и входящих) сетевых дейтаграмм к другим машинам. В наиболее простых конфигурациях имеются три маршрута: один для посылки пакетов к вашей собственной машине, другой для посылки пакетов к другим машинам вашей сети и еще один для отсылки к машинам вне вашей сети ( через машину-шлюз). Две программы используются для конфигурирования соответствующих параметров: ifconfig и route. Обе обычно находятся в /etc. ifconfig используется для снабжения сетевых устройств параметрами интерфейса, необходимыми для их функционирвания, такими как IP-адрес, сетевая маска, broadcast-адрес и т.п. Route используется для замены данных в маршрутной таблице.

    В большинстве конфигураций работает файл rc.inet1, похожий на приведенный ниже. Вы должны, конечно, отредактировать его применительно к вашей системе. Не используйте приведенные в нем в качестве примера адреса IP и сетевой на вашей собственной системе; они соответствуют конкретой машине в Internet.

    #!/bin/sh 
    # это есть  /etc/rc.d/rc.inet1 --конфигурирует TCP/IP интерфейсы
    # сначала конфигурируется устройство loopback
    
    HOSTNAME=`host name` /etc/ifconfig lo 127.0.0.1 
    # использует по умолчанию
    # сетевую маску 255.0.0.0
    /etc/route add 127.0.0.1 
    # путь к точке в устройстве loopback
    # Затем конфигурируется устройство ethernet. 
    # Если вы используете только
    # loopback или SLIP, закомментруйте остальные строки. 
    # В противном случае
    # отредактируйте их применительно к вашей системе.
    IPADDR="128.253.154.32"  
    # ЗАМЕНИТЕ СВОИМ IP-АДРЕСОМ
    NETMASK="255.255.255.0" 
    # ЗАМЕНИТЕ СВОЕЙ    netmask
    NETWORK="128.253.154.0" 
    # ЗАМЕНИТЕ СВОИМ  network-АДРЕСОМ
    BROADCAST="128.253.154.255" 
    # ЗАМЕНИТЕ СВОИМ broadcast-АДРЕСОМ, если имеете
    # такой, а если нет-- оставьте пустым и редактируйте дальше.
    GATEWAY="128.253.154.1" 
    # ЗАМЕНИТЕ ВАШИМ АДРЕСОМ gateway!
    /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
    # Если не имеете адреса broadcast, замените предыдущую строку на:
    # /etc/ifconfig eth0 ${IPADDR}
    netmask ${NETMASK}/etc/route add ${NETWORK}
    # Следующее необходимо только если вы имеете gateway; то-есть ваша
    # network связана с внешним миром.
    /etc/route add default gw ${GATEWAY} metric 1
    # конец конфигурации Ethernet
    
    

    Опять, нужно немного подправить этот файл, чтобы заставить его работать. Он достаточен для большинства простых сетевых конфигураций, но конечно не для всех.

    rc.inet2 запускает различные серверы, используемые комплектом TCP/IP. Наиболее важным из них является inetd. Inetd пребывает на заднем плане и прислушивается к различным сетевым портам. Когда какая-то машина пытается связаться с некоторым портом (например, с входным портом telnet), inetd запускает (forks off) копию нужного демона для этого порта (в случае порта telnet, inetd запускает in.telnetd). Это проще чем запускать много отдельных специализированных демонов (например, отдельные копии telnetd, ftpd, и т.д.) --inetd запускает демонов только по необходимости.

    Syslogd есть система регистрации демонов--она собирает регистрационные сообщения от различных приkожений и хранит их в log-файлах на основе конфигурационной информации в /etc/syslogd.conf. Сервер routed используется для поддержки динамической информации о маршрутах. Когда вашей системе нужно послать пакеты в другую сеть, могут потребоваться дополнительные данные о маршрутах из таблицы маршрутов, чтобы осуществит отсылку. Сервер routed манипулирует с таблицей маршрутов без помощи пользователя.

    Наш пример rc.inet2, приведенный ниже, только запускает самый необходимый минимум серверов. Существует много других серверов, из них многие связаны с конфигурацией NFS. При попытке установить TCP/IP на вашй системе обычно лучше всего начать с минимальной конфигурации и затем добавлять более сложные вещи (такие как NFS) когда что-то уже заработает.

    Заметим, что в приведенном ниже файле мы предполагаем, что все сетевые демоны содержатся в /etc. Как обычно, отредактируйте его применительно к вашей собственной конфигурации.

    #! /bin/sh 
    # Пример /etc/rc.d/rc.inet2
    # Start syslogd if [ -f /etc/syslogd ] then /etc/syslogd fi
    # Start inetd if [ -f /etc/inetd ] then /etc/inetd fi
    # Start routed if [ -f /etc/routed ] then /etc/routed -q fi
    # Done!
    
    

    Среди различных дополнительных серверов, которые вы можете захотеть запустить, в rc.inet26 есть named. Named есть сервер имен--он отвечает за перевод (местных) IP-адресов в имена, и наоборот. Если вы не имеете сервера имен нигде в сети или хотите дать локальные машинные имена другим машинам в вашей области, может оказаться необходимым запустить named.

    (Для большинства конфигураций это не обязательно). Конфигурирование named довольно сложно и требует планирования; мы отсылаем заинтересованных читателей к хорошей книге об администрации сетей TCP/IP.

    Файл /etc/hosts.

    /etc/hosts содерит список IP-адресов и имен хостов, которым они соответствуют. Вообще, /etc/hosts содержит только данные для вашей локальной машины, и, возможно, других "важных" машин (таких как ваш сервер имен или шлюз). Ваш локальный сервер имен обеспечит адреса в имена для других машин в сети. Например, если ваша машина есть loomer.vpizza.com с IР-адресом 128.253.154.32, ваш /etc/hosts будет выглядеть так:

    127.0.0.1 localhost 128.253.154.32 loomer.vpizza.com loomer

    Если вы используете только loopback, единственная строка в /etc/hosts будет для 127.0.0.1, с localhost и вашим host name после нее.

    Файл /etc/networks.

    файл /etc/networks содержит имена и адреса вашей собственной сети и других сетей. Его использует команда route, позволяя вам указывать сеть по ее имени, если вы этого хотите. Каждая сеть, путь к которой вы хотите добавить с помощью команды route (обычно вызываемой из rc.inet1--см. выше) должна иметь строку (entry) в /etc/networks.

    Например:

    default 0.0.0.0 
    # default route - mandatory loopnet 127.0.0.0
    # loopback network - mandatory mynet 128.253.154.0
    # Переделайте на ваш собственный сетевой адрес
    
    

    Файл /etc/host.conf file.

    Этот файл используется для указания того, как ваша система будет различать имена хостов. Он должен содержать две строки:

    order hosts,bind multi on

    Эти две строки предписывают разрешающим библиотекам сначала проверять файл /etc/hosts на все отыскиваемые имена и затем запрашивать сервер имен (если он присутствует). Кратные входы позволяют вам иметь кратные адреса IP для данного имени машины в /etc/hosts.

    Файл /etc/resolv.conf file.

    Этот файл конфигурирует разрешителя имен, указывающего адрес сервера имен (если такой существует) и имя вашей области. Имя вашей области есть ваше полное хост-имя (если ваша машина зарегистрирована, например, в Internet), с отрезанным хост-именем. То-есть, если ваше полное хост-имя есть loomer.vpizza.com, имя вашей области есть только vpizza.com.

    Например, если ваша машина есть goober.norelco.com и имеет сервер имен по адресу 128.253.154.5, то ваш /etc/resolv.conf выглядит так:

    domain norelco.com nameserver 127.253.154.5

    Вы можете указывать более одного сервера имен--каждый долен иметь свою собственную строку nameserver в resolv.conf.

    Установка вашего хост-имени

    Вы должны устанавливать ваше system host name по команде hostname. Она вызывается из /etc/rc или /etc/rc.local; просто исследуйте ваши системные файлы rc, чтобы установить, где она находится. Например, если ваше полное хост-имя есть loomer.vpizza.com, отредактируйте сответствующий файл rc file для выполнения команды:

    /bin/hostname loomer.vpizza.com

    Заметим, что исполнимая форма hostname может не лежать в /bin в вашей системе. Выясните это.

    Если все перечисленные выше файлы установлены, вы можете перезагрузить ваше новое ядро и попробовать использовать сеть. Есть много мест, где могут обнаружиться ошибки, поэтому правильным путем будет проверка отдельных аспектов сетевой конфигурации (а не попытка запустить всю мозаику сразу).

    Можно воспользоваться командой netstat для выдачи ваших маршрутных таблиц, обычно служащих источником большинства неприятностей. netstat man page описывают в деталях синтаксис этой команды. Для проверки связности сети мы предлагем использовать клиента, такого как telnet, для связи с машинами как на локальных, так и на внешних сетях. Это может облегчить поиск источников проблем. (Например, если вы не в состоянии связаться с локальной машиной, но можете связываться с машинами из других сетей, более чем вероятно, что причина лежит в сетевой маске и конфигурации таблицы маршрутов). Вы можете использовать непосрелственно команду route (в режиме root) для просмотра позиций в вашей таблице маршрутов.

    Вы должны также проверить связность сети прямым указанием IP-адресов вместо имен хостов. Например, если у вас проблемы с командой

    $ telnet shoop.vpizza.com

    то причина может лежать в неправильной конфигурации сервера имен. Попробуйте использовать фактический IP-адрес машины, о которой идет речь; если это сработает, то вы знаете, что базисная установка сети есть (более чем вероятно) правильна и причина лежит в спецификации адреса сервером имен.

    Отладка сетевой конфигурации может оказаться труднй задачей, и мы не можем описывать ее здесь. Если вы не сможете получить помощь от местных умельцев, мы настоятельно рекомендуем читать Руководство Сетевого Администратора Linux из LDP.

    6.1.2 Конфигурирование SLIP.

    В начало страницы

    SLIP (Serial Line Internet Protocol) позволяет вам использовать TCP/IP в линиях последовательной передачи, будь это телефонная линия с dialup модемом или арендованная асинронная линия какого-нибудь вида. Конечно, чтобы использовать SLIP, вам необходим доступ к наборному серверу в вашей области. Многие университеты и деловые организации предоставляют доступ к SLIP за скромную плату.

    Имеются две главные доступные связанные с SLIP программы--dip и slattach. Обе эти программы используются для инициации связи SLIP через последовательные устройства. Необходимо использовать одну из этих программ, чтобы задействовать SLIP--недостаточно набрать номер сервера SLIP (по такой программе связи как kermit) и выдать команды ifconfig и route. Дело в том, что dip и slattach выдают специальный системный вызов ioctl(), чтобы получить управление последовательным устройством, используемом в интерфейсе SLIP. dip можно использовать и для набора номера сервера SLIP, для выполнения протокола связи с сервером ( включающего, например, ваш пароль и username) и инициирования связи SLIP через открытую последовательную линию. А программа slattach, делает очень немного кроме того, что захватывает последовательное устройство для использования его для SLIP. Это полезно, если вы имеете постоянную линию связи с вашим сервером SLIP, не нужно никакого модема dialup или протокола для инициирования связи.

    С другой стороны, большинство пользователей SLIP вынуждены использовать dip. dip можно также использовать для конфигурации вашей системы Linux в качестве сервера SLIP, через который другие машины могут соединяться с вашей и выходить в сеть через вторичную связь по Ethernet на вашей мащине. См. документацию и man pages для dip по поводу этой процедуры.

    SLIP совершенно не похожа на Ethernet, в ней имеется "сеть" только из двух машин-- SLIP host (это вы) и SLIP сервер. По этой причине на SLIP часто ссылаются как на связь "точки с точкой". Обобщение этой идеи, известное как PPP (Point to Point Protocol) также реализовано для Linux. Когда вы инициируете связь с сервером SLIP, этот сервер SLIP дает вам адрес IP с помощью одного из двух методовa. Некоторые серверы SLIP отводят "статические" адреса IP, и в этом случае ваш IP-адрес будет одним и тем же каждый раз, когда вы связываетесь с сервером. Однако, многие серверы SLIP отводят IP-адреса динамически, и в таком случае вы получаете различные IP-адреса в каждом случае связи. В общем случае сервер SLIP печатает значения ваших адресов IP и gateway при каждой связи. dip способен читать эти значения из выхода сессии login сервера SLIP и использовать их для конфигурации устройства SLIP. Естественно, конфигурирование связи SLIP подобно конфигурированию для loopback или ethernet. Главные отличия рассматриваются ниже. Прочтите предыдущий раздел о конфигурировании базисных файлов TCP/IP и сделайте описанные ниже изменения.

    Статический адрес IP в связи по SLIP с использованием dip. Если вы используете сервер SLIP со статическим отведением, вы можете пожелать включать значения ваших IP-адреса и ммя хоста в /etc/hosts. Итак, конфигурируйте файлы, перечисленные в предыдущем разделе: rc.inet2, host.conf и resolv.conf.

    Также сконфигурируйте rc.inet1, как описано выше. Однако, вы хотите только выполнять команды ifconfig и route для устройства loopback . Если вы используете dip для связи с сервером SLIP, она будет выполнять соответствующие команды ifconfig и route для устройства SLIP для вас. (А если вы используете slattach, вам нужно будет включить команды ifconfig/route в rc.inet1 для устройства SLIP--см. ниже.)

    dip должен сконфигурировать вашу таблицу маршрутов соответственноо связям по SLIP во время вашей связи. Однако, в некоторых случаях, поведение dip может оказаться некорректным для вашей конфигурацииn, и вам будет нужно после связи с сервером по dip вручную выполнить команды ifconfig или route (это легче всего сделать из сценария оболочки, который выполняет dip и немедленно исполняет соответствуюшие конфигурационные команды). Ваш шлюз в большинстве случаев имеет адрес сервера SLIP. Вы можете узнать этот адрес предварительно, или адрес gateway будет напечатан сервером SLIP, когда вы с ним связываетесь. Ваш сценарий dip chat (он описан ниже) может получить эту информацию от сервера SLIP. ifconfig может потребовать использовать аргумент pointopoint, если dip не конфигурирует интерфейс правильно. Например, если адрес вашего сервера SLIP есть 128.253.154.2 и ваш IP-адрес есть 128.253.154.32, вам может понадобиться выполнить команду

    ifconfig sl0 128.253.154.32 pointopoint 128.253.154.2

    в режиме корня, после связи с dip. Вам поможет в этом man pages для ifconfig. will come in Заметим, что имена устройств SLIP, используемые в командах ifconfig и route, есть sl0, sl1 и т.д. (в отличие от eth0, eth1 и т.д. для устройств Ethernet). В разделе 6.1.2, ниже, мы объясняем, как конфигурировать dip для связи с сервером SLIP.

    Статические IP-адреса при связях с SLIP с использованием slattach. Если вы имеете арендаванную линию или кабель, ведущий прямо к вашему серверу SLIP, то не нужно использовать dip для инициирования связи. Вместо этого можно для конфигурации устройства SLIP использовать slattach. В этом случае ваш файл /etc/rc.inet1 должен выглядеть подобно следующему:

    #!/bin/sh IPADDR="128.253.154.32" 
    # Замените вашим адресом IP
    REMADDR="128.253.154.2" 
    # Замените вашим адресом  SLIP сервера
    # Модифицируйте все следующее для нужного последовательного устройства
    # для связи SLIP:
    slattach -p cslip -s 19200 /dev/ttyS0 /etc/ifconfig sl0 $IPADDR pointopoint
    $REMADDR up /etc/route add default gw $REMADDR
    
    

    slattach отводит первое свободное устройство SLIP (sl0, sl1, etc.) для указанной последовательной линии.

    Заметим, что первый параметр для slattach есть использование протокола SLIP. В настоящее время единственными действующими значениями служат slip и cslip. Slip есть регулярное SLIP, как вы и должны ожидать, a cslip есть SLIP с сжатым заголовком дейтаграммы. В большинстве случаев нужно использовать cslip; однако, если вам кажется, что это приводит к неприятностям, попробуйте slip.

    Если вы имеете более одного интерфейса SLIP, вам будет нужно подумать о маршрутах. Вы должны решить, какие маршруты следует добавить. Это решение можно принять только на базе фактически существующих в вашей сети связей. При этом нужно использовать книгу о конфигурации сетей TCP/IP и man pages для route.

    Динамические IP-адреса при свяях по SLIP с использованием dip. Если ваш сервер SLIP отводит IP-адрес динамически, вы не можете знать его заранее и не можете включать место для него в /etc/hosts. (Однако, вы должны включать место для вашего хоста с адресом loopback, 127.0.0.1.)

    Многие серверы SLIP печатают ваш адрес IP (также как и адрес сервера), когда вы связываетесь с ним. Например, один из типов серверов SLIP печатает строку вида

    Your IP address is 128.253.154.44. Server address is 128.253.154.2.

    dip может подхватить эти номера с выхода сервера и использовать для конфигурации устройства SLIP. См. выше, на стр. 261, информацию о конфигурации ваших разных файлов TCP/IP для использования с SLIP. Ниже мы поясним, как конфигурировать dip для связи с сервером SLIP.

    Использование dip.

    dip может упростить процесс связи с сервером SLIP, входя в систему и конфигурируя устройство SLIP. Если вы не имеете арендованной линии к вашему серверу SLIP, dip облегчает путь к нему.

    Чтоы использовать dip, вы должна написать "chat script" который содержит список команд, используемых для коммуникаций с сервером во время logtime. Эти команды могут автоматически послать ваше пользовательское имя/пароль к серверу, так же как получать информацию о вашем IP-адресе от сервера.

    Вот пример сценария dip chat для использования с динамическими серверами IP адресов. Для статических серверов вам нужно подствить в переменные $local и $remote в начале сценария значения локального IP-адреса и IP-адреса сервера соответственно. Детали см. в dip man page.

    main:
    # Установить  Maximum Transfer Unit. 
    # Это есть максимальный размер  пакетов,
    # нередаваемых на устройства SLIP. 
    # Многие серверы SLIP используют 1500
    # или 1006; при сомнении справьтесь у вашего сетевого администратора.
    get $mtu 1500
    # Сделайте маршрут  SLIP маршрутом по умолчанию в вашей системе.
    default
    # Укажите желаемые порт и скорость.
    port cua03 speed 38400
    # Сбросьте модем и линию к терминалу. Если это причиняет неудобства,
    # закомментируйте этот пункт.
    reset
    # Подготовка к автом. вызову (dialing). Замените последующее строкой
    # инициализции вашего модема.
    send ATT&C1&D2\\N3&Q5%M3%C1N1W1L1S48=7\r 
    		wait OK 2 if $errlvl != 0 goto error
    
    
    # Вызовите  SLIP server
    dial 2546000 if $errlvl != 0 goto error
    wait CONNECT 60 if $errlvl != 0 goto error
    # Мы связаны. Входим в систему
    login:
    sleep 3 send \r\n\r\n
    # Ждем приглашения на вход
    wait login: 10 if $errlvl != 0 goto error
    # Посылка вашего имени
    send USERNAME\n
    # Ждем приглашения для пароля
    wait ord: 5 if $errlvl != 0 goto error
    # Посылаем пароль.
    send PASSWORD\n 
    # Ждем приглашения готовности SLIP-сервера
    wait annex: 30 if $errlvl != 0 goto error
    # Посылаем серверу SLIP команду инициирования связи.
    send slip\n wait Annex 30
    # Получаем отдаленный адрес IP от сервера SLIP. 
    # Команда `get...remote'
    # читает текст в форме  xxx.xxx.xxx.xxx, и присваивает его переменной,
    # указанной во втором аргументе (здесь это $remote).
    get $remote remote if $errlvl != 0 goto error wait Your 30
    
    # Получаем локальный IP-адрес от сервера SLIP и присваиваем в $local.
    get $local remote if $errlvl != 0 goto error
    # Завершаем (Fire up) установленную связзь по SLIP:
    print CONNECTED to $remote at $rmtip print GATEWAY address $rmtip
    print LOCAL address $local mode SLIP goto exit error:
    print SLIP to $remote failed.
    exit:
    
    

    dip автоматически выполняет команды ifconfig и route, используя значения переменных $local and $remote. Здесь, эти переменные получают значения, используя команду get...remote, которая получает текст от сервера SLIP и присваивает его названной переменной.

    Если команды ifconfig и route, которые dip выдает для вас, не сработают, вы можете или выполнить правильные команды в сценарии оболочки после выполнения dip или модифицировать источник самой dip. Исполняя dip с параметром -v option, вы напечатаете отладочную информацию во время установки связи и это поможет вам определить причину ошибки.

    Теперь, чтобы выполнить dip и открыть связь со SLIP, вы можете использовать такую команду, как:

    /etc/dip/dip -v /etc/dip/mychat 2>&1

    Здесь различные файлы dip и сценарий chat (mychat.dip) хранятся в /etc/dip. Сказанного выше должно быть достаточно для того, чтобы направить вас на путь разговорв по сети через Ethernet или SLIP. Повторяем, что мы настоятельно рекомендуем посматривать в книгу о конфигурации сетей с TCP/IP, особенно если ваша сеть имеет специальные маршрутные свойства, отличные от рассмотренных здесь.

    6.2 Наборные (Dial-up) сети и PPP.

    В начало страницы

    Linux подерживает полную реализацию сетевых протоколов PPP (Point-to-Point). PPP есть механизм для создания и исполнения IP (the Internet Protocol) и других сетевых протоколов последовательной связи (с использованием связи по кабелю null-modem), по связи telnet или связи с использованием модемов и телефонных линий (и, конечно, цифровых линий, таких как ISDN). В этом разделе говорится только о конфигурировании PPP как о связи клиентов через аналоги модемов с отдаленной машиной, обеспеченной услугами PPP dialup. Для получения полной информации об установке PPP под Linux мы советуем вам читать Linux PPP HOWTO, доступной по анонимному FTP с сайта sunsite.unc.edu. PPP HOWTO есть полное руговодство по конфигурированию PPP, включая модемы, ISDN и кабели nullmodem, под управлением Linux. Большинство информации этого раздела взято из этого документа. Linux Network Administrator's Guide, из Linux Documentation Project, так же годится. См. приложение A по поводу названных документов.

    6.2.1 Что вам небходимо для начала.

    В начало страницы

    Мы предполагаем, что ваше ядро было конфигурировно и скомпилировано с задействованной поддержкой TCP/IP. См. раздел 4.9 об информации по компилированию вашего ядра. Для задействования сетевой организаци вы должны ответить "yes" на соответствующие вопросы на шаге конфигурирования и перестройки (rebuild) ядра. Мы также предполагаем, что ppp было компилировано и установлено на вашей системе. Мы предполагаем, что вы используете ядро Linux 1.2.x с программным обеспечением PPP 2.1.2 или Linux 1.3.X/2.0.x и PPP 2.2.0. Во время написания этого последней официальной версией PPP для Linux было ppp-2.2f. См. kerneld mini-HOWTO, если вы собираетесь использовать модули для загрузки ppp в ваше ядро. Весьма рекомендуется использовать версию ядра Linux и сответствующую версию PPP, про которые известно, что они устойчиво работают вместе. Вам также следует прочесть:

    *** докуметацию, приходящую с пакетом PPP;
    
    ***  pppd и chat man pages; 
    	(используйте  man chat и man pppd для их изучения)
    
    *** Linux Network Administration Guide (NAG);
    
    *** Net-2/3 HOWTO;
    
    *** документацию по Linux kernel, 
    	находящуюся в /usr/src/linux/Documentation,
        когда вы инсталлируете исходный код Linux;
    
    
    *** страницу The modem setup information -- см. 
    	Modem Setup Information
       (http://www.in.net/info/modems/index.html)
    
    *** прекрасные книги Unix/Linux, опубликованные  
    	O'Reilly и др. соавторами.
        См. (O'Reilly and Associates 
        On-Line catalog (http://www.ora.com/).
        Если вы новичок для  Unix/Linux, 
        бегите (не пешком) в ваш ближайший
        магазин с книгами по компьютерам и 
        немедленно покупайте их!
    
    *** PPP-FAQ, который поддерживает  
    	Al Longyear, доступный из
       (ftp://sunsite.unc.edu/pub/Linux/docs/faqs;
        см. приложение  B).
        Там содержится много полезной 
        информации в форме вопросов/ответов,
        очень нужно для выяснения того, 
        почему  PPP не работает правильно.
    
    

    6.2.2 Обзор необходимых.

    В начало страницы

    Имеется несколько шагов настройки вашей системы для использования PPP. Мы рекомендуем вам внимательно вчитааться в эти шаги перед попыткой фактически установить связи по PPP. Каждый из этих шагов будет ниже рассмотрен в деталях.

    1. Убедитесь, что поддержка  TCP/IP 
    	компилирована в вашем ядре.
    
    2. Убедитесь, что поддержка  PPP компилирована 
       в вашем ядре или статически
       или в форме загрузочного модуля.
    
    3. Убедитесь, что программное обеспечение  
       PPP скомпилировано и установлено
       на ваших систтемах.
    
    4. Проверьте, что вы имеете модем, 
       конфигурированный и установленный в вашем
       компьютере и вы знаете, к какому последовательному 
       порту он присоединен.
    
    5. Убедитесь, что вы имеете следующую информацию 
       от вашего провайдера  PPP
       dialup-сервера  (обычно ISP)
    
    *** телефонный номер, который вам нужно набирать 
        для связи с отдаленным
        провайдером услуг PPP dialup.
    
    *** Динамические или статические присваивания 
        IP вы используете.
        В последнем случае вы должны знать статический номер IP.
    
    *** IP-адрес сервера  DNS (Domain Name Service), 
        который вы будете использовать для разрешения
        имен хостов при связи.
    
    

    Убедитесь, что ядро имеет поддержку TCP/IP. Операции в Linux PPP вхдят в две чсти ядра: демон PPP и поддержа в ядре для PPP. Большинство дистрибуций, повидимому, обеспечивают поддержку PPP в ядре при установке ядра по умолчанию , но некоторые этого не делают. Вы должны быть уверены, что TCP/IP вкомпилирован в ваше ядро. Это можно проверить, выдав команду:

    grep -i ``TCP/IP'' /var/adm/messages

    Если вы получите строку вида

    Jun 8 09:52:08 gemini kernel: Swansea University Computer Society TCP/IP for NET3.019

    то вы имеете вкомпилированную поддержку TCP/IP. Вы также можете поискать подобную информацию на консоли во время загрузки Linux. На многих быстрых машинах это прокручивается слишком быстро. Вы можете использовать Shift - PageUp для прокрутки экрана, чтобы заметить это. Убедитесь, что ядро имеет поддержку PPP. Если при загрузке ваше ядро выдает соощения вида:

    *** Dynamic channel allocation code copyright 1995
    Caldera, Inc. PPP line discipline registered.
    
    то ваше ядро имеет поддержку  PPP. 
    Вы можете также выдать команду
    
    # grep -i ``PPP'' /var/adm/messages
    
    Если в ответе вы получите строку, подобную:
    
    Jun 8 09:52:08 gemini kernel: PPP: version 0.2.7 (4 channels)
    NEW_TTY_DRIVERS O PTIMIZE_FLAGS
    
    

    то это значит, что поддержка PPP есть. Убедитесь, что вы имеете конфигурированный модем. Вы должны также убедиться, что ваш модем правильно установлен и вы должны знать, к какому последовательному порту он присоединен.

    *** DOS com1: = Linux /dev/cua0 (and /dev/ttyS0), *** DOS com2: = Linux /dev/cua1 (and /dev/ttyS1), *** и т.д.

    Исторически, Linux использует устройства cuax для dial out и устройства ttySx для dial in. Код ядра, требовавший это, был изменен с версии 2.0.x, и теперь вы должны использовать ttySx как для dial in так и для dial out. Имена устройства cuax могут исчезнуть из следующих версий ядра. Если вы исползуете скоростной (external) модем (14,400 Baud или выше), ваш последовательный порт должен быть способен обрабатывать то, что дает модем, в частности, когда модем сжимает данные. Это требует от вашего последовательного порта использовать современный UART (Universal Asynchronous Receiver Transmitter), такой как 16550A. Если у вас старая машина (или старая последовательная карта), весьма возможно, что ваш последовательный порт имеет только 8250 UART, который будет причинять вам неприятности при использовании модема высокой скорости. Воспользуйтесь командой

    # setserial -a /dev/ttySx

    чтобы получить от Linux сведения о типе UART, который вы имеете. Если вы не имеете UART типа 16550A, вставьте новую последовательную карту (цена не выше $50). Вам понадобится правильная конфигурация модема для PPP--ЧИТАЙТЕ РУКОДСТВО ПО ВАШЕМУ МОДЕМУ! Большинство модемов имеет установку по умолчанию опций, которые требуются для PPP. Рекомендуемая конфигурация предусматривает (в стандартных командах Hayes'а):

    *** Текущий контроль аппаратуры (RTS/CTS) 
    	(&K3 на многих модемах)
    *** E1 Command/usr/src/linux-2.0.27/include/linux/serial.h
    	 Echo ON (требуется для работы  chat)
    *** Q0  Выдачу кода результата 
    	(требуется для работа chat)
    *** S0=0   Автоответчик  OFF 
    	(если вы не хотите чтобы, модем отвечал по
        телефону)
    *** &C1 Carrier Detect ON только после связи
    *** &S0 Data Set Ready (DSR) всегда  ON
    *** (depends) Data Terminal Ready
    
    

    Имеется сайт, предлагающий образцы конфигураций для все более возрастающего разнообразия модемов в Modem setup information (http://www.in.net/info/modems/index.html). Он может быть полезен для вас.

    Воспользуйтесь вашим коммуникационным программным обеспечением (например, minicom или seyon) чтобы выяснить все о конфигурации вашего модема и установить его на то, что требуется для PPP. Многие модемы сообщают о своих текущих установках в ответ на AT&V, но вы должны прокосультироваться в руководстве по вашему модему.

    Если вы совсем запутались в установках, вы обычно можете восстановить исходное состояние по команде AT&F--возврат к заводской нстройке. (Для большинства модемов, c которыми мне приходилось встречаться, заводские установки включали все, что нужно для PPP--но вы должны проверить это).

    Когда вы выработаете строку требуемой настройки модема, запишите ее. Вы можете помесить ее в энерго-независимую память модема, чтобы вызывать ее по соответствуюшей команде AT. Альтернативно вы можете передавать правильные установочные данные вашему модему как часть наборного процеса PPP.

    Если вы используете ваш модем из Linux только для вызова вашей ISP или корпоративного сервера, простейший способ установки будет заключаться в записи конфигурации модема в энерго-независимую RAM. С другой стороны, если ваш модем используется в других приложениях и операционных системах, безопаснее передавать эту информацию модему при каждом вызове, что будет гарантировать правильное состояние при любом вызове. (Это дает дополнительное преимущество при записи строки состояния в том случае, если модем утеряет состояние энерго-независимой памяти, что иногда случается).

    Информация ISP.

    Прежде чем вы установите связь PPP с отдаленным сервером,вам нужно получить следующую информацию от системного администратора или от инженеров ISP.

    *** Телефонный номер для запроса услуг, если вы находитесь на попечении PABX. Вам также нужен номер PABX, который дает вам внешний наборный тон--это есть обычно цифра ноль (0) или (9).

    *** ДИНАМИЧЕСКИЕ или СТАТИЧЕСКИЕ номера IP ипользует серваер? Если сервер исполльзует СТАТИЧЕСКИЕ номера IP, вам нужно знать, какой номер IP использовать для вашего окончания связи по PPP. Если ваш ISP предоставляет вам по subnet правильные номера IP, вам нужно знать, какие номера IP вы можете использовать и сетевую маску (netmask).

    Большинство провайдеров услуг Internet используют ДИНАМИЧЕСКИЕ номера IP. Как упоминалось выше, это влечет некоторые следствия в терминах услуг, которыми вы можете пользоваться. Однако, даже если вы используете СТАТИЧЕСКИЕ номера IP, большинство услуг PPP никогда (в целях защиты ) не позволят клиенту указывать номер IP, так как это рискованно для защиты. Но все же вы должны иметь эту информацию!

    *** Каковы номера IP для ISPs Domain Name Servers? Их должно быть по крайней мере два, хотя необходим только один. Здесь может возникнуть проблема. Установка MS Windows 95 PPP позволяет передавать адрес DNS клиенту как часть своего процесса связи. Так что ваш ISP (или корпоративный стол справок) может прекрасно сообщить вам, что вы не нуждаетесь в адресе IP сервера(ов) DNS. Но в Linux вы ДОЛЖНЫ иметь адрес по крайней мере одного DNS. Реализация Linux PPP не позволяет устанавливать номер DNS IP динамически во время связи -- и вполне возможно, что никогда не позволит это сделать.

    *** Требует ли сервер использовать PAP/CHAP? Если это так, вам нужно знать "id" и "секрет", который вы должны использовать при связи. (Вероятно, это ваше пользовательское имя и ваш пароль при вашем ISP).

    *** Запускает ли сервер PPP автоматически или необходимо выдавать какие-нибудь команды запуска PPP на сервере после входа в него? А если нужны команды, то какие?

    *** Является ли сервер системой Microsoft Windows NT. и если так, то использует ли он систему MS PAP/CHAP? Многие корпоративные LAN, повидимому, используют MS Windows NT таким образом для усиления защиты.

    Каждое устройство, которое связывается с Internet, должно иметь свой собственный, уникальный номер IP. Они присваиваются централизованно, уполномоченными на это службами в каждой стране. Поэтому для использования PPP необходимо иметь присвоенный вам номер IP. Благодаря увеличивающемуся количеству машин в Internet (частично из-за большого количества пользователей PPP), для PPP была разработана динамическая схема, которая обеспечивает IP для связи с вашей машиной, когда она вперые устанавливает связь PPP. Это значит. что вы получаете другой адрес IP каждый раз, когда вы пользуетесь отдаленным сервисом PPP dialup. Это наиболее обычный метод для большинства ISP. Другой метод состоит в использовании статического IP. Вы не можете просто выбрать какой-то IP для использования. Он должен быть присвоен централизованным агентством, уполномоченным для выдачи номеров IP. Это предотвращает два компьютера от получения того же самого адреса IP и создания проблем в Internet. Провайдер отдаленых услуг PPP будет в состоянии сообщить вам, статический или динамический IP вы используете и также обеспечить вас действующим номером IP, если вы используете статический метод.

    Важно отметить, что если вы пользуетесь динамическим присваиванием IP, будет очень трудно обеспечить какие-нибудь перманентные услуги Internet, такие как World Wide Web серверы, услуги gopher или Internet Relay Chat servers. Все же вы можете использовать такие услуги, которые есть на других машинах , но не могут быть предложены на вашей машине без применения очень больших усилий. Но это лежит вне пределов настоящего документа.

    PAP и CHAP есть различные обычно используемые методы аутентификации. Linux поддерживает оба этих метода.

    Тестирование вашегп модема и отдаленных служб. Теперь, когда вы избрали последовательные порты и установки модема, следует проверить, что эти установки правильны, путем вызова вашего ISP и проверкой связи. Используя ваш терминальный коммуникационный пакет (такой как minicom или seyon), установите инициализацию модема, требующуюся для PPP и вызовите сервер PPP для проведения сессии PPP. (Заметим: на этой стадии мы НЕ стараемся установить PPP-связь--только проверяем правильность телефонного номера и также определить, что точно сервер посылает нам для регистрации и начала PPP). Во время этого процесса или запомните (запишите в файл) весь процесс входа или тщательно (очень тщательно) запишите, какое приглашение сервер выдает, чтобы сообщить вам, что наступило время ввести ваше пользовательское имя и пароль (и всякие другие команды, нужные для установления связи PPP. Если ваш сервер использует PAP, вы не должны увидеть приглашение ко входу (login prompt), а вместо этого должны увидеть текстовое представление протокола контроля связи (оно выглядит как мусор на вашем экране).

    Несколько слов предупреждения:

    *** некоторые серверы весьма интеллигентны: вы можете регистрировать ваш вход, используя текст на основе вашего пользовательского имени/пароля или используя PAP. Так что ваш ISP или сайт фирмы использует PAP, но вы не видите начинающегося сразу мусора, который может и не означать, что вы сделали что-то неправильно.

    *** Некторые серверы требуют от вас ввести сначала некоторый текст, а уж потом и стандартную последовательность PAP (Password Autentification Protocol).

    ***Некоторые серверы PPP пассивны -- то-есть ничего не посылают, пока вызвавший их клиент не пошлет им правилльный пакет lcp. Если сервер PPP, с которым вы связались, действует в пассивном режиме, вы никогда не увидите мусора!

    *** Некотрые серверы не запускают PPP, пока вы не нажмете ENTER--так что стоит попробовать это, если вы правильно вошли и не видите мусора!

    Имеет смысл вызывать (dialing in) по крайней мере дважды--некоторые серверы меняют их приглашение (например, со временем!) при каждом вызове их. Два критических приглашения, которые ваш Linux box должен быть в состоянии идентифицировать при каждом вашем вызове, такие:

    *** приглашение, которое требует от вас ввести ваше пользовательское имя;

    *** приглашение, которое требует от вас ввода вашего пароля; если вы должны выдать команду начать на сервере PPP, вам также нужно найти приглашение, которое сервер дал вам при регистрации входа в него, чтобы сообщить вам, что вы можете теперь ввести команду начала PPP. Если ваш сервер автоматически запускает PPP, сразу поле вашего входа, вы увидите муор на вашем экране--это ваш сервер PPP посылает вашей машине информацию о начале и конфигурирует связь PPP. Это может выглядеть как:

    y}#.!}!}!} }8}!}}U}"}\&} } } } }}\& ...}'}"}(}"} .~~y}

    На некоторых системах PPP должен явно стартовать на сервере. Это происходит обычно потому, что сервер был установлен, чтобы разрешитть регистрацию PPP и регитрацию оболочки использованием той же самой пары user name/password. Если это так, выдавайте эту команду один раз пр вашем входе. Вы опять увидите мусор, когда начнется выход сервера из связи PPP.

    Если вы не увидите это немедленно после установления связи (и регистрации и запуска сервера PPP, если требуется), нажмите Enter, чтобы увидеть, запустит ли это сервер PPP. В этой точке вы можете выключить (hang up) ваш модем (обычно быстрой печатью +++ и затем выдачей команды ATH0, если ваш модем ответит OK).

    Если вы не можете заставить ваш модем работать, читате руководство и man pages для вашего коммуникационного программного обеспечения и Serial HOWTO. А просмотрев это, продолжайте действовать, как описано выше.

    Использование услуг Internet с динамическими номерами IP. Если вы используете динамические номера IP (многие провайдеры услуг будут давать вам только динамические номера, если вы не заплатите значительно больше за вашу связь), вы должны знать ограничения, которые это накладывает.

    Прежде всего, исходящий запрос на услугу будет работать прекрасно. То-есть, вы можете посылать email, используя sendmail (при условии, что вы имеете правильную установку sendmail), получать файлы ftp с отдаленных сайтов, просматривать (browse) web и т.п. В частности вы можете отвечать на email, которая пришла на вашу машины, когда вы были off line. Почта будет просто стоять в вашей почтовой очереди, пока вы не вызовете опять ваше ISP.

    Но ваша машина не будет связана с Internet 24 часа в сутки и не будет иметь один и тот же номер IP при каждой связи. Поэтому будет невозможно для вас получать email, направленную к вашей машине, и очень трудно установить сервер web или ftp, к которому могут получить доступ ваши друзья! С точки зрения Internet ваша машина не существует как уникальная, перманентно контактная машина, поскольку она не имеет уникального номера IP (помните -- другие машины будут использовать этот номер IP, когда он будет отведен им по их вызову (dial in)).

    Если вы установите WWW (или какой-нибудь другой сервер), он будет совершенно не известен никакому пользователю Internet, если только он не знает, что ваша машина находится на связи и фактически (в данный момент) имеет номер IP. Имеется несколько путей, по которым он может получить эту информацию: звонок по телефону от вас, посылка ему email, использование файлов ".plan" на оболочечной учетной записи (on a shell account) в вашем провайдере услуг (при условии, что ваш провайдер допускает оболочечный (shell) и кнопочный (finger) контакты). Для большинства пользователей это не составляет проблему, все, что хочет большинство пользователей -- посылать и получать email (используя вашу учетную запись на вашем провайдере услуг) и получить исходящую связь (make outbound connections) с WWW, ftp и другими серверами на Internet. Если вы хотите получить входящую связь (inbound connections) к вашему серверу, вы должны получить статический номер IP.

    Файлы связи PPP.

    Теперь вам нужно зарегистрироваться как root для создания каталогов и редактирования файлов, нужных для установки PPP. PPP использует несколько файлов для связи и установки соединений по PPP. Они различны по имени и размещению для PPP 2.1.2 и 2.2.

    Для PPP 2.1.2 это следующие файлы:

    /usr/sbin/pppd 
    # the PPP binary
    /usr/sbin/ppp-on 
    # the dialer/connection script
    /usr/sbin/ppp-off 
    # the disconnection script
    /etc/ppp/options 
    # опции pppd, используемые для всех связей
    /etc/ppp/options.ttyXX 
    # опции, специалные для свяи через этот порт
    
    Для  PPP 2.2 это следующие файлы:
    
    /usr/sbin/pppd 
    # the PPP binary
    /etc/ppp/scripts/ppp-on 
    # the dialer/connection script
    /etc/ppp/scripts/ppp-on-dialer 
    # part 1 of the dialer script
    /etc/ppp/scripts/ppp-off 
    # the actual chat script itself
    /etc/ppp/options 
    # the options pppd uses for all connections
    /etc/ppp/options.ttyXX 
    # the options specific to a connection on this port
    
    

    Пользователи Red Hat Linux должны заметить, что стандартная инсталляция Red Hat 4.X помtщает эти сценарии в /usr/doc/ppp-2.2.0f-2/scripts. В вашем каталоге /etc должен быть каталог ppp:

    drwxrwxr-x 2 root root 1024 Oct 9 11:01 ppp

    Если его нет -- создайте его с такими правами собственности и допусками. Если каталог уже существует, он должен содержать файл с бразцами опций с именем options.tpl. Этот файл приведен ниже на случай его отсутствия. Напечатайте его, так как он содержит объяснения почти всех опций PPP (они полезны для чтения вместе с pppd man pages). Хотя вы можете использовать этот файл как основу вашего файла /etc/ppp/options, вероятно, будет лучше создать свой собственный файл опций, который не содержит все комментарии образца - он будет гораздо короче и его легче читать и сохранять.

    Некоторые дистрибуции PPP, повидимому, утеряли файл options.tpl. Вы должны исследовать документ PPP-HOWTO для получения полной версии.

    Какие опции вам нужно использовать? Я не могу этого сказать. Опции, перечисленные здесь, должны работать с большинством серверов. А если не работают, читайте файл TEMPLATE (/etc/ppp/options.tpl) и pppd man pages и расспрашивайте системных администраторов и лиц, которые пользуются сервером, с которым вы связываетесь.

    Вы должны также заметить, что сцеарии связи, приведенные здесь, таке используют некоторые параметры командной строки для pppd, чтобы облегчить немного внесение изменений.

    # /etc/ppp/options (no PAP/CHAP support) 
    #
    # Prevent pppd from forking into the background -detach 
    #
    # use the modem control lines modem
    # use uucp style locks to ensure exclusive access 
    # to the serial device lock
    # use hardware flow control crtscts
    # create a default route for this connection 
    # in the routing table defaultroute
    # do NOT set up any "escaped" control sequences asyncmap 0
    # use a maximum transmission packet size of 552 bytes mtu 552
    # use a maximum receive packet size of 552 bytes mru 552
    #
    #---END OF SAMPLE /etc/ppp/options (no PAP/CHAP support)
    
    

    Установка связей PPP вручную.

    Теперь, когда вы создали ваши файлы /etc/ppp/options и /etc/resolv.conf (и, если нужно, файл /etc/ppp/pap--chap-secrets), вы можете проверить все установки ручной установкой связи PPP. (Если мы получим работающую ручную установку, мы автоматизируем этот процесс). Чтобы сделать это, ваше коммуникационное обеспечение должно быть способно к выходу (quitting) БЕЗ сброса модема. Minicom может делать это с помощью последовательности Control - A Q

    *** Проверьте, что вы зарегистрированы как root.

    *** Уберите (Fire up) ваше коммуникационное обеспечение (такое как minicom), вызовите сервер PPP и зарегистрируйтесь в обычном режиме. Если вам нужно выдать команду запустить PPP на сервере, сдеайте это. Вы теперь увидите мусор, который видели раньше.

    *** Если вы используете PAP или CHAP, тогда только связь с отдаленной системой должна запустить там PPP и вы увидите мусор без регистрации входа (хотя этого может не произойти для некоторых серверов - попробуйте нажать Enter и посмотрите, появится ли мусор).

    *** Теперь выйдите из коммуникационной программы без сброса модема и по приглашению Linux (в режиме root) введите

    # pppd -d /dev/ttyS0 38400 &

    подставив , конечно имя устройства, с которым связан ваш модем. Параметр -d включает отладку -- связь PPP начнет выдавать сообщения, которые будут поступать в ваш системный журнал. Они будут полезны позже.

    *** Огоньки на вашем модеме должнв теперь вспыхивать при связи. Это должно произойти вскоре после установки связи PPP.

    В этой точке вы можете следить за интерфесом PPP, выдав команду

    # ifconfig

    В дополнение на любом устройств Ethernet и loop back, которые вы имеете, вы должны увидеть что-то похожее на:

    ppp0 Link encap:Point-Point Protocol inet addr:10.144.153.104
    P-t-P:10.144.153.51 Mask:255.255.255.0
    UP POINTOPOINT RUNNING MTU:552 Metric:1 RX packets:0 errors:0 dropped:0
    overruns:0 TX packets:0 errors:0 dropped:0 overruns:0
    
    

    Здесь *** inet addr:10.144.153.10 есть номер IP вашего конца связи. *** P-t-P:10.144.153.5 есть номер IP сервера. (Ifconfig будет сообщать не эти номера IP, а те, которые использовались вашим сервером PPP)

    Замечание: ifconfig также сообщит вам, что связь установлена и ДЕЙСТВУЕТ! Вы будете также в состоянии увидеть маршрут к отдаленному хосту (и далее). Чтобы сделать это, выдайте команду # route -n .Вы увидите что-то в роде:

    Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface 10.144.153.3 * 255.255.255.255 UH 1500 0 1 ppp0 127.0.0.0 * 255.0.0.0 U 3584 0 11 lo 10.0.0.0 * 255.0.0.0 U 1500 0 35 eth0 default 10.144.153.3 * UG 1500 0 5 ppp0

    Осбенно важно здесь то, что мы видим ДВА элемента, указывающие на наш интерфейс PPP. Первый есть маршрут HOST (указанный флажком H ), и это позволяет нам увидеть хост, с которым мы связаны--но не дальше.

    Второй есть маршрут по умолчанию (установленный посредством указания для pppd орции defaultroute. Это есть маршрут, по которму наш Linux PC должен посылать каждый пакет, НЕ предназначенный для локальной Ethernet(s)-- куда мы имеем специальные сетевые маршруты --в сам сервер PPP. И тперь сам сервер РРР отвечает за посылку наших пакетов далее в Internet и маршрутизацию обратных пакетов к нам.

    Если вы не видите маршрутную таблицу с двумя элементами, значит, что-то не так. В частности, если ваш системный журнал содержит сообщение, говорящее, что ваш pppd не заменил существующий по умолчанию маршрут, то вы имеете маршрут, по умолчанию, указывающий на ваш интерфейс в Ethernet --который ДОЛЖЕН быть заменен специальным сетевым маршрутом: ВЫ МОЖЕТЕ ИМЕТЬ ТОЛЬКО ОДИН МАРШРУТ ПО УМОЛЧАНИЮ!!!

    Вам нужно изучить ваши инициализирующие системные файлы, чтобы выяснить, где нужно установить этот маршрут по умолчанию (он будет использовать команду route add default... ). Замените эту команду на что- подобное route add net....

    Теперь проверьте связь 'перебросив' ('pinging') сервер к его номеру IP, указанному в выходе ifconfig, т.e.

    # ping 10.144.153.51

    Вы должны получить выход вида:

    PING 10.144.153.51 (10.144.153.51): 56 data bytes 64 bytes from 10.144.153.51:
    icmp_seq=0 ttl=255 time=328.3 ms 64 bytes from 10.144.153.51: icmp_seq=1
    ttl=255 time=190.5 ms 64 bytes from 10.144.153.51: icmp_seq=2 ttl=255
    time=187.5 ms 64 bytes from 10.1 44.153.51: icmp_seq=3 ttl=255 time=170.7 ms
    

    Этот листинг будет продолжаться бесконечно--для его остановки нажмите Control - C , и тогда вы получите больше информации:

    -- 10.144.153.51 ping statistics 
    -- 4 packets transmitted, 4 packets received,
    0% packet loss round-trip min/avg/max = 170.7/219.2/328.3 ms
    
    

    Теперь попробуйте перебросить (try pinging) хост по имени (не по имени самого сервера PPP), но хоста на другом сайте , про который вы ЗНАЕТЕ, что он, вероятно, собирается работать. Например,

    # ping sunsite.unc.edu

    На этот раз будет небольшая задержка, поскольку Linux получит номер IP для fully qualified host name, который вы 'выхватили' у DNS, которое вы указали в /etc/resolv.conf--так что не беспокойтесь (вы увидите , как загорятся огоньки на вашем модеме). И вскоре вы получите выход вида:

    PING sunsite.unc.edu (152.2.254.81): 56 data bytes 64 bytes from 152.2.254.81:
    icmp_seq=0 ttl=254 time=190.1 ms 64 bytes from 152.2.254.81:
    icmp_seq=1 ttl=254 time=180.6 ms 64 bytes from 152.2.254.81:
    icmp_seq=2 ttl=254 time=169.8 ms 64 bytes from 152.2.254.81:
    icmp_seq=3 ttl=254 time=170.6 ms 64 bytes from 152.2.254.81:
    icmp_seq=4 ttl=254 time=170.6 ms
    

    Опять, остановите вывод, нажав Control - C, и получите статистику ...

    --- sunsite.unc.edu ping statistics 
    --- 5 packets transmitted, 5 packets
    received, 0% packet loss round-trip min/avg/max = 169.8/176.3/190.1 ms
    
    

    Если вы не получите никакого ответа, попробуйте перебросить (try pinging) IP-адрес сервера DNS на вашем сайте ISP. Если это даст результат, то похоже, что у вас проблемы с /etc/resolv.conf.

    А если и это не сработает, у вас проблемы с маршрутами или ваш ISP имеет проблемы с направлением пакетов обратно к вам. Проверьте вашу таблицу маршрутов, как показано выше, а если это OK, войдите в контакт с вашим ISP. Хорошим тестом для ISP будет использование для связи другой операционной системы. Если вы можете выйти за ваше ISP таким образом, то ошибка лежит на вашем конце.

    Если все работает, закройте связь, напечатав # ppp-off После короткой паузы модем должен выключиться сам. Если это не произойдет, или выключите ваш модем или остановите (fire up) ваши коммуникационные программы и прервите модем с +++ и затем с ATH0 после получения от модема приглащения OK.

    Вам может понадобиться также очистить файл lock, созданный pppd, напечатав

    # rm -f /var/lock/LCK..ttySx

    6.2.3 Создание сценариев связи.

    В начало страницы

    Вы можете продолжать входить в систему вручную, как это показано выше, но гораздо удобнее создать нескоько сценариев, чтобы они делали это автоматически. Набор сценариев автоматизирует вход в систему и старт PPP. Так что все, что вам нужно сделать ( как root или члену группы PPP) -- это выдать одну команду включения связи.

    Если ваш ISP (Internet Service Provider) требует использования PAP/CHAP, это будут сценарии для вас. Если пакет PPP инсталлирован правильно, вы должны иметь два экземпляра файлов. Для PPP 2.1.2 они находятся в /usr/sbin и для PPP 2.2 они находятся в /etc/ppp/scripts. Они называются

    для  PPP-2.1.2  : ppp-on  и   ppp-off ,
    
    и для PPP-2.2 :  ppp-off, ppp-on и ppp-on-dialer
    
    

    Теперь, если вы используете PPP 2.1.2, я очень советую вам убрать некоторые файлы (sample files). Они могут быть источником проблем. И не говорите мне, что они прекрасно работают -- я их тоже использовал годами (и рекомендовал их в первой версии этого HOWTO)!

    Для пользы пользователей PPP 2.1.2 я приведу ЛУЧШИЕ трафаретные версии, взятые из дистрибуции PPP 2.2. Я советую скопировать и использовать эти сценарии вместо старых сценариев PPP-2.1.2.

    15.2. Сценарий ppp-on. Это первый из ПАРЫ сценариев, которые фактически устанавливают (fire up) связь.

    #!/bin/sh #
    # Сценарий для инициации связи. 
    # Это-- первый из пары сценариев
    # Это не защищенная пара сценариев, так как коды
    # можно увидеть по команде 'ps'. Однако, они просты.
    # 
    # Дальше идутпараметры. Измените их, если нужно.
    TELEPHONE=555-1212 
    # The telephone number for the connection
    ACCOUNT=george 
    # The account name for logon (as in 'George Burns')
    PASSWORD=gracie 
    # The password for this account (and 'Gracie Allen')
    LOCAL_IP=0.0.0.0 
    # Local IP address if known.
    Dynamic = 0.0.0.0 REMOTE_IP=0.0.0.0 
    # Remote IP address if desired.
    Normally 0.0.0.0 NETMASK=255.255.255.0 
    # The proper netmask if needed
    # 
    # Export them so that they will be available to 'ppp-on-dialer'
    export TELEPHONE ACCOUNT PASSWORD
    # 
    # Это -- место расположения сценария, 
    # который набирает телефрнный номер и
    # регистрирует вход  (logs in)
    # Используйте абсолютное файловое имя, 
    # так как переменная $PATH
    # не используется в опции связи
    # (To do so on a 'root' account would be
    # a security hole so don't ask.)
    # DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
    # 
    # Инициация связи 
    # 
    #
    exec /usr/sbin/pppd debug /dev/ttySx 38400 \
    $LOCAL_IP:$REMOTE_IP \ connect $DIALER_SCRIPT
    
    Далее идет сценарий  ppp-on-dialer:
    
    #!/bin/sh 
    #
    
    # Это часть 2 сценария  ppp-on script. 
    # Он существляет протокол связи
    # для желаемого соединения. 
    #
    /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT 
    '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \
    ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 
    'OK-+++\c-OK' ATH0 \ TIMEOUT 30
    \ OK ATDT$TELEPHONE \ CONNECT '' \
     ogin:--ogin: $ACCOUNT \ assword: $PASSWORD
    
    
    Для  PPP-2.2, сценарий  ppp-off выглядит так:
    
    
    #!/bin/sh #########################################
    ### # # Determine the device to be terminated.
    # if [ "$1" = "" ]; then DEVICE=ppp0 else DEVICE=$1 fi
    ###################################################
    # 
    # If the ppp0 pid file is present then the program is running. 
    # Stop it.
    if [ -r /var/run/$DEVICE.pid ]; 
    then kill -INT `cat /var/run/$DEVICE.pid`
    # 
    # If the kill did not work then there is no process 
    # running for this
    # pid. It may also mean that the lock file will be left. 
    # You may wish #
    to delete the lock file at the same time.
    if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid
    echo "ERROR: Removed stale pid file"
    
    exit 1 fi # 
    # Успех. Пусть  pppd сам чистит свой мусор.
    echo "PPP link to $DEVICE terminated." exit 0 fi
    # 
    # Процесс ppp не исполняется для  ppp0
    echo "ERROR: PPP link is not active on $DEVICE" exit 1
    
    

    6.2.4 Редактирование полученных стартовых сценариев PPP.

    В начало страницы

    Как новые сценарии приходят в двух частях, так мы будем их и редактировать.

    Сценарий ppp-on.

    Вам нужно редактировать сценарий ppp-on, чтобы отразить ВАШЕ пользовательское имя в вашем ISP, ВАШ пароль в вашем ISP, телефонный номер вашего ISP. Каждая строка вроде TELEPHONE= фактически устанавливает переменные оболочки, которые получают значения, указанные справа от '=' (исключая комментарии). Поэтому редактируйте каждую из строк, как это нужно вашему ISP и связи. Также, если вы устанавливаете номер IP (если это нужно в файле etc/ppp/options, убирайте строки, которые говорят:

    $LOCAL_IP:$REMOTE_IP \

    А также обеспечьте, чтобы переменная оболочки DIALER SCRIPT указывала полное путевое имя наборного сценария, котрый вы фактически собираетесь использовать. Поэтому, если вы хотите перенести или переименовать сценарий, перередактируйте соответствующую строку в сценарии ppp-on!

    Сценарий ppp-on-dialer.

    Это есть второй из сценариев, которые фактически дают нам связь с ppp. Замечание: сценарий chat обычно лежит в одной строке. Обратные слеши используются для переноса строки на несколько физических строк для удобства чтения человеком и не являются частью самого сценария. Они полезны для лучшего понимания того, что должно быть сделано по этому сценарию!

    Сценарий chat есть последовательность пар "строка ожидания" "строка отсылки". Отметим в частности, что мы ВСЕГДА сначала чего-то ждем, перед тем как что-то послать. Если мы собираемся что-то послать, БЕЗ получения чего-то сначала, мы должны использовать пустую строку ожидания (указываемую как "") и аналогично в случае случае ожидания чего-то без посылки чего-либо! так, если строка состоит из нескольких слов( например, NO CARRIER), вы дожны закавычить ее так, чтобы она была единицей в chat.

    Строка chat в нашем трафарете есть:

    exec /usr/sbin/chat -v

    При вызове chat, параметр -v побуждает chat копировать ВЕСЬ ее I/O в системный журнал (обычно это /var/log/messages). Если вы убедитесь, что сценарий chat надежно работает, отредактируйте это строку, удалив -v , чтобы освободить ваш syslog от ненужной болтовни.

    TIMEOUT 3

    Это устанавливает timeout для получения ожидаемого ввода на 3 секунды. Вам может понадобиться уыеличить его до, скажем, 5 или 10 секунд, если у вас очень медленный модем!

    ABORT '\nBUSY\r'
    Отменить (abort) операцию, если получена строка BUSY.
    
    ABORT '\nNO ANSWER\r'
    Отменить операцию, если получена строка  NO ANSWER
    
    ABORT '\nRINGING\r\n\r\nRINGING\r' 
    \begin{verbatim} \end{tscreen}
    Если получена (повторная) строка RINGING, 
    отменить операцию. Потому, что
    кто-то звонит по вашей телефонной линии!
    
    \begin{tscreen} \begin{verbatim} " \rAT
    Не ожидая ничего от модема, послать строку AT.
    
    OK-+++\c-OK ATH0
    
    

    Это немного сложнее, так как испольует некоторую возможность chat самостоятельно исправлять ошибки. Это значит: Ожидаю OK, но если НЕ получу (потому что модем не находится в командном режиме) то послать +++ (стандартная строка для модемов типа Hayes, возвращающая модем в командный режим) и ждать OK. Затем послать ATH0 (строка отбоя для модема). Это позволяет вашему сценарию бороться с ситуацией зависания модема on-line!

    TIMEOUT 30

    Устанавливает таймаут в 30 секунд для окончания сценария. Если это покажется вам мало, увеличьте это время до 45 секунд или еще больше.

    OK ATDT$TELEPHONE

    Ожидать OK (ответа модема на команду ATH0 и набрать номер, который мы хотим вызвать.

    CONNECT ''

    Ожидать CONNECT (которое наш модем посылает после ответа отдаленного модема) а в ответ не послать ничего.

    ogin:--ogin: $ACCOUNT

    Снова мы имеем некоторое исправление ошибки, допущенной здесь. Ожидаем приглашения на для login (...ogin:) но если мы не получим его за время таймаута послать ответ и снова ожидать приглашения. Когда приглашение будет получено, послать имя пользователя (оно хранится в переменной $ACCOUNT).

    password: $PASSWORD

    Дождаться приглашения на пароль и послать наш пароль (также хранящийся в переменной оболочки). Этот сценарий chat имеет допустимую способность исправления ошибки. Вобще сhat имеет значительно больше особенностей, чем рассматривается здесь. Более подробную информацию можно получить в chat manual page (man 8 chat).

    6.2.5 Запуск PPP со стороны сервера.

    В начало страницы

    В то время как сценарий ppp-on-dialer хорош для серверов, которые автоматически запускают pppd на конце сервера, когда вы вошли в систему, некоторые серверы требуют, чтобы вы явно запускали PPP на сервере. Если вам нужно выдать команду запуска PPP на сервере, вам нужно отредактировать сценарий.

    Перед END сценария ( после строки пароля) добавьте дополнительно пару ожидание - посылка -- ту, которая должна относиться к вашему login prompt. Остерегайтесь символов, которые имеют специальный смысл в оболчке Bourne, таких как $[] . Когда chat находит приглашение оболочки, chat должна выдать команду запуска ppp, требующуюся для вашего сервера РРР в ISP. В случае одного автора сервер PPP использует стандартное приглашение Linux Bash

    [hartr@kepler hartr]$
    
    которое требует ответа
    
    # ppp
    
    для запуска  PPP на сервере.
    
    Хорошая идея допустить здесь немного 
    нейтрализации ошибок, так что используйте
    
    hartr--hartr ppp
    
    

    Это означает, что если мы не получим приглашения в течение таймаута, послать carriage return и ожидать приглашения снова. Если приглашение получено, послать строку ppp.

    Замечание: не забывайте добавить a к концу предыдущей строки, чтобы chat полагала, что весь сценарий chat расположен в одной строке!

    К несчастью, некоторые серверы выдают весьма различные наборы прглашений! Вам может потребоваться log in несколько раз при использовании minicom, чтобы понять происходящее и устойчиво выхватывать строки "expect".

    6.2.6 Если ваш сервер использует PAP (Password Authentication Protocol).

    В начало страницы

    Если сервер, с которым вы связываетесь, требует аутентификации PAP или CHAP, вам необходимы дополнительные действия. К приведенному выше файлу опций добавьте следующие строки

    # 
    # заставьте  pppd использовать ваше 
    # пользовательское имя в ISP
    # как ваше 'host name' в течение процесса
    # ауентификации имени  <вашего  ISP user name>
    # you need to edit this line
    # 
    # If you are running a PPP *server* and need 
    # to force PAP or CHAP
    # uncomment the appropriate one of the following lines. 
    # Do NOT use
    # these is you are a client connecting 
    # to a PPP server (even if it uses PAP
    # or CHAP) as this tells the SERVER 
    # to authenticate itself to your
    # machine (which almost certainly 
    # can't do---and the link will fail).
    #+chap #+pap
    # 
    # If you are using ENCRYPTED secrets 
    # in the /etc/ppp/pap-secrets
    # file, then uncomment the following line.
    # Note: this is NOT the same as using 
    # MS encrypted passwords as can be
    # set up in MS RAS on Windows NT.
    #+papcrypt
    

    6.2.7 Использование MSCHAP.

    В начало страницы

    Microsoft Windows NT RAS может быть установлен для вариаций в CHAP (Challenge/Handshake Authentication Protocol). В исходных кодах вашего PPP вы найдете файл с именем README.MSCHAP80, в котором рассматривается этот вопрос. Вы можете определить, запрашивает ли сервер аутентификацию, используя этот протокол посредством задействования отладки для pppd. Если сервер запрашивает аутентификацию для MS CHAP, вы увидите строчки такого рода:

    rcvd [LCP ConfReq id=0x2 ]

    Критичесуая информация здесь есть auth chap 80. Чтобы использовать MS CHAP, вам нужно рекомпилировать pppd для поддержки этого. Посмотрите инструкции в файле README.MSCHAP80 в исходном файле PPP о том, как компилирвать и использовать эту вариацию. Если вы используете аутентификацию pap или chap, то вам также нужно создать файлы secrets. Это 1) /etc/ppp/pap-secrets и 2) /etc/ppp/chap-secrets. Ими должен обладать пользователь root, группа root и они должны иметь допуски 740 для защиты. Первое, что нужно отметить о PAP и CHAP, это то, что они спроектрованы для аутентификации компьютeрных систем, а не пользователей. Другими словами, как только ваш компьютер установит связь PPP c сервером, ЛЮБОЙ пользователь вашей системы может испльзоватьэту связь -- не только один вы.

    PAP может ( и в случае CHAP ДОЛЖЕН) требовать двунаправенной аутентификации --то-есть правильное имя и secret требуются на каждом компьютере для другого компьютера связанной пары. Однако, это не тот путь, по которому идет большинство серверов РРР, предполагающих установить наборную PPP PAP-аутентифицированную связь.

    Как было сказано, ваш ISP будет вероятно передавать вам пользовательское имя и пароль, чтобы позволить вам связаться с его системой и тем самым с Internet. Ваш ISP вовсе не заинтересован в имени вашего компьютера, так что вам, повидимому будет нужно испольовать ползователское имя из вашего ISP как имя для вашего компьютера. Это делается употреблением имени параметра пользовательского имении в pppd. Так, если вы хотите использовать пользовательское имя, которое вам передал ваш ISP, добавьте строку

    name your_user name_at_your_ISP

    в ваш файл /etc/ppp/options. Технически, вы на самом деле будете использовать пользователя нашего пользовательского имени в вашем ISP для PAP, но pppd достаточно умен, чтобы интерпретировать это имя как пользователя, еси это необходимо для использования PAP. Преимущества использования имени опции состоит в том, что это также верно и для CHAP. Поскольку PAP служит для аутентификации компьютеров, технически вам нужно указывать также имя отдаленного компьютера. Однако, поскольку большинство людей имеют только одного ISP, вы можете использовать шаблон (*) для имени отдаленого хоста в файле secrets.

    Файл  /etc/ppp/pap-secrets выглядит так:
    
    # Secrets for authentication using PAP
    # client server secret acceptable_local_IP_addresses
    
    

    Четыре поля есть пробелы между ограничителями, последнее поле может быть пустым (Это то, что вам нужно для размещения динамических и, возможно, статических IP от вашего ISP). Предположим, ваш ISP дал вам пользовательское имя fred и пароль flintstone, и вы хотите вставить имя параметра fred в /etc/ppp/options и установить ваш файл /etc/ppp/pap-secrets следующим образом

    # Secrets for authentication using PAP
    # client server secret acceptable local 
    # IP addresses fred * flintstone
    
    

    Это отводит для локальной машины имя fred (про которое мы сказали pppd, что его нужно испоьзовать (хотя это не наше локальное машиное имя) для ЛЮБОГО сервера, и использовать пароль (секретный) flintstone.

    Заметим, что нам не нужно указывать локальный адрес IP, если только мы не требуем ПРИНУДИТЕЛЬНО именно локальный статический адрес IP. Даже если вы попробуете это, это будет отличаться от действий большинства серверов PPP, которые (в целях защиты) не позволяют отдаленным системам устанавливать номер IP, который они им передают. Это требует использовать взаимные аутентификационные методы --- то-есть вы должны позволять вашей машине аутентифицировать отдаленный сервер, а серверу аутентифицировать вашу машину.

    Так что, если ваша машина есть fred, удаленная машина есть barney, ваша машина должна установить name fred remotename barney, а отдаленная машина должна установить name barney remotename fred в соответствующих файлах /etc/ppp/options.ttySx.

    Файл /etc/chap-secrets для fred будет выглядеть так:
    
    # Secrets for authentication using CHAP
    # client server secret acceptable local 
    # IP addresses fred barney flintstone
    barney fred wilma
    
    а для  barney так:
    
    # Secrets for authentication using CHAP
    # client server secret acceptable local 
    # IP addresses barney fred flintstone
    fred barney wilma
    
    

    Заметим в частности, что обе машины должны иметь элементы (entries) для двусторонней аутентификации. Это позволяет локальной машине аутентифицировать себя для отдаленной машины И отдаленной машине аутентифицмровать себя для локальнй машины.

    Сценарий chat для связей, аутентифицированных по PAP/CHAP. Если ваш ISP использует PAP/CHAP, то ваш сценарий chat будет много проще. Все, что ваш сценарий chat должен сделать, это набрать номер телефона, дождаться связи, затем позволить pppd обработать logging in!

    #!/bin/sh #
    # Это есть часть 2 сценария  ppp-on. 
    # Он осуществит протокол связи
    # для желаемого соединения.
    # exec /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \
    ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \
    'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' \
    
    

    Как мы уже видели, вы можете включить выдачу отладочной информации при регистрации, добавив в pppd параметр -d. Опция 'debug' эквивалентна этому. Когда вы устанавливаете новую связь по новому сценарию, оставьте в нем опцию debug. (Предупреждение: если у вас мало дискового пространства, обмены сообщениями в pppd могут быстро переполнить ваш файл syslog и доставить вам неприятности). Если вам повезет и все будет работать правильно, вы можете убрать эту опцию.

    exec /usr/sbin/pppd debug file options.myserver /dev/ttyS0 38400 \

    Тестирование сценария связи.

    Откройте новую root Xterm (если вы в X) или откройте новую виртуальную консоль и зарегистрируйтесь как root. В этой новой сессии выдайте команду

    # tail -f /var/log/messages

    Многие системы выдают информацию в /var/log/messages. Если этот файл в вашей системе имеет другое имя, подставьте его имя приведенную выше команду. В первом окне (или в виртуальной консоли) выдайте команду

    # ppp-on &

    (или употребите то имя, по которому вы вызываете вашу отредактированную версию /usr/sbin/ppp-on). Если вы не переведете сценарий на второй план, указав & в конце команды, вы не получите опять вашео терминального приглашения, пока ppp не закончит работу (т.е. пока связь не прервется). Теперь переключитесь опять на окно, которое следит за вашим системным журналом.

    6.2.8 Закрытие свяи по PPP.

    В начало страницы

    Когда вы закончите связь по PPP, воспользуйтесь стандартной командой ppp-off, чтобы выключить ее (помните, что вы должны быть root или членом группы ppp!).

    6.2.9 Устранение неисправностей в работающей связи

    В начало страницы

    Одна из проблем, с которыми вы столкнетесь -- это то, что многие провайдеры услуг поддерживают только те програмные пакеты связи, которые они сами предоставили новым пользователя. Это типично для Microsoft Windows (и многие провайдеры услг для настольных компьютеров кажутся ничего не знающими о Unix (или Linux). Так что будьте готовы к ограниченной помощи от них!

    Вы, конечно, можете, оказать им милость и осведомить их о Linux (каждый сотрудник ISP help desk должен быть 'with it' в терминах Internet, и это значит, что они должны иметь у себя Linux box--и конечно имеют)!

    Проблемы разрешения адреса.

    OK--ваша связь PPP установлена и работает и вы можете вызывать (ping) сервер PPP по номеру IP (второй или "отдаленный" номер IP, показанный посредством ifconfig ppp0), но вы не можете достичь ничего за ним. Прежде всего попробуйте вызвать (try pinging) IP-номера, которые вы указали в /etc/resolv.conf как номера серверов. Если это сработает, вы можете видеть за пределами вашего сервера PPP (если только он не имеет IP-номера, совпадающего с "отдаленным" номером IP вашей связи). Так что теперь попробуйте набрать (try pinging) полное Internet-имя вашего провайдера услуг:

    ping my.isp.net

    исппользуя, конечно, имя вашего фактического ISP. Если это не сработает, у вас имеются проблемы с разрешением имени (name resolution). Это происходит, вероятно, из-за ошибки в вашем файле /etc/resolv.conf. Тщательно проверьте этот файл по информации в образце файла /etc/resolve.conf в разделе 6.1.1. Если это не поможет (и ваш провайдер услуг подтвердит, что его серверы имен запущены и работают), ваши проблемы состоят в чем-то другом. Просмотрите внимательно всю вашу инсталляцию Linux (особенно внимательно проверьте допуски к файлам).

    Если вы все еще не можете выхватить (ping) у вашего провайдера услуг серверы имен IP по их номеру IP, это значит, что или они не работают (выдйте им голосовой вызов и проверьте это), или имеется проблема с маршрутами со стороны ting вашего провайдера услуг. Возможно также, что "remote end" есть сервер Linux PPP, для которого опция форматирования IP не указана в ядре!

    Отладка неудавшейся попытки.

    Имеется много причин, по которым ваши соединения могут не работать-- chat не удалось правильно закончиться, у вас помехи в линии связи и т.п. Ищите признаки неудач в вашем системном журнале.

    Очень часто проблема состоит в том, что поддержку PPP компилируют внутри ядра, а при попытке запуска pppd ядро жалуется, что оно не поддерживает ppp! Это может быть вызвано рядом причин.

    ***  Вам не удалось загрузить новое ядро, 
    	которое вы скомпилироали с  PPP.
    *** Вам не удалось инсталлировать модуль  PPP, 
    	который вы скомпилировали.
    *** Вы ожидали автоматическую загрузку модулей, 
    	а ее не произошло.
    
    *** Вы используете для вашего ядра неправильную версию PPP.
    
    *** Вы не исполняете  pppd в режиме  root.
    *** Вы допустили опечатку в ващих стартовых сценариях.
    *** Вы неправильно зарегистрировались при входе в сервер.
    *** Вы не запустили PPP в сервере.
    *** Отдаленный процесс PPP замедлился на старте.
    *** Маршрут по умолчанию не установлен. И куча других причин.
     
    

    Смотрите в PPP FAQ (который фактически представляет последовательность вопросов и ответов). Это очень ценный документ, он содержит много ответов! Если там нет ответа для вашей проблемы, это значит, что она не связана с ошибкой в ppp!

    Получение помощи в полном тупике.

    Если вы не можете заставить вашу связь по PPP работать, вернитест к началу этого доумента и проверьте все--вкупе с выводом, сделанным "chat-v..." и "pppd -d" в вашем системном журнале.

    А также консультируйтесь с документацией PPP и FAQ плюс другие упомянутые здесь документы! Если вы все еще не можете сдвинуться с места, попробуйте обратиться в comp.os.linux.misc и comp.os.linux.networking newsgroups и постарайтесь найти людей, которые могут помочь вам в PPP.

    Если вы обратитесь за помощью в USENET newsgroups, не посылайте пожалуйста очень длинных сообщений с отладочными выдачами, которые зря загружают сеть. Лучше просто описать проблему и, может быть, добавить несколько строк отладочной выдачи (не более одного экрана).

    6.3 Сети с UUCP.

    В начало страницы

    UUCP (UNIX-to-UNIX Copy) есть старый механизм, используемый для передачи информации между системами UNIX. Используя UUCP, системы UNIX вызывают друг друга (используя модем) и передают почтовые собщенияs, новые статьи, файлы и пр. Если вы не имеете доступа к TCP/IP или SLIP, вы можете использовать UUCP для коммуникаций с окружающим миром. Большая часть почты и новостей в software (см. разделы 6.5 and 6.6) может быть сконфигурирована для использования UUCP для передачи информвции другим машинам. Фактически если около вас имеется сайт Internet, вы можете организовать пересылку почты Internet на вашу машину Linux через UUCP с этого сайта.

    Руководство Linux Network Administrator's Guide содержит полную информацию по конфигурированию и использованию UUCP под Linux. А также и Linux UUCP HOWTO, доступное по анонимному FTP с sunsite.unc.edu, может оказать вам в этом помощь. Еще один источник информации о UUCP есть книга Managing UUCP and USENET, авторы Tim O'Reilly и Grace Todino. См. приложение A.

    6.4 Сети с Microsoft Systems.

    В начало страницы

    Samba есть последовательность программ, которые работают вместе для всех клиентов для доступа в файловое пространство серверов и принтеров через протокол SMB (Server Message Block). Изначально написанная для Unix, Samba теперь работает также на Netware, OS/2 и VMS. На практике это означает, что вы можете перенаправлять диски и принтеры в диски и принтеры Linux от клиентов Lan Manager, Windows для клиентов Workgroups 3.11, клиентов Windows NT, клиентов Linux и OS/2. Это дает возможность этим операционным системам вести себя подобно серверу LAN или серверской машине Windows NT, причем с дополнительной функциональностью и гибкостью, облегчающими жизнь администраторов.

    Samba: Integrating UNIX and Windows содержит полную информацию о конфигурировании и использовании Samba под Linux. Samba home pages, которые помещаются в http://samba.anu.edu.au/samba/ и SMB HOWTO также могут быть полезными.

    6.5 Электронная почта.

    В начало страницы

    Подобно большинству систем UNIX, Linux обеспечивает ряд программных пакетов для электронной почты . E-mail на вашей системе может или быть локальной (то-есть, вы общаетесь только с пользователями вашей системы), или networked (то-есть вы посылаете почту, используя или TCP/IP или UUCP, поьзователям других машин сети). Программное обеспечение E-mail обычно состоит их двух частей: почтальон (mailer) и транспорт. Почтальон есть программа на уровне пользователя, которая используется для составления и чтения сообщений e-mail. Популярные почтальоны (mailers) включают в себя elm и mailx. Транспорт есть техническая программа, которая фактически заботится о доставке почты, локально или дистанционно. Пользователь никогда не видит транспортное software; он контактирует только с почтальоном. Однако, как системному администратору, вам важно понимать принципы транспортного обеспечения и правила его конфигурации.

    Наиболее популярная транспортная программа для Linux есть sendmail. Она в состоянии посылать и локальную и отдаленую TCP/IP и UUCP e-mail. Альтернативой для sendmail может быть Smail. Документ The Linux Mail HOWTO даст больше информации об доступном почтовом software для Linux и о его конфигурации в вашей системе. Если вы планируете посылать почту далеко, вам необходим или TCP/IP или UUCP, в зависимости от того, в какой сети находится ваша машина (см. разделы 6.1 и 6.3). В этом вам могут помочь документы по UUCP и TCP/IP, перечисленные в приложении А. Большая часть программного обеспечения для Linux mail может быть получена по анонимному FTP из sunsite.unc.edu в кталоге /pub/Linux/system/Mail.

    6.6 Новости и Usenet.

    В начало страницы

    Linux также предоставляет ряд средств для управления электронными новостями. Вы можете избрать установку локального сервера новостей в вашей системе, который даст возможность пользователям посылать "статьи" в различные "news groups" в системе, представляя оживленную форму дискуссии. Однако, если вы имеете доступ к сети TCP/IP или UUCP, вы будете в состоянии участвовать в Usenet--всемирной сети службы новостей. Имеются две стороны в news software--сервер и клиент. Сервер новостей есть software, которое управляет группами новостей (news groups) и обрабатывает доставку статей к другим машинам (если вы включены в сеть). Клиент новостей, или читатель новостей, есть software, которое связывается с сервером, чтобы дать пользователям возможность читать и посылать новости. Имеется несколько форм серверов новостей, доступных в Linux. Все они следуют одному и тому же базисному протоколу и дизайну. Две первичных версии есть "C News" и "INN". Имеется много типов читателей новостей, таких как rn и tin. Выбор читателя новостей есть в основном дело вкуса; все читатели новостей должны работать одинаково хорошо с различными версиями серверов. То-есть, читатель новостей независим от сервера новостей и наоборот. Если вы хотите использовать news локально, (то-есть не как часть Usenet), то вам нужно запускать сервер на вашей системе, также как и инсталлировать читателя новостей для пользователей. Сервер новостей будет записывать статьи в каталоги, такие как /var/spool/news, а читатель новостей должен залезать в этот каталог за статьями новостей.

    Однако, если вы хотите выполнять news через сеть, имеются несколько опций, открытых для вас. TCP/IP network-based news использует протокол, известный как NNTP (Network News Transmission Protocol). NNTP позволяет читателю новостей читать новости через сеть с отдаленной машины. NNTP также позволяет серверу новостей посылать статьи друг другу через сеть--это и есть software, на котором основывается Usenet. Большинство деловых оргнизаций и университетов имеют один или более серверов NNTP, установленных для обработки всех новостей Usenet на данном сайте. Каждая другая машина при этом сайте эксплоатирует читателя новостей на базе NNTP для чтения и посылки новостей по сети через сервер NNTP. Это значит, что только сервер NNTP фактически передает статьи новостей на диск.

    Приведем несколько возможных сценариев для конфигурирования news.

    *** Вы исполняете news локально. То-есть, вы не имеете связи с сетью или не хотите передавать новости по сети. В таком случае вам нужно использовать C News или INN на вашей машине и установить читатель новостей ля чтения новостей локально.

    *** Вы имеете допуск в сеть TCP/IP и к серверу NNTP. Если ваша организация имеет установленный сервер новостей NNTP, вы можете читать и посылать новости с вашей машины Linux, просто установив на базе NNTP читатель новостей. (Большинство читателей новостей могут быть сконфигурированы для работы локально или для использования NNTP). В этом случае вам не нужно инсталлировать сервер нвостей или хранить статьи новостей в вашей системе. Читатель новостей позаботится о чтении и посылке новостей через сеть. Конечно, вам будет нужно иметь сконфигурированную TCP/IP и иметь доступ к сети (см. раздел 6.1).

    *** Вы имеете доступ к сети TCP/IP, но не имеете сервера NNTP. В таком случае вы можете запустить сервер новостей NNTP на вашей системе Linux. Вы можете инсталлировать или локальный или базирующийся на NNTP читатель новостей, и сервер будет хранить статьи с новостями на вашей системе. Кроме того, вы можете конфигурировать сервер для коммуникаций через сервер новостей NNTP по передаче статей с новостями.

    *** Вы хотите передавать новости с помощью UUCP. Если вы имеете доступ UUCP, (см. раздел 6.3), вы также можете принимать участие в Usenet. Вам будет нужно установить (локальный) сервер новостей и читатель новостей. В дополнение, вам будет нужно сконфигурировать ваше UUCP software для периодической передачи статей новостей к другой соседней машине UUCP (называемой вашей "news feed").

    Большинство "стандартного" news software (доступного через анонимное FTP от ftp.uu.net из каталога /news) комилировано сразу для Linux. Необходимые поправки можно найти на сайте sunsite.unc.edu в /pub/Linux/system/Mail (где, между прочим, можно найти и mail software для Linux). И другие двоичные коды для news можно найти здесь же. Подробности см. в Linux News HOWTO из sunsite.unc.edu в /pub/Linux/docs/HOWTO. А также the LDP's Linux Network Administrator's Guide содержит полную информацию о конфигурировании news software для Linux. Книга Managing UUCP and Usenet, авторы Tim O'Reilly и Grace Todino, есть прекрасное руководство для установки UUCP и news software. Представлякет интерес также Usenet docu мент "How to become a Usenet site," доступный из ftp.uu.net, в каталоге /usenet/news.announce.newusers.


<<< Оглавление Страница: 6  7 >>>