ISP-Hookup-HOWTO

Egil Kvaleberg [email protected] Русский перевод Ilgiz Kalmetev, [email protected]

v1.23, 9 December 1996


В этом документе рассказывается как использовать Linux для подключения к интернет провайдеру через модем. Также даны основы работы по установлению связи по телефонной линии и настройке IP, электронной почты, новостей.

1. Введение

Это описание создано как ответ на вопросы пользователей о том, как можно настроить доступ к ISP (Internet Service Provider) по коммутируемой линии в Linux.

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

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

Для простоты, примеры даны относительно следующих установок:

Наш dirk будет звонить со своей машины roderick.

Все вышеприведенные установки должны быть соотвественно заменены вашими собственными значениями. Чаще всего пользователям требуется внести минимальные изменения для подключения к различным ISP. Я постараюсь разрешить проблемы, которые вы можете встретить.

1.1 Новые версии этого документа

Новые версии этого документа будут периодически поститься в comp.os.linux.answers. Они также будут поступать на различные анонимные FTP-сайты, которые собирают такую информацию, включая:

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

1.2 Обратная связь

Все комментарии, сообщения об ошибках, дополнительная информация и критика всех сортов должны направляться по адресу:

1.3 Отказ от ответственности

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

Будет описана только один из всевозможных вариантов установок. В мире Linux, обычно существует множество путей решения одной задачи. Абзацы, содержащие альтернативные пути решения помечены ALT: Пожалуйста, заметьте также, что FTP-ссылки часто изменяются по мере создания новых версий программ.

Я постараюсь описывать только программы, распространяемые под определенной лицензией или разрешенные для личного использования. Большинство программ имеет доступные исходные тексты под лицензией GNU.

1.4 Информация о авторских правах

Этот документ создан (c)1996 Egil Kvaleberg и распространяется под следующими терминами:

2. Как мне подсоединиться к остальному миру?

Предполагается, что мы уже имеем установленные модули сетевого программного обеспечения (напр., часть N-серии Slackware), и что вы используете последовательный порт /dev/modem.

Настройка по умолчанию позволяет обращаться к /dev/modem только как пользователь root.

Чтобы напрямую подсоединиться к shell ISP и поэкспериментировать над процессом соединения, вы можете использовать программу minicom. Она прекрасно подходит для этой цели.

2.1 Основная настройка

Настройка машины для использования в сети должна производиться от root. Первым делом удостоверьтесь, что файл /etc/hosts.deny содержит строки:

       ALL: ALL
Вы вероятно захотите позволить собственный трафик, потому добавьте в /etc/hosts.allow:
       ALL: LOCAL
или что тоже самое:
       ALL: 127.0.0.1
В последующем, заметьте, предполагается соединение по PPP с динамическим IP адресом. Если вы имеете фиксированный адрес, то в настройках будут некоторые изменения.

Прекрасно иметь имя у машины, имя, которое пользователь с динамическим IP может действительно выбрать таким, каким пожелает. Введите имя в /etc/hostname:

       roderick
Следующий шаг - установка сервера имен в /etc/resolv.conf:
  search .
  nameserver 193.212.1.0
Сервер имен должен быть указан числовым IP адресом, и отличается для каждого ISP. Если требуется, вы можете прописать до трех различных серверов. Они будут опрашиваться в том порядке, в каком вы их указали.

Если вы хотите иметь возможность использовать имена типа somemachine как сокращение для somemachine.acme.net, вы должны заменить первую строку на:

       search acme.net
Определенный минимум настройки также требуется для /etc/hosts. Большинство пользователей смогут управлять:
       127.0.0.1 localhost
       0.0.0.0   roderick
Пользователь с фиксированным адресом очевидно должен вместо 0.0.0.0 указать свой фиксированный адрес.

Аналогично минимальный /etc/networks:

       loopback  127.0.0.0
       localnet  0.0.0.0
Также вы можете установить ваш внешний почтовый домен в /etc/mailname:
       acme.net
