/comm/minicom
4. Установка Hardware
Итак приступим к установке Hardware. Прежде всего, согласно части 4.3 NAG
определяем, есть ли у нас файлы устройств последовательных портов. На моей
машине это выглядит так:
ls -l /dev/cua* crw-rw---- 1 root dialout 5, 64 Jan 4 00:10 /dev/cua0 crw-rw---- 1 root dialout 5, 65 Jan 4 00:10 /dev/cua1 crw-rw---- 1 root dialout 5, 66 Jan 4 00:10 /dev/cua2 crw-rw---- 1 root dialout 5, 67 Jan 4 00:10 /dev/cua3
Все OK.
На машине должен быть установлен пакет setserial (в Дебиане он входит в базовый набор) и файл, конфигурирующий кернель при загрузке. (Тоже входит в базовый набор для Дебиана - /etc/rc.boot/0setserial) Проверим все ли правильно:
setserial -bg /dev/cua* /dev/cua0: Device or resource busy /dev/cua1 at 0x02f8 (irq = 3) is a 16550AТоже вроде все OK и соответствует моей машине. Модем установлен на COM1.
Проверяем работает ли рукопожатие:
stty -a < /dev/cua1 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol =; eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Это все по идее должно показывать включенные и выключенные флаги. Раз показывает -crtscts с минусом, значит выключено. Включаем командой
stty crtscts < /dev/cua1
У меня после этой команды минус пропал. Значит handshake (рукопожатие) включено. Записал команду в файл /etc/rc.boot/0setserial
Вроде часть 4 NAG "Setting up the Serial Hardware" на этом и кончается.
Далее я установил программу minicom, приблизительно сконфигурировал ее под
свой модем и попробовал позвонить на сервер. Программа позвонила,
дозвонилась, но соединиться не смогла. Я подумал, что надо еще сравнить
установки с теми, которые установлены у меня в W95 и пошел спать.
5. Дозвонка и логин
На следующий день я почитал литературу, которая идет вместе с системой (в
директории /usr/doc/ppp/). Начал с PPP for Debian. Попробовал скрипты pon,
poff и plog, которые идут в базовом комплекте Дебиана. Мне показалось, что
пользоваться ими на этом этапе не очень удобно, но уже то, что pon
дозванивается до сервера уже хорошо.
Перешел к PPP for Linux Version 2.2.0. Подсмотрел там образец скрипта дозвонки и соединения с PPP сервером через модем. Начал с такого скрипта:
#My script d1 pppd conne ct chat -v "" ATDT70600 CONNECT "" ogin:\' word: \ /dev/cua1 38400 debug crtscts modem defaultroute '
Скрипт дозванивается, но не соединяется, что и следоввало ожидать. Я еще порылся в литературе и соорудил под Xwindows рабочий стол. Открыл два терминала и текстовый редактор. Из одного терминала запускаю скрип, в редакторе его меняю, а во втором терминале запустил команду:
tail -f /var/log/ppp.log
Она мне показывает сообщения которые выдает демон ppp. Позапускав и пронаблюдав примерно час, заметил, что моя система дозванивается , принимает строку CONNECT и ждет ogin:, а ей присылают 38400. Тогда я добавил ожидание 38400, потом добавил ожидание ^M и так, шаг за шагом пришел к следующему скрипту:
#My script d1 pppd connect chat -v "" ATDT70600 CONNECT "" 38400 \ "" ^M \\COP\\cop\\pmu "" buratino' \ /dev/cua1 38400 debug crtscts modem defaultroute '
А вот картинка, которая появилась в лог окне:
Mar 4 10:44:36 pmu pppd[1213]: pppd 2.2.0 started by root, uid 0 Mar 4 10:44:38 pmu chat[1214]: send (ATDT70600^M) Mar 4 10:44:38 pmu chat[1214]: expect (CONNECT) Mar 4 10:45:00 pmu chat[1214]: ATDT70600^M^M Mar 4 10:45:00 pmu chat[1214]: CONNECT -- got it Mar 4 10:45:00 pmu chat[1214]: send (^M) Mar 4 10:45:00 pmu chat[1214]: expect (38400) Mar 4 10:45:00 pmu chat[1214]: 38400 -- got it Mar 4 10:45:00 pmu chat[1214]: send (^M) Mar 4 10:45:00 pmu chat[1214]: expect (^M) Mar 4 10:45:00 pmu chat[1214]: ^M -- got it Mar 4 10:45:00 pmu chat[1214]: send (My_account^M) Mar 4 10:45:00 pmu chat[1214]: send (My_password^M) Mar 4 10:45:00 pmu pppd[1213]: Serial connection established. Mar 4 10:45:01 pmu pppd[1213]: Using interface ppp0 Mar 4 10:45:01 pmu pppd[1213]: Connect: ppp0 <--> /dev/cua1 Mar 4 10:45:01 pmu pppd[1213]: sent [LCP ConfReq id=0x1] Mar 4 10:45:01 pmu pppd[1213]: rcvd [LCP ConfReq id=0x0 < 11 04 06 4e> < 13 09 03 00 a0 24 6a 44 0b>] Mar 4 10:45:01 pmu pppd[1213]: sent [LCP ConfRej id=0x0 < 11 04 06 4e> < 13 09 03 00 a0 24 6a 44 0b>]
Моя интерпретация этой картинки: Система дозванивается до сервера,
логиниться, затем начинаются переговоры PPP серверов, которые не могут
договориться. С этим буду разбираться завтра.
Очень глубоко влезать в тонкости шифровки мне совершенно не хочеться,
поэтому ограничусь описанием установки библиотеки, которая позволяет
работать с паролем и логином нужным для Windows NT способом.
Тут есть одна особенность: экспорт этой этого способа
шифровки/расшифровки за пределы США запрещен, поэтому вы не найдете эту
библиотеку на американских серверах. Но она есть и вдругих местах. А
запрещен экспорт как я краем уха слышал потому, что он не поддается
расшифровке.
скачал с сервера http://sunsite.unc.edu/ исходники ppp_2_2_0f из директория
/bo/sources/.
Командой
Настроились на систему
Командой
включил исходники нового драйвера в исходники кернеля и заголовки.
Откомпилировал pppd.
Установил руками pppd.
Думаю, что без перекомпиляции кернеля можно бы было обойтись, Но у меня все
работает, а сил на повторение не осталось, хорошо бы кто-нибудь попробовал и
прислал результат.
6. Установка PPP контакта
В этом месте пришлось повозиться. Последние строки лог-файла как оказалось
означали следующее:
Mar 4 10:45:01 pmu pppd[1213]: rcvd [LCP ConfReq id=0x0
говорит о том, что сервер требует от нас представиться по протоколу chap
msoft. 7. Получение, компилирование и установка библотеки libdes
включил make x86-elf
и подал команду:
make x86-elf
Получил ответ: +02 - No such file
Поменял +02 на 02 снова:
make x86-elf
Руками установил файлы:
/usr/local/lib/libdes.a
/usr/local/bin/des
/usr/local/man/man3/des_cript.3
/usr/local/man/man1/des.1
/usr/include/des.h
8. Подключение libdes к PPP
Здесь я опишу как действовал я. Думаю, что то же самое можно сделать и проще
но, так как я не проверял, то буду описывать как оно было.
Разархивировал исходники ppp. Переименовал директорий в
/usr/local/src/ppp-2.2.0f Установил исходники кернеля.
Сконфигурировал исходники ppp так, чтобы включить поддержку mschap.
cd /usr/local/src/ppp-2.2.0f
patch -p1 README.mschap80
cd /usr/local/src/ppp-2.2.0f
./configure
make kernel
cd /usr/local/src/ppp-2.2.0f/ppd/
make USE_MSCHAP=1
/usr/sbin/pppd
9. Заключение
Итак, потрачено столько сил и времени, а из-за чего, зачем? Все из-за
поганой политики Майкрософта делать все как-нибудь иначе чем все остальные
люди.
Еще. С точки зрения Дебиана это неправильно - надо бы сделать из
переделанного источника дебиановский пакет. Но это в следующий раз.
Приложение. Для тех кто в самом деле подключает свой Линукс бокс к Windows
NT ISP
10. Приложение. Лог удачного соединения
Для тех к кому это имеет отношение. Лог удачного соединения. Если
внимательно вглядеться можно получить массу полезной информации. Правда
здесь pppd 2.3.0, а у меня 2.2.0f но здесь разницы нет, работает и с тем и с
другим. Конечно версия должна совпадать с версией драйвера ppp, с которым
скомпилировван кернель.
Sun Jan 5 11:12:29 PST 1997
Jan 5 11:22:26 pmu pppd[230]: pppd 2.3.0 started by root, uid 0
Jan 5 11:22:31 pmu chat[231]: send (ATDT70600^M)
Jan 5 11:22:31 pmu chat[231]: expect (CONNECT)
Jan 5 11:22:31 pmu chat[231]: O^M
Jan 5 11:22:54 pmu chat[231]: ATDT70600^M^M
Jan 5 11:22:54 pmu chat[231]: CONNECT -- got it
Jan 5 11:22:54 pmu chat[231]: send (^M)
Jan 5 11:22:54 pmu chat[231]: expect (38400)
Jan 5 11:22:54 pmu chat[231]: 38400 -- got it
Jan 5 11:22:54 pmu chat[231]: send (^M)
Jan 5 11:22:54 pmu chat[231]: expect (^M)
Jan 5 11:22:54 pmu chat[231]: ^M -- got it
Jan 5 11:22:54 pmu chat[231]: send (\COPcop\My_account^M)
Jan 5 11:22:55 pmu chat[231]: send (My_Password^M)
Jan 5 11:22:56 pmu pppd[230]: Serial connection established.
Jan 5 11:22:57 pmu pppd[230]: Using interface ppp0
Jan 5 11:22:58 pmu pppd[230]: Connect: ppp0 <--> /dev/cua1
Jan 5 11:22:58 pmu pppd[230]: sent [LCP ConfReq id=0x1
11. От автора
Коомментарии и пожелания присылайте по адресу:
Казанов Евгений evgeny@dkd.ot.lt