Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

HOWTO: Эмулятор SLIP/PPP

версия 3.0 (доработана 07.08.1997), автор Irish

Перевод: Станислав Рогин, SWSoft Pte Ltd.

Этот документ описывает процесс установки соединения между Linux-машиной и стандартными сайтом через эмулятор SLIP/PPP, например, такой как SLiRP или TIA. Я не несу никакой ответственности за использование этой информации, но замечания и дополнения приветствуются.

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

Хорошо, перейдем к делу!


  • 1.0 Как работает эмулятор?

Необходимо понимать общие принципы работы эмулятора SLIP/PPP, чтобы знать его ограничения. Во-первых, нет необходимости устанавливать этот эмулятор на вашей машине. Он работает только на вашей удаленной машине. Все, что нужно иметь на вашей машине - это TCP/IP и протоколы SLIP или PPP, встроенные в ядро (об этом немного позже), а также некоторые клиентские программы.

Итак, что происходит: вы посылаете сетевые запросы с вашей машины на удаленную через SLIP/PPP соединение. Эмулятор перехватывает запросы и посылает их напрямую в сеть. Затем, входящие данные из сети посылаются в адрес удаленной машины, где эмулятор их перехватывает и посылает через SLIP/PPP на вашу машину. Итак, в сети все выглядит так, как будто вы работаете со своего входа на удаленной машине, то есть, как будто вы на самом деле в сети.

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

Другое серьезное различие между эмулятором и настоящим SLIP/PPP состоит в том, что вам НЕ выделяется ваш личный IP-адрес; запомните, вы просто превращаете свой dialup вход в SLIP/PPP соединение.

  • 1.1 Что такое TIA?

The Internet Adaptor (адаптер интернета) был написан классными ребятами с marketplace.com. Они уже прекратили работать над ним, и считают его 'законченным' продуктом. Последняя его версия - 2.05; если  вы собираетесь использовать TIA, то возьмите эту версию. !ЗАМЕТЬТЕ! По-моему, только сайтовые лицензии доступны на текущий момент.

  • 1.2 Что такое SLiRP? 

Это бесплатная программа (freeware), созданная с лицензией GNU Public License. Она уже вышла из зачаточного состояния, и теперь по-настоящему стабильна. У нее немного больше функций, чем у TIA, и она (по сообщениям) требует меньше ресурсов. Она доступна почти на всех хороших Linux FTP-сайтах.

  • 1.3 Что насчет Term?

Если у вас нет root-доступа к вашей машине по той или иной причине, и вы не можете уговорить того, кто устанавливает SLIP и dip, то у вас нет другого выбора, как использовать Term. Если вы хотите больше знать о Term, то читайте HOWTO на Sunsite.

  • 1.4 Что о настоящем SLIP/PPP?

Да, многие фирмы сейчас предлагают настоящий SLIP/PPP по доступным ценам для невыделенного dial-up. Если  вы можете себе это позволить, или просто ощущаете потребность, тогда используйте его. Настоящее всегда лучше эмуляции. Однако, у эмулятора есть одна очень хорошая особенность - безопасность; он действует как мощный  firewall, и с ним вы значительно более пуленепробиваемы, в отличие от вашего провайдера. Конечно, вы за это заплатите, эмуляция достаточно медленна, и не полностью поддерживает все протоколы. В любом случае, эмуляция достаточно хороша для многих, и является прекрасным способом подключения к Интернет.


Достаточно! Как я все это настрою?

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

Во-первых, вам будет необходим IP-адрес вашего провайдера, если у вас его еще нет. Вы можете сделать это, набрав 'who' в командной строке, или посмотреть их /etc/hosts, или просто спросить. Пока вы все это узнаете, не забудьте взять адреса также и POP/SMTP, и NNTP серверов  (если вы не знаете, что это такое, доверьтесь мне, спросите про них в любом случае, они вам понадобятся).

Во-вторых, коротко объясню про имена машин и доменов. Имя машины - это первая часть имени машины, а домен - это остальная часть. Например: hostname.domain.name (если частей четыре, то это будет: hostname.do.main.name). Вместе они составляют полное имя машины (Fully Qualified Domain Name) (FQDN).