Имя пользователя и пароль для ISP должны быть указаны в /etc/ppp/pap-secrets
       dirk * PrettySecret
Для тех ISP, которые используют CHAP вместо PAP, имя файла будет /etc/ppp/chap-secrets.

Наконец, надо описать процедуру соединения, которая производится перед инициализацией PPP проделать. Это делается в /etc/ppp/chatscript:

       TIMEOUT 5
       "" ATZ
       OK ATDT12345678
       ABORT "NO CARRIER"
       ABORT BUSY
       ABORT "NO DIALTONE"
       ABORT WAITING
       TIMEOUT 45
       CONNECT ""
       TIMEOUT 5
       "name:" ppp
Содержимое можно настроить по-своему. Телефонный номер в третьей строке, конечно, должен быть заменен на ваш. Некоторым пользователям может понадобиться заменить строку инициализации модема ATZ на более соответствующую их модему. Последняя строка указывает, что в ответ на приглашение name: надо ответить ppp. Другие системы могут иметь другие процедуры входа в систему.

Чтобы проинициировать звонок, PPP-протокол может быть активизирован командой:

       exec pppd connect \
            'chat -v -f /etc/ppp/chatscript' \
             -detach crtscts modem defaultroute \
             user dirk \
             /dev/modem 38400
Сейчас мы должны войти в сеть и оставаться на линии до тех пор, пока не нажмем Ctrl-C. Любые сообщения, отражающие состояние соединения, добавляются в системный журнал. Чтобы прочесть их попробуйте:
       tail /var/adm/messages
Пока PPP поднят, вы напрямую подключены к Интернет, и можете использовать программы типа ftp, ncftp, rlogin, telnet, finger итд. Все эти программы являются частью пакета network.

Также информация о PPP также доступна в:

Наконец, дополнительное слово о безопасности. Файл /etc/inetd.conf содержит список всех сервисов, которые ваша машина обслуживает внешне. Файлом /etc/hosts.deny мы запретим внешний доступ. Для нужных сервисов доступ можно позволить файлом /etc/hosts.allow. Локальный трафик может быть разрешен:
       ALL: LOCAL
См. также man 5 hosts_access.

Маленькое замечание: Существует определенное недопонимание по поводу имен протоколов POP. Определения в /etc/services обычно такие:

       pop2      109/tcp   pop-2     # PostOffice V.2
       pop3      110/tcp   pop-3 pop # PostOffice V.3
ALT: Вместо chatscript можно использовать намного более гибкий dip. Но не одновременно с diald.

ALT: Счастливчики, имеющие постоянное TCP/IP соединение через, например, Ethernet, могут спокойно пропустить все, что касается, PPP, и сосредоточиться на вопросах установки их сетевых адаптеров.

ALT: У некоторых может не быть доступа через PPP, но может быть SLIP, для которого поддержка такая же, как для PPP. Другая возможность - UUCP. Другие могут иметь только новости и почту. Описание для варианта с почтой находится на:

Также возможна программа TERM. Почитайте Term-HOWTO.

3. Как мне бродить по Интернет?

Если вас больше интересует текствое содержание, вам пригодится Lynx Web-браузер. Он находится на:

Если у вас установлен X-windows, вы можете использовать множество графических браузеров. Chimera находится на: Mosaic: Mozilla (Netscape): Эти браузеры постоянно обновляются и доступны во всех версиях.

Использование и оценка этих программ оговариваются определенными лицензиями. Пожалуйста, ознакомьтесь с ними.

4. Как отправлять и принимать электронную почту?

Самое первое, удостоверьтесь, что sendmail уcтановлен. Sendmail сортирует внутреннюю и исходящую почту, и держит ее в буфере до тех пор, пока не появится возможность для ее отправки.

Sendmail основывается на настройках в /etc/sendmail.cf. Подходящий для клиентов ISP пример может быть найден на:

Он основан на procmail, как агенте доставки, но может быть легко изменен для пользователя.

