эта страница доступна на следующих языках: English Castellano Deutsch Francais Nederlands Russian Turkce |
автор Guido Socher Об авторе: Guido давний поклонник Linux. Ему нравится эта ОС не только из-за ее высокого технического качества, но и из-за сообщества Linux. Содержание: |
Резюме:
Заметка рассказывает о настройке нескольких ISP под Linux и использования
их.
Данное решение подходит не только для одного отдельно взятого компьютера
подключенного к Internet, но и, например, для использования доступа в Internet
всей семьей одновременно. Все, что необходимо сделать - настроить DNS proxy (DNS
forwarding) и IP masquerading под
Linux.
С недавних пор доступ в Internet стал довольно простым и обычным делом. Большинство ISP больше не требуют абонентской месячной платы и заключения длительных контрактов. Если выбранный вами провайдер испытывает технические проблемы или предоставляет неудовлетворительный сервис - вы просто меняете его. В Германии мы называем это "Internet by Call". Вам не надо регистрироваться или что-то подписывать. Вы просто платите через обычную телефонную квитанцию. Обратите внимание, что это не бесплатный Internet. Бесплатный Internet обычно предоставляют провайдеры находящиеся на грани банкротства и обычно это плохой канал доступа. При использовании "Internet by Call" вы платите, иногда очень хорошую плату, но получаете соответственно хороший доступ. Мы не будем рассматривать детали специфичные для вашей страны, заметка просто рассказывает об использовании разных провайдеров и разных Internet соединений.
Вид доступа, который мы рассмотрим - point-to-point (PPP). Под Linux существует программа pppd, используемая для такого соединения. Это очень хорошее приложение, но к сожалению, в документации к нему рассматриваются примеры, которые уже почти не используются провайдерами для доступа. Большинство ISP в настоящее время используют :
Использование IP
masquerading под Linux предоставляет возможность использования
Internet всей вашей сетью через одно ppp-соединение. Необходимым условием
является наличие хотя бы одного компьютера, работающего под ОС Linux.
Использование IP masquerading и разных провайдеров создает две проблемы:
Все конфигурационные файлы pppd находятся в каталоге /etc/ppp и для запуска этого приложения необходимо обладать привилегией root. Во время инсталляции и первых тестов надо зарегистрироваться root'ом. Позже я расскажу каким образом любой пользователь сможет установить соединение и завершить его. Не рекомендуется работать в системе все время с привилегией root'а, потому что можно по ошибке что-нибудь испортить.
Наиболее значимые файлы для pppd :
cd /etc mv ppp ppp_old tar zxvf ppp.tar.gzСреди распакованных файлов есть дополнительные скрипты помогающие провести установку и настройку. Их назначение мы рассмотрим ниже. (Обратите внимание : кое-где встречаются цены некоторых провайдеров. Они могут быть неправильными. Обращайтесь за точной информацией на их web страницы.)
Посмотрим на конфигурационный файл для ISP arcor :
# This is /etc/ppp/peers/arcor
# Home page of the ISP arcor: http://www.arcor-online.de/ #---------- # serial device and modem speed (normally 38400 or 57600): /dev/modem 57600 # modem dial-out script with phone number: connect '/etc/ppp/scripts/ppp-on-dialer-pap 0192070' # specific options, common options are # read from /etc/ppp/options noipdefault # tell pppd to use this users name for PAP authentication: user arcor # try dynamic dns: usepeerdns # |
cd /dev ln -s ttyS0 modem57600 - скорость модема, которая зависит от самого устройства. Строка, начинающаяся с "connect" определяет скрипт (/etc/ppp/scripts/ppp-on-dialer-pap) для взаимодействия с модемом через AT команды. Эти команды являются командным языком для модемов. Параметр, передаваемый скрипту (0192070) - номер для набора.
Итак, мы определили телефонный номер (0192070, для этого примера), скорость
модема, последовательный порт и некоторые опции pppd. Я не буду рассматривать
стандартные опции из файла /etc/ppp/options. Рассмотрите их на примере или
в man page pppd. Попробуем позвонить нашему провайдеру (arcor). Для этого нам
потребуются еще две вещи (пример для читателей в Германии) :
login name: arcor
password: internet
Эту информацию необходимо внести в /etc/ppp/pap-secrets, а логин также в
/etc/ppp/peers/arcor. Добавьте следующую строку в /etc/ppp/pap-secrets:
# This is /etc/ppp/pap-secrets
# client server secret IP-addr arcor * internet 0.0.0.0 |
Теперь попробуем. Для дозвона выполняем :
pppd call arcorarcor в этом случае - название конфигурационного файла в /etc/ppp/peers/
killall pppdНадеюсь у вас все получилось. Это точно должно работать для читателей из Германии. Для других стран необходимо изменить телефонный номер, логин и пароль ISP. Если все-таки что-то не получилось, посмотрите раздел shooting section в конце заметки.
В настоящий момент мы сделали настройки только для одного провайдера. Чтобы добавить других выполним следующие действия :
Теперь вы знаете как работает этот механизм. Далее рассмотрим некоторые скрипты, облегчающие процесс использования его. В частности два Set-UID perl скрипта для установки Internet соединения и завершения его любым пользователем (не обязательно root'ом).
Set-UID - механизм, позволяющий обычному пользователю выполнить специальную
команду в качестве ее владельца. Конечно такие действия надо выполнять
аккуратно, чтобы они не повлекли проблем с безопасностью системы. Эти скрипты
включены в архив ppp.tar.gz, который вы уже распаковали. У них должна быть
установлена "s" в битах доступа и в качестве владельца - root :
> cd /etc/ppp/scripts
> ls -al ppp-on ppp-off
-rwsr-sr-x 1 root root 1258 Jan 7 13:24 ppp-off
-rwsr-sr-x 1 root root 2619 Jan 9 20:30 ppp-on
Если эти биты не установлены, поменяйте их командой :
chmod 6755 ppp-off ppp-on.
Эти скрипты выполняют следующие действия - pppd call some-config-file
или killall pppd. Преимущество в том, что теперь любой пользователь
может использовать их. Скрипт ppp-on имеет дополнительные возможности для
работы с ISP не использующими автоматическую настройку DNS. Отредактируйте файл
в соответствии с приведенными там примерами. Скрипты запускаются следующим образом :
Установить соединение : /etc/ppp/scripts/ppp-on arcor Завершить Internet соединение : /etc/ppp/scripts/ppp-offТеперь это должно работать для всех пользователей вашего компьютера. arcor - имя файла в /etc/ppp/peers/. Может вы его назвали по-другому.
Наконец продемонстрируем графический интерфейс для установки соединения и
завершения его. Cgi-программа - создает интерактивные веб страницы. Хорошая
cgi-программа работает с любым браузером и платформонезависима. Поэтому мы и
будем использовать подобную.
$url="http://127.0.0.1/cgi-bin/pppcontrol";
Cgi-скрипт pppcontrol анализирует конфигурационный файл /etc/ppp/gpppwrap.conf, имеющий следующий синтаксис :
ppponarg: <agument_to_pass_to_ppp_on> - some additional comment string |
# This is /etc/ppp/gpppwrap.conf ppponarg: arcor -- arcor.net 3pf/min ppponarg: talknet -- internet by call 3.5pf/minОбратите внимание : цены 3pf/min и 3.5pf/min могли измениться к моменту чтения вами данной заметки.
Возможно вы получили слишком большой объем информации, но один раз настроив все,
вам останется только время от времени добавлять/удалять ISP, что очень просто.
Вы можете выбрать ISP из списка на веб странице и установить соединение
щелкнув кнопку.
Инсталляция dnrd из исходников выглядит следующим образом :
unapck it: tar zxvf dnrd-2.8.tar.gz cd dnrd-2.8/src/ compile it: make strip dnrd install it: cp dnrd /usr/local/sbin/ create the empty directory /etc/dnrd/ : mkdir /etc/dnrd/Использование DNS proxy dnrd (195.50.149.33 и 195.50.140.6 - DNS серверы вашего ISP) :
when the ppp-link becomes active: dnrd -s 195.50.149.33 -s 195.50.140.6 when you terminate the connection you run: dnrdВ нашем случае dnrd запускается из /etc/ppp/ip-up и /etc/ppp/ip-down, которые вы уже скачали и готовы для использования и подразумевают наличие dnrd в каталоге /usr/local/sbin/.
dnrd можно использовать и для других целей. Например в качестве DNS сервера
для себя самого. Если вы работаете в Unix - добавьте следующую строку в
/etc/host.conf
order hosts, bind
Потом назначьте компьютерам в локальной сети символические имена в
/etc/hosts . К сожалению такой возможности нет в ОС Windows. Если dnrd находит
/etc/hosts на вашем компьютере - он автоматически начинает выполнять функции
DNS сервера для найденных имен. Это решение прооблемы!
Синтаксис /etc/hosts :
# syntax:
# ip-addr hostname alias1 alias2 ... # example: 192.168.0.1 linuxpc.mynet linuxpc 192.168.0.2 peppermint.mynet pepper mint |
Для использования dnrd не только в качестве DNS proxy, но и DNS сервера необходимо запускать его во время загрузки компьютера. Для этого добавляем строку
daemon /usr/local/sbin/dnrdв конец секции start файла /etc/rc.d/init.d/network (синтаксис для redhat, mandrake... но для вашего может быть другим).
# This is /etc/resolv.conf when dnrd is running nameserver 127.0.0.1
>nslookup Default Server: localhost Address: 127.0.0.1 >pepper Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: peppermint.mynet Address: 192.168.0.2Завершим работу nslookup (crtl-d).
В этой части я объясню, как настроить вывод информации от pppd. Это полезно в случае возникновения ошибок в работе. К сожалению я обнаружил, что не всегда причиной их являются мои недочеты.
Первое, с чего начинается работа pppd - открытие последовательного порта (/dev/modem является ссылкой к /dev/ttyS0) для запуска скрипта /etc/ppp/scripts/ppp-on-dialer-pap. Этот скрипт, в свою очередь, посылат команды AT модему, с помощью которых происходит соединение с ISP. Если возникли ошибки - ищите их в /etc/ppp/connect-errors. В большинстве случаев оказывается сразу ясна причина возникшей ошибки. Если причина непонятна - попробуйте вручную набрать команды AT. Для этого нужна программа для работы с последовательным портом - minicom (входит в состав многих дистрибутивов Linux) или cu (входит в состав uucp) или kermit (http://www.columbia.edu/kermit/ck70.html). Используйте любую из этих программ для работы с модемом. При вводе AT модем отвечает "OK". Если нет - проверьте установленную скорость, кабели и т.д. Если модем ответил "OK" - наберите команду ATDT1234. Теперь модем должен позвонить по номеру 1234. Если нет - обратитесь к руководству от модема. Может быть надо набрать ATD1234 (без T)...
После дозвона до ISP начинается процесс обмена информацией между модемами. Для наблюдения его отредактируйте файл /etc/syslog.conf добавив ";daemon.debug " к строке, оканчивающейся на /var/log/messages :
*.info;mail.none;authpriv.none;daemon.debug /var/log/messagesПерезапустите syslog :
tail -f /var/log/messagesи наблюдаем процесс соединения с ISP.
Удачное соединение будет выглядеть следующим образом :
Jan 14 17:18:11 bearix pppd[721]: pppd 2.3.10 started by root, uid 0
Jan 14 17:18:34 bearix pppd[721]: Serial connection established. Jan 14 17:18:34 bearix pppd[721]: Using interface ppp0 Jan 14 17:18:34 bearix pppd[721]: Connect: ppp0 <--> /dev/modem Jan 14 17:18:35 bearix pppd[721]: sent [LCP ConfReq id=0x1 Jan 14 17:18:37 bearix pppd[721]: rcvd [LCP ConfReq id=0x46 Jan 14 17:18:37 bearix pppd[721]: sent [LCP ConfNak id=0x46 Jan 14 17:18:38 bearix pppd[721]: rcvd [LCP ConfReq id=0x47 Jan 14 17:18:38 bearix pppd[721]: sent [LCP ConfAck id=0x47 Jan 14 17:18:38 bearix pppd[721]: sent [LCP ConfReq id=0x1 Jan 14 17:18:38 bearix pppd[721]: rcvd [LCP ConfAck id=0x1 Jan 14 17:18:38 bearix pppd[721]: sent [PAP AuthReq id=0x1 user="arcor" password="internet"] Jan 14 17:18:40 bearix pppd[721]: rcvd [LCP ConfReq id=0x49 Jan 14 17:18:40 bearix pppd[721]: sent [LCP ConfReq id=0x2 Jan 14 17:18:40 bearix pppd[721]: sent [LCP ConfAck id=0x49 Jan 14 17:18:41 bearix pppd[721]: rcvd [LCP ConfAck id=0x2 Jan 14 17:18:41 bearix pppd[721]: rcvd [CHAP Challenge id=0x5 <0c7672840494152025f937ac4f5e135e>, name = "klndiinternet"] Jan 14 17:18:41 bearix pppd[721]: sent [CHAP Response id=0x5 Jan 14 17:18:41 bearix pppd[721]: rcvd [CHAP Success id=0x5 ""] Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x1 Jan 14 17:18:41 bearix pppd[721]: sent [CCP ConfReq id=0x1 Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfReq id=0x8e Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfAck id=0x8e Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfRej id=0x1 Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x2 Jan 14 17:18:41 bearix pppd[721]: rcvd [LCP ProtRej id=0xfb 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f] Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfNak id=0x2 Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x3 Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfAck id=0x3 Jan 14 17:18:41 bearix pppd[721]: local IP address 145.253.88.6 Jan 14 17:18:41 bearix pppd[721]: remote IP address 145.253.1.150 Jan 14 17:18:41 bearix pppd[721]: primary DNS address 145.253.2.11 Jan 14 17:18:41 bearix pppd[721]: secondary DNS address 145.253.2.75 Jan 14 17:18:41 bearix pppd[721]: Script /etc/ppp/ip-up started (pid 723) Jan 14 17:18:42 bearix pppd[721]: Script /etc/ppp/ip-up finished (pid 723), status = 0x0 |
Невозможно рассмотреть все ошибки в заметке, потому что я не знаю ваших настроек и на самом деле ошибок существует огромное количество. Рассчитывайте на себя и на информацию из данной заметки и большинство проблем будет решено. Если все-таки что-то не получилось и вы не уверены, что вы где-то ошиблись - попробуйте другого ISP. Возможно, что действительно ошибка не ваша.
|
Webpages maintained by the LinuxFocus Editor team
© Guido Socher, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus |
Translation information:
|
2001-02-24, generated by lfparser version 2.8