Имя вашей Linux машины находится в файле /etc/HOSTNAME, и, конечно, вы можете его изменить. На самом деле, измените (в дистрибутиве Slackware, это будет "darkstar.frop.org" по умолчанию). Просто отредактируйте файл /etc/HOSTNAME, как захотите - помните, что у вас эмулятор, вы невидимы для сети, и можете быть изобретательны. Однако, если вы планируете когда-нибудь подключиться к настоящему SLIP/PPP, то вам лучше быть суб-машиной вашего провайдера. Например, если ваш провайдер "info.superhiway.com", то его домен "superhiway.com" и имя машины "info". Поэтому вы можете быть или "offramp.info.superhiway.com", или просто "offramp.superhiway.com". Оба варианта должны работать, но, в любом случае, имя вашего машины - "offramp".

  • 2.0 Подготавливаем вашу Linux машину

Короче говоря, требуется следующее. Первые три пункта я объясню подробнее.

    • - Соберите свое ядро, включив в него SLIP и TCP/IP
    • - Исправьте некоторые файлы в каталоге /etc
    • - Установите и настройте dip
    • - Установите pppd (необязательно, только для PPP)

Вам также понадобится получить соответствующий эмулятор для вашей удаленноймашины и установить его там. SLiRP можно найти на Sunsite и других хороших Linux-сайтах. Вся информация о TIA находится на Домашнем cайте TIA.

Это все! Начнем.

  • 2.1 Собираем ваше ядро

Если вы никогда ранее этого не делали, то придется начать. Сначала прочитайте FAQ, но не волнуйтесь, там все просто. Если  вы хотите, напишите мне и я помогу.

Для краткости предположим, что вы это уже проделывали. Когда будете делать 'make config', ищите там раздел "Network Devices" ("Сетевые устройства"). Ответьте там 'y' (да), конечно, потом так же ответьте на вопросы SLIP, CSLIP, (или соответственно PPP) и, обязательно, TCP/IP, и ответьте 'n'(нет) на все остальное, если нет сетевой платы или вам не нужны другие протоколы для чего-то еще. Если вы этого не сделаете, эмулятор не заработает! Заканчивайте сборку и установку ядра и затем

  • 2.2 Отредактируйте некоторые файлы в каталоге /etc

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

    • /etc/hosts:
 
#Следующая строка обязательна ИМЕННО в таком виде
127.0.0.1       localhost
 
#Заметьте, что в конце следующих двух строк повторяется имя машины.
#Эта аббревиатура является псевдонимом, и обязательна для первой строки.
#Если вы подключены к локальной сети, вам надо заменить IP-адрес
#в первой строке, приведенной ниже.
192.0.2.1       "yourhostname.domain.name  yourhostname"
"XXX.XXX.XX.XX" "remotehostname.domain.name  remotehostname"  
        
    • /etc/host.conf:
 
order hosts, bind
multi on
        
    • /etc/resolv.conf:
 
domain "yourdomain.name"       
#Следующая строка обычно содержит тот же IP-адрес, что и /etc/hosts
nameserver "XXX.XXX.XX.XX"     
        
    • Для использования  NNTP-сервера, добавьте следующую строку в файл /etc/profile:

export NNTPSERVER="remote.hosts.nntpservername"

  • 2.3.1 DIP

DIP (Dialup Internet Protocol) - это то, что вам понадобится для дозвона до удаленной машины, запуска эмулятора и протокола SLIP/PPP. Он идет в наборе "N" пакетов дистрибутива Slackware, вместе с большим набором клиентов и утилит, несколько из которых вы тоже, скорее всего, захотите установить =). DIP можно также взять на Sunsite, в виде независимого tar-файла

После установки вам необходимо настроить dip-скрипт. Ниже приведен пример, просто впишите правильные значения  вместо тех, что в кавычках (но уже без кавычек - они здесь приведены для выделения):

-----------------------------РЕЗАТЬ ЗДЕСЬ-----------------------------

 
main:
  get $local "yourhostname.domain.name"
  get $remote "remotehostname.domain.name"
 
#Ваш последовательный порт здесь
  port cua"?" 
 
#Используйте 115200 для более быстрых модемов
  speed 57600
  reset
 
#Не используйте пробелы в ваших AT-командах
  init AT "строка команд" 
  wait OK 5
 
# Эта секция занимется передозвоном. Если не работает,
# то измените время ожидания (слушая модем).
# Если все еще не работает, пишите мне.
# См.также: замечание о кодах ошибок в конце скрипта.
 