Если требуется иметь официальный домен для исходящей почты, то в /etc/sendmail.cf надо указать:

       # who I masquerade as (null for no masquerading)
       DMacme.net
Эта установка позволяет вам иметь ваше имя локально таким же, как у вашего ISP. Sendmail сейчас настроен для отправки почты прямо получателю. Для избежания продолжительных и повторяющихся соединений в тех случаях, когда соединение для приема почты медленное и непостоянное, обычно используют ISP как накопитель почты. Это можно сделать указанием спецификации DS:
       # "Smart" relay host (may be null)
       DSmail.acme.net
Заметьте, что sendmail чувствителен к обработке символов табуляции в файле sendmail.cf. Вы можете использовать редактор vi, чтобы убедиться, что символы табуляции не подменяются на другие.

Прием почты часто может быть выполнен через протокол POP3, который может быть инициализирован при каждом соединении. Скрипт для проверки этого:

       sendmail -q
       popclient -3 -v mail.acme.net -u dirk -p "PrettySecret" \
              -k -o /usr/spool/mail/dirk
Этот скрипт может быть запущен после установления PPP-сессии. Заметьте, что это только тест, поэтому удостоверьтесь, что местный почтовый ящик не затрагивается при выполнении этого скрипта. Опция -k говорит, что почта остается в почтовом ящике ISP, и вы просто получаете копию ее. Как только убедитесь, что скрипт работает корректно, можете удалить эту опцию.

Кроме того, пароль будет отображаться в коммандной строке. Это должно быть исправлено ASAP.

Более безопасная и лучшая версия этого скрипта находится на:

Эта версия скрипта требует установленного procmail, который находится на: Procmail - простое и гибкое средство, которое может сортировать входящую почту основываясь на большом количестве критериев. Вдобавок, можно автоматизировать задачи, вроде сообщений-памяток и т.п.

Заметьте, что когда мы прямо используем procmail, как в этом случае, ситуация несколько отличается от описанной в документации на procmail Файл .forward не требуется, и также нам не нужен .procmailrc. Последний нужен только для сортировки почты.

Интерфейс пользователя для чтения и отправки почты может быть найден в программах типа Pine или Elm.

ALT: Для обычного клиента ISP, работающего по коммутируемой линии, нет необходимости иметь активным sendmail демон. Чтобы сократить потребление ресурсов можно закомментировать строку запуска sendmail, которая обчно находится в /etc/rc.d/rc.M.

ALT: Вместо sendmail может использоваться более простой smail. Он очень хорошо описан в (также как и другие полезные вещи) в Руководстве Сетевого Администратора Linux.

ALT: Для создания sendmail.cf есть пакет m4. Он прекрасно подходит для модификации существующей конфигурации.

ALT: Есть менее гибкие, но более простые альтернативы. Pine может быть запусщен в неинтерактивном режиме на указываемый в настройках промежуток времени, например. Можно даже использовать новые версии некоторых веббраузеров.

ALT: Многим энтузиастам нравится примочка Gnus к Emacs, которая работает с почтой и новостями. Дополнительная информация на:

ALT: Альтернативный pop-клиент - это pop-perl5. Доступен на:

5. Новости

5.1 Как настроить онлайновую читалку новостей?

Пока PPP активен, можно читать новости в онлайне. Есть куча доступных программ. Два примера: rtin и trn.

Чтобы начать читать новости, то в большинстве случаев достаточно сделать (обычно только раз и для всех в файле .profile):

       export NNTPSERVER=news.acme.net
Для получения в сообщениях корректного From-address, некоторые программы могут потребовать:
  export NNTP_INEWS_DOMAIN=acme.net

5.2 Как настроить оффлайновую читалку новостей?

Чтобы читать новости в offline и таким образом сократить счета за телефон и достичь большей гибкости, надо установить локальный news-spool. Это потребует усилий по настройке, и также определенного объема дискового пространства. После первичной настройки все должно более или менее благополучно работать, требуя лишь некоторого внимания время от времени.

Здесь описаны два различных решения.

5.3 Как настроить C News?

Здесь описано решение на базе ньюссервера C News и протоколе NNTP. C News предназначался для несколько других целей, но его гибкости хватает и для нашей ситуации. Также можно использовать более свежий продукт - сервер новостей INN, но он может требовать большее количество ресурсов. В любом случае не вздумайте ставить их обоих одновременно; они не дружат друг с другом.

Критично, что обработка новостей делается от имени пользователя news, и все конфигурационные файлы находятся в каталоге /usr/lib/news. Один из способов сделать это, при регистрации как root выполнить su news; cd.

Самые важные настроечные файлы это:

C News нуждаются в определенной доле ежедневного внимания со стороны администратора, но его действия могут быть определены один раз и для всех командой crontab -e для пользователя news. Далее показано как может выглядеть эта установка; она может быть настроена как вам угодно:
       # maintain incoming и outgoing batches
       10,40 *  * * * /usr/lib/newsbin/input/newsrun

       # expire C News, once a day
       30 0  * * * /usr/lib/newsbin/expire/doexpire

       # monitor и report if needed
       00 2  * * sat /usr/lib/newsbin/maint/addmissing
       40 3  * * * /usr/lib/newsbin/maint/newswatch
       50 3  * * * /usr/lib/newsbin/maint/newsdaily
newsrun перемещает входящие и исходящие статьи (дважды в час), doexpire будет удалять утаревшие статьи (каждую нось в 00:30), а три последние команды выополняют различные административные и корректирующие ошибки функции.

Нужно также удостовериться, что при запуске машины все чисто. От пользователя root, добавьте строку в /etc/rc.d/rc.local:

       su news -c /usr/lib/newsbin/maint/newsboot
News могут обрабатываться программой NewsX, извлекающей новости с NNTP-сервера. Программа может быть найдена на: Установка NewsX предельно проста. Установка в классическом случае:
       make
       su
       make install
       exit
Для приведенной установки все, что вы должны сделать - это создать группы, которые вы хотите читать, используя команду "addgroup".

Чтобы выбрать статьи, пользователь news выдает следующие команды (при установке связи по PPP, или аналогичной -):

       newsrun
       newsx acme news.acme.net
       newsrun
Опция -d дает непрерывную распечатку экрану. За подробной информацией обратитесь к документации NewsX.

NewsX будет также заботиться о регистрации исходящих новостей.

Для управления удалением статей при их устаревании требуется файл explist, требуется. Комментарии в этом примере должны объяснить, что мы делаем:

       # hold onto history lines 14 days, nobody gets >120 days
       /expired/           x    14   -
       /bounds/            x    0-1-120 -

       # retain these for 2 months
       comp.sources,comp.os.linux.all     x    60   -

       # noise gets thrown away fast
       junk,control             x    2    -

       # default:  14 days, no archive
       all                 x    14   -

ALT: В маленьком спуле новостей, не требуется частое управление группами новостей. Полезность трафика изменяется в широких пределах. Основная задача состоит в определении, какие статьи отбросить, а какие группы создать автоматически. Чтобы гарантировать, что управляющие сообщения, содержащие новую группу, не создадут у нас беспорядок, в файле, называемом newgroupperm определяется, что именно мы позволяем:

       comp.os.linux  [email protected] yv
       all       any       nq
В этом примере, будут созданы все группы в иерархии comp.os.linux (y), и пользовательские новости будут сообщаться (v). Все остальные будут молча (q) проигнорированы (n). Последняя строка нужна, если вы хотите создавать все группы вручную.

ALT: Альтернатива NewsX - suck, или slurp совместно с postit. Slurp использует NNTP NEWNEWS, который может работать с несколькими серверами.

5.4 Как настроить Leafnode?

Другое решение состоит в установке интегрированного пакета leafnode. Он выполняет все задачи, требуемые для персонального спула новостей, и легко настраивается. Доступен на:

Как для C News, вся обработка новостей ведется от пользователя news.

Домашний каталог для leafnode /usr/lib/leafnode. Для установки введите:

       cd /usr/lib/leafnode
       tar -xzvf leafnode-0.8.tgz
       cd leafnode-0.8
       make
       su
       make install
Оставаясь пользователем root, измените строку, которая управляет NNTP в /etc/inetd.conf:
       nntp  stream  tcp  nowait  news  /usr/sbin/tcpd /usr/local/sbin/leafnode
Активизация:
       killall -HUP inetd
Возвратимся к пользователю news, напечатав exit. В /usr/lib/leafnode/config изменяем строку, которая определяет сервер NNTP. В нашем случае:
       server = news.acme.net
Leafnode будет обслуживать себя добавлением следующей команды через crontab -e от пользователя news:
       # expire Leafnode, once a day
       0 4 * * * /usr/local/sbin/texpire
Обмен новостями производится также от пользователя news следующей командой (PPP поднят и запущен):
       /usr/local/sbin/fetch
Пользователи, которые хотят читать новости, должны после этого использовать рецепт "Как мне установить онлайновую читалку новостей?", за исключением того, что их настройки производятся для локальной машины, т.е.:
       export NNTPSERVER=localhost
Это должно быть все имеется к этому. Первая выборка посты передаст список доступных групп новостей. Leafnode затем посмотрит, какие группы запрошены пользователями, и соответственно настроится при следующей активизации.

ALT: Альтернатива leafnode - nntpcache. Он доступен на:

6. Как автоматизировать процедуру соединения?

Автоматизированная обработка новостей и почты в Linux делается легко.

Во-первых, надо создать /usr/lib/ppp/ppp-on, который устанавливает соединение с ISP. Часто этот файл содержит только:

       /usr/sbin/pppd
В /etc/ppp/options указываются такие спецификации:
       connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
       crtscts
       modem
       defaultroute
       asyncmap 00000000
       user dirk
       /dev/modem 38400
Для завершения соединения, используйте соответственнно файл /usr/lib/ppp/ppp-off.

Проверив функциональные возможности этих двух скриптов, теперь нужно написать скрипты, которые выполняют другие задачи. Скрипт для забора email был описан выше, и мы поместим его в /home/dirk/pop.

Скрипт обмена почтой может быть потом выполнен как /root/mail:

       #! /bin/sh
       #
       # exchange mail
       # 10 minutes timeout:
       TIMEOUT=600
       DT=10

       # kick sendmail:
       sendmail -q &

       # retrieve mail:
       su dirk -c /home/dirk/pop

       # wait for sendmail to terminate:
       t=0
       while ! mailq | grep -q "Mail queue is empty"; do
           t=$[$t+$DT]
           if [ $t -gt $TIMEOUT ] ; then
            echo "sendmail -q timeout ($TIMEOUT).."
            exit 1
           fi
           sleep $DT
       done

       exit 0
Скрипт обмена новостями может быть записан как /usr/lib/news/news:
       #!/bin/sh
       #
       # обмен новостями
       # должен быть запущен от пользователя news:
       cd /usr/lib/news

       #обновить исходящие пакеты (C News):
       /usr/lib/newsbin/input/newsrun < /dev/null

       #обмен новостями:
       /usr/lib/newsbin/newsx acme news.acme.net

       #и обработать пришедшие пакеты:
       /usr/lib/newsbin/input/newsrun < /dev/null
Скрипт, соединяет различные составляющие и куски, и может быть размещен как /root/news+mail:
  #!/bin/sh
  #
  # обмен новостями и почтой
  # должен запускаться от root
  #
  if ! /usr/lib/ppp/ppp-on; then
      exit 1
  fi
  trap "/usr/lib/ppp/ppp-off" 1 2 3 15

  #обмен почтой и новостями
  /root/mail &
  su news -c ~news/news
  wait

  #отсодиниться..
  /usr/lib/ppp/ppp-off

  #обновить исходящие пакеты (C News)::
  su news -c /usr/lib/newsbin/input/newsrun < /dev/null &

  exit 0