dial:
  dial "номер телефорна"
  print Набор номера...
  if $errlvl != 0 goto error
 
#Вам возможно потребуется изменить это время ожидания для вашего модема
  wait BUSY 20
  if $errlvl == 0 goto dial       
 
login:
  print Соединение установлено. Регистрация...
 
#Секция ниже ожидает входа и входит в мою машину Annex. Измените соответственно вашему сайту!
  wait ==> 60
  send 4\n
  wait ogin: 60
  if $errlvl != 0 goto login_error1
  send "УЧЕТНОЕ ИМЯ"\n
  wait assword: 60
  if $errlvl != 0 goto login_error2
  send "ПАРОЛЬ"\n
 
loggedin:
  wait "СИСТЕМНОЕ ПРИГЛАШЕНИЕ" 60
  if $errlvl != 0 goto shell_error
  print Logged in!
  send "команда запуска эмулятора"\n
  wait "ответ эмулятора" 60
  if $errlvl != 0 goto emu_error
 
#Рекомендованное значение MTU (Maximum Transfer Unit) равно 1500, 
#но значение 296 визуально быстрее.
#FTP может стать медленнее, так что выбирайте по вкусу.
  get $mtu 296
  default
 
done:
  print СОЕДИНЕНИЕ с $remote установлено. Адрес $rmtip
  mode CSLIP
  goto exit
 
error:
  print Ошибка дозвона
 
login_error1:
  print Нет приглашения Login
 
login_error2:
  print Нет приглашения Password
 
shell_error:
  print Нет приглашения командной строки
 
emu_error:
  print Ошибка при запуске эмулятора
 
exit:
 
#Это будет ошибкой при запуске с флагом -v, но сработает при обычном запуске
#(dip Заканчивает работу в локальном приглашении командной строки).
  \r               

-----------------------------РЕЗАТЬ ЗДЕСЬ-----------------------------

  • 2.3.2 Замечания по dip:  Новые версии dip не возвращают ответы модема (BUSY, NO CONNECT, и т.п..), они вместо этого используют их номера. Вот список кодов ответов:
    • 0 = OK
    • 1 = CONNECT
    • 2 = ERROR
    • 3 = BUSY
    • 4 = NO CARRIER

Таким образом, секция dial будет выглядеть примерно так:

 
dial:
  dial "номер телефона"
  print Набор номера...
  if $errlvl != 0 goto error
  wait 1 20        
  if $errlvl != 1 goto dial

Спасибо Lee Olds (lee@eskimo.com) за эту подсказку.

\n = перевод строки (new line), \r = возврат каретки (carriage return). Вам понадобится тот или другой (или оба) в необходимых для этого местах. Если те, которые приведены выше, не работают, то поэкспериментируйте.