Легко добавить расширение к вышеприведенному скрипту для установления соединения, если имеется почта и новости для отправки. Давайте назовем его /root/news+mail.cond, и имейте в виду, что имя спула исходящих новостей должно быть исправлено на значение в вашей системе:
       #!/bin/sh
       #
       # exchange news и email, only if outgoing news или mail
       # (C News spool)
       if [ -s /var/spool/news/out.going/acme/togo ] ||
           ! ( mailq | grep -q "Mail queue is empty"); then
            /root/news+mail
       fi
Осталось только задать время, когда все это запускать. Это делается использованием команды crontab -e от имени root. Давайте назначим обмен почтой и новостями на 07:00 утра и затем каждые четыре часа отправку почты и новостей:
       00 7      * * *     /root/news+mail
       00 11,15,19,23 * * *     /root/news+mail.cond
Удостоверьтесть, что каждый компонент тщательно проверен, прежде чем начнете использовать их вместе. Позже можно добавить несколько других задач, таких как установка времени дня (используя ntpdate) и автоматическое обновление (зеркалирование) локально разрабатываемых файлов WWW и FTP на ISP (используя make и ftp).

ALT: В зависимости от предпочтений, также возможно поключить какой-либо процесс. При каждом поднятии PPP, запускается скрипт /etc/ppp/ip-up. Здесь можно добавить команды для запуска процедуры обмена почтой и новостями. См. man pppd для подробностей.

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

Утилита diald доступна на: В других местах можно обнаружить и другие варианты создания PPP-сессий.

7. Слова напоследок

7.1 О каких других вещах я должен знать?

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

Более детальная информация о определенных ISP доступна из различных источников:

Если вы знаете, где еще можно найти информацию о ISP, пожалуйста, напишите.

8.1 Как мне узнать побольше?

В Linux Documentation Project есть книга, называемая Linux Network Administrator's Guide от Olaf Kirch - прекрасное руководство для тех, кто устанавливает и делает что-то, относящееся к TCP/IP и Internet:

Документaция, которая поставляется с каждым программным пакетом обычно содержит всю детальную информацию, которая вам нужна. man-страницы - первое место, в которое надо заглянуть. Для примера попробуйте:
       man pppd
Также вы можете найти некоторую документaцию на определенные программы в каталоге /usr/doc, хотя он не всегда хорошо структурирован.

Весьма рекомендуются следующие HOWTO:

8.2 Благодарности

Эта информация собрана из различных источников. Благодарю следующих людей, который косвенно либо непосредственно помогли мне:

       Adam Holt <[email protected]>
       Arne Coucheron <[email protected]>
       Arne Riiber <[email protected]>
       Arnt Gulbrandsen <[email protected]>
       Bjorn Steensrud <[email protected]>
       Gisle Hannemyr <[email protected]>
       Hans Amund Rosbach <[email protected]>
       Hans Peter Verne <[email protected]>
       Harald T Alvestrand <[email protected]>
       Harald Terkelsen  <[email protected]>
       Haavard Engum <[email protected]>
       Johan S. Seland <[email protected]>
       John Phillips <[email protected]>
       Jorn Lokoy <[email protected]>
       Kenneth Tjostheim <[email protected]>
       Kjell M. Myksvoll <[email protected]>
       Kjetil T. Homme <[email protected]>
       Michael Meissner <[email protected]>
       N J Bailey <[email protected]>
       Nicolai Langfeldt <[email protected]>
       Ove Ruben R Olsen <[email protected]>
       R. Bardarson <[email protected]>
       Steinar Fremme <[email protected]>
       Sverre H. Huseby <[email protected]>
       Trond Eivind Glomsrod <[email protected]>
       Tommy Larsen <[email protected]>