Пара слов об ожиданиях и посылках данных. Если это не ясно из примера, то вот приблизительно то, что происходит:

 
  wait ogin: 60
   (скрипт ожидает символов 'ogin:' от  удаленной машины в течение 60
    секунд. Когда он их получает, то продолжает работу. Если не получает,
    он продолжает работу через 60 секунд.)
  if $errlvl != 0 goto login_error1 (вся эта строка не обязательна)
   (Если скрипт продолжил работу, получив то, что ожидал, 
    то эта строка пропускается. Если же вышло время ожидания, 
    то он перейдет к строке с сообщением об ошибке
  send "УЧЕТНОЕ ИМЯ"\n
   (DIP посылает 'УЧЕТНОЕ ИМЯ' и символ новой строки) 

Вы можете вставить команды 'sleep', где это необходимо, например: "sleep 10" Это заставит скрипт ожидать (pause) в течение 10 секунд.

После редактирования этого файла, переименуйте его, например, в remote.dip и поместите в каталог /root. Затем, будучи root-ом, запустите 'dip remote'. Используйте флаг -v для просмотра более детальных (debug) сообщений ('dip -v remote'), это укажет вам все шаги, которые предпринимает dip.

Dip может запускаться только под root-ом, но существует способ запустить его и под обычными пользователями. На текущий момент, если вам интересно, как это происходит, пишите. Я, возможно, включу эту информацию сюда, если будет много просьб.

Если dip продолжает выдавать ошибки, то попробуйте убрать комментарии.

  • 2.4 PPP

Все, что написано выше, работает с CSLIP, что достаточно почти для всего. Его, на самом деле, просто заставить работать, так как поддержка протокола ведется на уровне ядра - убедитесь, что поддержка встроена, и она заработает.

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

Во-первых, в последних версиях DIP сказано, что его можно использовать для запуска PPP, и вы конечно можете, НО он лишь запускает PPPd - ни флагов, ни чего-то другого. Поэтому если вы будете использовать DIP для запуска PPP, внесите все ваши данные и установки в файл /etc/ppp/options, или ничего не заработает.

Упоминая о файле options, одна из строк там ДОЛЖНА быть, независимо от того, как вы запускаете pppd: '192.0.2.1:XXX.XXX.XX.XX'. Она обозначает 'локальныйIPадрес:удаленныйIPадрес'. Вам это нужно потому, что в обычном случае pppd это заполнит сам, но при  работе с эмулятором этого не произойдет, что и приведет к ошибке.

Убедитесь в том, что у вас последняя и самая хорошая версия пакета pppd. У некоторых более старых версии были некоторые проблемы.

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


  • 3.0 И что теперь?

Ну, если все прошло хорошо, то вы уже в Сети! Попробуйте 'telnet remotehostname' (помните эту аббревиатуру в вашем файле hosts?). Вы должны получить приглашение ко входу через telnet. Давайте, пробуйте! Теперь вы можете использовать telnet/FTP/и т.п. где угодно в Сети с вашей машины. Как? Ваша машина использует удаленную машинe, как nameserver (сервер имен) для преобразования  (resolve) адресов (см. файл resolv.conf). Экспериментируйте, выясните, что работает, и что нет.

Вы не сможете использовать сервисы, которые недоступны на вашей удаленной машине! Например, если ваш сервер не разрешает telnet, скорее всего, и вы не сможете. Почему? Потому, что эмулятор просто перенаправляет (re-direct) то, что уже есть.

  • 3.1 Почта

Очевидным решением для текстового режима является Pine, его можно взять в Вашингтонском университете.

По моему мнению, 'Лучшая почтовая X-программа' - это XFmail. Она наконец-то вылезла из начальной beta-стадии и прекрасно работает. Легко устанавливается; не требует установки локальной почтовой системы (но работает с локальными spool-ами почты), потому что в нее встроен протокол POP - никаких лишних popclient/fetchpop! Проста в использовании; полностью настраиваема в GUI. Также поддерживает MIME. Получите ее с Официального сайта XFmail.

  • 3.2 Новости

Текстовая система чтения новостей SLRN достаточно проста в установке и использовании. Это настоящая система чтения новостей NNTP, которая не требует настройки локального транспорта новостей для работы (то есть не надо ставить Cnews или INN). Ей просто необходимо, чтобы у вас был доступ к NNTP-серверу, и у многих провайдеров этот доступ открыт. Она сделана для текстового режима, но в нее встроена поддержка цвета и мыши, а также она прекрасно работает в окне rxvt.

Система чтения новостей KNews для X-Windows почти безупречна. Как и вышеописанная SLRN, она не требует локального транспорта, ей достаточно NNTP-сервера. По крайней мере, она стоит того, чтобы на нее взглянуть.

  • 3.3 Mosaic/Netscape

Очевидно, что для этого вам придется запустить X, но это одно из самых простых условий, по сравнению с перекачкой их по FTP, распаковкой и установкой в систему.


  • 4.0 Прочее

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

Если вам нужна какая-либо помощь, или у вас проблемы с настройкой, я помогу, но вы должны послать мне следующую информацию: 1. Копию трех ваших файлов из каталога /etc. 2.  Копию выходной информации (output) вашего dip-скрипта, запущенного с флагом -v (Пожалуйста, уберите оттуда ваш пароль!)

Если вам нечего мне посоветовать, но вы удачно использовали мой документ, ПОЖАЛУЙСТА, НАПИШИТЕ МНЕ. Я хочу знать, насколько применим мой документ.

  • 4.1 Ссылки

FTP-сайт Sunsite находится по адресу sunsite.unc.edu, это настоящий рог изобилия со всем, что касается Linux, включая почти все написанные FAQ, HOWTO, и README.

Marketplace.com - это домашний адрес программы TIA, единственное место, где его можно взять.

А я сам - Irish, irish@eskimo.com, я доступен для любых комментариев по Linux, если только не играю со своей кошкой или не обнимаюсь со своим ребенком.

Этот HOWTO можно взять по  следующим адресам:


Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу