Сеть, которую мы будем создавать, представляет из себя следующее:
Все последующее описание предполагает, что интерфейсу eth0 сервера назначен адрес IP (с помощью "ifconfig").
Также данное руководство нисколько не ограничивает вас в применении только протокола PPP (вы свободно можете использовать SLIP, PPTP и т.д.). Адрес IP "ppp0"-порта абсолютно несущественен. Это описание лишь требует, чтоб хотя бы один такой порт был и нормально работал.
90$ стоила оперативная память (по средней цене 60$ за 16 Мб), и в итоге мы имеем прекрасно работающую linux-систему всего за 270$. Конечно, не стоит перегружать нашу систему компьютерами с NT или другими операционными системами, требующими много ресурсов памяти-винчестеров-процессоров. Конечно, мой клиентский ПК - Pentium-100 с 32 Мб памяти и двумя винчестерами (один из которых впоследствии был использован для linux-машины), работает под Win95.
Машина с linux удобно расположилась на коробке из-под пиццы. Мне неохота было тратить еще 50$ на корпус, тем более, что один из моих друзей одолжил мне блок питания для ПК.
Наконец, мы точно никогда не увидим "Microsoft Internet Explorer" для linux - поэтому я даже и не думаю об использовании Explorer в нашей сети. Также, что-то внутри мне подсказывает, что настроить Explorer было бы очень НЕПРОСТО, по сравнению с настройкой NETSCAPE на машинах-клиентах (то есть других машинах).
Я не даю указаний по установке ПРОКСИ-сервера. Главное - установить пакет "socks" под машину с LINUX, с помощью которого NETSCAPE на остальных машинах сможет использовать интернет. NETSCAPE (насколько я знаю) сейчас ЕДИНСТВЕННАЯ программа для НЕ-UNIX машин, которая поддерживает SOCKS.
Если у вас уже есть сеть на TCP/IP, то уже ДОЛЖНЫ быть ПО МЕНЬШЕЙ МЕРЕ два IP-адреса для компьютеров (один для LINUX-машины и другой для машины-клиента, или даже еще больше IP-адресов - если у вас более чем одна клиентская машина).
О том, как назначить IP-адреса в TCP/IP сети ВСЕМ вашим компьютерам, читайте в других Руководствах. (ОСОБЕННО, ЕСЛИ У ВАС НЕТ зарегистрированного ИНТЕРНЕТ-домена).
Я создал сеть с адресами 10.0.1.x для одной машины LINUX и одной машины с Win95. Им соответственно были назначены адреса 10.0.1.1 и 10.0.1.2. Адрес 10.0.1.1 - это IP-адрес порта ETHERNET (eth0) на LINUX-машине. Порт ppp0 имеет другой адрес IP (который [как мне повезло] имеет фиксированный адрес IP). ЭТОТ IP несущественен в данном описании, а также не упоминается, в целях безопасности.
На другом конце моего PPP-соединения стоит университетский сервер с фиксированным доменным именем.
На машине с linux стоит модем и с помощью CRONTAB - он автоматически подключается к интернет в определенное время. Также (при необходимости) я могу подключиться к интернет вручную.
Если вы подключаетесь к интернет через системы ON-LINE, то смотрите следующий раздел...
Если вы подключаетесь к интернет через ON-LINE системы, такие как AOL, Compuserve, Sprynet, Netcom и т.д..., то тогда у вас может и НЕ БЫТЬ фиксированного IP-адреса. Это доставит немного неудобств, но, тем не менее, ваша интрАнет-сеть будет связана с внешним миром. Если вы мне не верите, то прошу - дочитайте руководство до конца... и поверьте....
(Для тех, кто по природе таков, как я, и кому интересно, что же тут происходит...). Остальные могут пропустить этот раздел....
Единственная проблема с такой "маршрутизацией" с linux-машины состоит в том, что клиенты ДОЛЖНЫ в действительности ПОСЫЛАТЬ ВСЕ пакеты на linux, неважно, на какой адрес эти пакеты идут. В таком случае с Win95 и WinNT можно использовать ТОЛЬКО "proxy сервер" ("Руководство" о работе с ним мне еще предстоит написать).
Читайте "Руководство по использованию Сети" на /usr/doc/faq/howto на вашей linux-машине (если у вас стоит slakware-версия), или отправляйтесь на www.linux.org и там читайте это же руководство (NET-HOW-TO) там...
Теперь вам необходимо скачать и скомпилировать пакет socks. Перед этим НЕОБХОДИМО ПРОЧИТАТЬ инструкции по установке и настройке домашней сети. Но, в принципе, можно читать и ЭТО описание :-) .
В сопроводительном документе к пакету будет много написано о том, как настроить UNIX-клиенты. Особенно для "rlogin" "telnet" "ftp" и т.п.... Если у вас нет UNIX-клиентов, то после компиляции пакета SOCKS прочтите ДАННОЕ руководство сначала, так как необходимо будет использовать SOCKS немного не так, как написано в руководстве к пакету.
Я поместил tar-архив в каталог /usr/local/ProxyServer, распаковал, создав каталог "sockd4.2b", внутри которого и лежит файл для компиляции ("Makefile"). Как уже упоминалось выше, необходимо немного помучиться, чтобы успешно скомпилировать данный MAKEFILE.
Надо надеяться, что вам придется поменять в нем только строку #9.
В каталоге sockd вы найдете исполняемый файл "sockd".
Как только вы закончите компиляцию, СКОПИРУЙТЕ следующие файлы в /usr/local/etc (Они ДОЛЖНЫ быть в том же каталоге sockd) sockd (Исполняемый файл, т.н. демон) sockd.conf (файл конфигурации) sockd.route (файл конфигурации) socks.conf (файл конфигурации) # ### создайте сслыку с названием "socks", которая указывает на "sockd" в том-же каталоге. # cd /usr/local/etc # ln -s sockd socksДалее отредактируйте эти три файла конфигурации так, чтобы их содержимое соответствовало нижеприведенным примерам (это мои настройки для сети из двух компьютеров, состоящей из LINUX-"сервера" и Win95/WinNT машины-клиента).
ПРИМЕЧАНИЕ: 10.0.1.2 - это IP-адрес моей Win95/WinNT-машины-клиента. Этот файл sockd.conf ДОЛЖЕН присутствовать на сервере LINUX (в моем случае, порту ethernet сервера LINUX был назначен IP-адрес = 10.0.1.1)permit 10.0.1.2 0.0.0.0 deny 0.0.0.0 0.0.0.0 : /usr/ucb/finger @%A | /usr/ucb/mail -s 'SOCKD: rejected -- from %u@%A to host %Z (service %S)' root #BAD_ID: /usr/ucb/finger @%A | /usr/ucb/mail -s '%U pretends to be %u on host %A' root@%A root #NO_IDENTD: /usr/ucb/mail -s 'Please run identd on %A' %u@%A root@%A #[EOF]
ПРИМЕЧАНИЕ: Пакет "sockd" необходим ТОЛЬКО для машин-КЛИЕНТОВ. ВСЕ приложения на LINUX-машине НЕ НУЖДАЮТСЯ в этом пакете, либо еще в чем-то, для доступа в интернет, ибо наша LINUX-машина подключается к интернет напрямую, используя PPP.
#! NoShell 10.0.1.1 10.0.1.0 255.255.255.0 #[EOF]ПРИМЕЧАНИЕ: Первый IP-адрес - это адрес ПОРТА eth0 сервера LINUX. Второй номер - это НЕ АДРЕС IP -- это адрес СЕТИ (для простоты, последний из четырех номеров IP-адреса должен быть НУЛЕМ).
direct 127.0.0.1 255.255.255.255 direct 10.0.1.1 255.255.255.255 direct 10.0.1.2 255.255.255.255 sockd @=199.99.99.99 10.0.1.1 0.0.0.0
Вы должны быть уверены, что НИ ОДНА из этих программ никогда не получит доступа к демону "named" на ЭТОЙ САМОЙ машине с linux. Для этого мы определим для сервиса имен (то есть программ, преобразующих www.cnn.com в числовой IP-адрес), что они ДОЛЖНЫ проверять сначала файл /etc/hosts, и только затем проверять сервера DNS, указанные в файле /etc/resolv.conf
Как это сделать? Просто! Проверьте, что содержимое в файла /etc/host.conf написано следующее:
order hosts, bind multi onЕсли там что-то другое, удалите все (конечно, если вы ОЧЕНЬ много знаете о DNS и "named", то тогда вы сделаете по своему).
Причина, по которой я настаиваю на недопуске программ LINUX-машины к собственному "named"-серверу, состоит в том, что это просто не нужно. А по моему опыту подобные "ненужности", выглядящие технически и программно безопасными, могут рано или поздно причинить много неприятностей...
Сервер linux отлично делает свою работу по подсоединению к internet через PPP (или тот тип связи, что присутствует у вас) Мы дополнительно устанавливаем пакет "sockd" и "named"-демон для машин-клиентов. И давайте больше не будем напрягать LINUX-систему.
Не меняйте никакие файлы до тех пор, пока кто-либо не предложит что-то поменять...
Я также полагаю, что вы корректно настроили "resolv.conf", чтобы ваш LINUX-сервер имел доступ к internet и DNS (на "другом конце" соединения PPP). Мой пример файла resolv.conf вы можете увидеть в самом конце данного руководства.
************************************************ ПРЕДУПРЕЖДЕНИЕ ************************************************ Для вашей собственной безопасности, я предлагаю менять настройки вашей системы linux только через системную программу конфигурации (т.е., например, во время установки linux на ваш компьютер) *************************************************
; загрузочный файл для сервера имен forwarders 128.112.129.111 directory /etc cache . root.cache primary 1.0.10.in-addr.arpa named_DNS_for_inTi_xwk ^^^^^^^^^^^^^^^^^^^^^^ПРИМЕЧАНИЕ: строка # 2 содержит IP-адрес сервера DNS сети, к которой подключается ваша LINUX-машина, используя PPP (или ему подобную связь).
ПРИМЕЧАНИЕ: ПОСЛЕДНЯЯ строка содержит имя файла, называемого "named_DNS_for_inTi_xwk', который ДОЛЖЕН быть в каталоге "/etc". Содержание этого файла приводится ниже (вообще-то, вы можете придумать ему более интересное название :-) )
@ IN SOA 10.0.1.0 hostmaster.10.0.1.0 ( 1 ; Серийный 28800 ; Обновление 7200 ; Повтор 604800 ; Окончание 86400) ; Минимальное TTL NS 10.0.1.1 1 PTR MyLinuxMachineПРИМЕЧАНИЕ: Последняя строка (начинающая с 1) содержит имя "MyLinuxMachine". Замените его строкой из /etc/HOSTNAME. ПРИМЕЧАНИЕ: Также, если вы уж зашли настолько далеко, то поменяйте "10.0.1.1" на адрес порта eth0 вашей LINUX-машины, и замените "10.0.1.0" на сетевой адрес этого порта.
Для создания этого файла внимательно читайте руководство по настройке сетей (NET-HOW-TO) и сопровождающую документацию к пакету socks.
Эти инструкции ОЧЕНЬ просты...
Все, что мне надо было сделать, это запустить команду, указанную там, а полученную информацию перенаправить в файл и назвать его "/etc/root.cache"
; <<>> DiG 2.1 <<>> ns ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6 ;; flags: qr rd ra; Ques: 1, Ans: 9, Auth: 0, Addit: 9 ;; QUESTIONS: ;; ., type = NS, class = IN ;; ANSWERS: . 137030 NS C.ROOT-SERVERS.NET. . 137030 NS D.ROOT-SERVERS.NET. . 137030 NS E.ROOT-SERVERS.NET. . 137030 NS I.ROOT-SERVERS.NET. . 137030 NS F.ROOT-SERVERS.NET. . 137030 NS G.ROOT-SERVERS.NET. . 137030 NS A.ROOT-SERVERS.NET. . 137030 NS H.ROOT-SERVERS.NET. . 137030 NS B.ROOT-SERVERS.NET. ;; ADDITIONAL RECORDS: C.ROOT-SERVERS.NET. 410161 A 192.33.4.12 D.ROOT-SERVERS.NET. 410161 A 128.8.10.90 E.ROOT-SERVERS.NET. 410161 A 192.203.230.10 I.ROOT-SERVERS.NET. 167767 A 192.36.148.17 F.ROOT-SERVERS.NET. 410161 A 192.5.5.241 G.ROOT-SERVERS.NET. 410161 A 192.112.36.4 A.ROOT-SERVERS.NET. 410161 A 198.41.0.4 B.ROOT-SERVERS.NET. 410161 A 128.9.0.107 H.ROOT-SERVERS.NET. 410161 A 128.63.2.53 ;; Total query time: 334 msec ;; FROM: svathyam to SERVER: default -- 128.112.129.111 ;; WHEN: Sat Sep 28 21:38:04 1996 ;; MSG SIZE sent: 17 rcvd: 312
(добавьте единственную строку начинающуюся с "socks"...)
# services This file describes the various services that are # available from the TCP/IP subsystem. It should be # consulted instead of using the numbers in the ARPA # include files, or, worse, just guessing them. # Version: @(#)/etc/services 3.02 02/21/93 # Author: Fred N. van Kempen,ПРИМЕЧАНИЕ: по-моему, эта строка считывается ТОЛЬКО демоном "inetd". Она указывает inetd включить программу "socks" для всех tcp-соединений к порту # 1080.... <lines delete> socks 1080/tcp # sarma: Sep.15.96: Получено из файла ~sockd/include/socks.h ... <lines delete> # End of services.
# Я всего-лишь следую инструкциям из руководства к ~sockd/doc/sockd.1 ... socks stream tcp nowait root /usr/local/etc/socks
Исполните "tail -f /var/adm/messages" и одновременно "tail -f /var/adm/syslog" и попытайтесь присоединиться к интернет навигатором NETSCAPE с машины-клиента.
Теперь давайте настроим навигатор Netscape на машинах-клиентах...
--------- -------------------------- -------- | socks | | | | 1080 | --------- -------------------------- --------Это указывает на то, что netscape уже знает о наличии socks. Все, что вам необходимо сделать, это указать NETSCAPE, где именно запускается демон socks.
Введите IP-адрес порта eth0 сервера linux в среднее поле, показанное выше...
Сохраните эти настройки и продолжайте работу... !!
Если вы НЕ можете соединиться с интернет через сервер LINUX, то прекратите чтение этого руководства и ищите другие руководства по настройке LINUX-машин для PPP-соединения к интернет.
Я надеюсь, что вы знаете концепцию IP-адресации. Вкратце, все IP-адреса имеют "мнемоническое" название (типа www.cnn.com) и числовое, типа "198.20.186.4". Если вы указываете адрес вида "www.cnn.com", то кто-то должен ПОМОЧЬ вашему компьютеру конвертировать эту строку в числовой формат.
Почему числовой формат? Потому, что числовой формат гораздо эффективнее - он сообщает каждому компьютеру, КАК переслать информационный пакет другому компьютеру, с которым ОН ХОЧЕТ УСТАНОВИТЬ СВЯЗЬ.
Поэтому, когда вы пишете "www.cnn.com" в окне адреса NETSCAPE-навигатора, UNIX-компьютер вызывает "DNS-сервер", который преобразует эту строку (название) в числа, понятные вашему компьютеру. Далее ваш ПК использует эту числовую версию IP-адреса для СОЕДИНЕНИЯ с www.cnn.com и покажет вам их последние новости.
В итоге, дела обстоят так: для использования интернет вам нужен DNS-сервер. Данный документ содержит инструкции о том, как заставить ваш компьютер СВЯЗАТЬСЯ с соседним DNS-сервером.
Ваш LINUX-сервер ДОЛЖЕН иметь все нижеперечисленное:
Сетевая "ethernet карта" - это ваш "eth0" порт. Этот ethernet-"порт" позволяет вам исследовать сеть ethernet, к которой он присоединен.
Ваша машина-клиент подсоединена к LINUX-серверу через сетевой кабель, то есть ВСЕ, что ваша машина-клиент пошлет серверу, достигнет linux ТОЛЬКО ЧЕРЕЗ порт "eth0". ВСЕ, что внешний мир присылает вашему LINUX-серверу, придет на него ТОЛЬКО через порт ppp0. ПОЭТОМУ очень важно, чтобы эти два порта имели "РАЗНЫЕ АДРЕСА".
Проще говоря, если вы УЖЕ успешно соединились с внешним миром через PPP, то вы уже НЕПРЕДНАМЕРЕННО (или намеренно 8-) ) назначили числовой IP-адрес PPP-порту вашей linux-машины.
SHELL=/bin/bash #SOCKS=-DSOCKS # или SOCKS=-Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dlisten=Rlisten -Daccept=Raccept -Drcmd=Rrcmd -Dbind=Rbind -Dselect=Rselect CFLAGS="$(SOCKS)" # Если ваша система не имеет отпределенных PWD, то определите их тут: PWD="/usr/local/ProxyServer/socks42b" # Это должна быть данный (текущий) каталог. # Если ваша система уже имеет getcwd(), но не имеет getwd(), то раскомментируйте следующую строку: #GETCWD=-DGETCWD # Определите FASCIST, если вы хотите, чтобы ftp (rftp) отслеживала в файле логов все переданные файлы #FASCIST=-DFASCIST # Определите RCMD и SUPPORT_RCMD, если вы хотите поддерживать Rrcmd, что необходимо # для SOCKSified rlogin, rsh, и rcp. RCMD=Rrcmd.o SUPPORT_RCMD=-DSUPPORT_RCMD # Определите FOR_PS, если ваша система не SYSV а вы хотите, чтобы команда # 'ps' показывала некоторую информацию об активности sockd. FOR_PS=-DFOR_PS # Определите SHORTENED_RBIND для того, чтобы Rbind() брал точно такие-же # параметры, как и простой bind(), т.е. без дополнительного параметра 'remhost' SHORTENED_RBIND=-DSHORTENED_RBIND # флаги оптимизации для cc #OPTIMIZE=-g OPTIMIZE=-O6 -fomit-frame-pointer -pipe -m486 # Будьте аккуратны с флагами OPTIMIZE. Например, известно, что SC2.0.1 от SunPro, # выдает некорректный код если используестя флаг -O. # Каталог, в который устанавливаются руководства MAN_DEST_DIR = /usr/local/man # Каталог, в который устанавливается пакет сервера SOCKS SERVER_BIN_DIR = /usr/local/ProxyServer ## По умолчанию здесь было /usr/local/etc # Каталог, в который устанавливается программа-клиент CLIENTS_BIN_DIR = /usr/local/ProxyServer ## По умолчанию здесь было /usr/local/bin # LINUX должен использовать CC=gcc RANLIB=ranlib RESOLV_LIB= #OTHER_CFLAGS=-traditional -DLINUX $(GETCWD) $(FASCIST) $(SHORTENED_RBIND) -DCOMPAT OTHER_CFLAGS=-DLINUX $(GETCWD) $(FASCIST) $(SHORTENED_RBIND) -DCOMPAT OS=linux INSTALL=install GETPASS=getpass.o # Не забудьте включить -Dindex=strchr -Drindex=strrchr в OTHER_CFLAGS, если # вы не имеете index() и rindex() (Sys-V camp) # <<<---------------- # Сервер Internet Whois ; в данном случае nic.ddn.mil. WHOIS_SERVER= WHOIS_SERVER=-DWHOIS_SERVER\'=\"rs.internic.net\"\' SOCKS_LIB=$(PWD)/lib/libsocks.a IDENT_LIB=$(PWD)/libident/libident.a all: LIB LIBIDENT server clients server: LIB LIBIDENT (cd sockd; $(MAKE) CC="$(CC)" RESOLV_LIB="$(RESOLV_LIB)" \ OPTIMIZE="$(OPTIMIZE)" \ SOCKS_LIB="$(SOCKS_LIB)" SUPPORT_RCMD="$(SUPPORT_RCMD)" \ IDENT_LIB="$(IDENT_LIB)" \ OTHER_CFLAGS="$(OTHER_CFLAGS) $(FOR_PS)") clients: RFINGER RFTP RTELNET LIB: (cd lib; $(MAKE) CC="$(CC)" GETPASS="$(GETPASS)" \ OPTIMIZE="$(OPTIMIZE)" \ RCMD="$(RCMD)" SUPPORT_RCMD="$(SUPPORT_RCMD)" \ OTHER_CFLAGS="$(OTHER_CFLAGS) " RANLIB="$(RANLIB)") LIBIDENT: (cd libident; $(MAKE) CC="$(CC)" OTHER_CFLAGS="$(OTHER_CFLAGS)" \ OPTIMIZE="$(OPTIMIZE)" RANLIB="$(RANLIB)") RFINGER: LIB # This also build rwhois (cd rfinger; $(MAKE) CC="$(CC)" $(WHOIS_SERVER) \ OPTIMIZE="$(OPTIMIZE)" SOCKS="$(SOCKS)" \ RESOLV_LIB="$(RESOLV_LIB)" SOCKS_LIB="$(SOCKS_LIB)" \ OTHER_CFLAGS="$(OTHER_CFLAGS) ") RTELNET: LIB (cd rtelnet; $(MAKE) CC="$(CC)" OS="$(OS)" SOCKS_LIB="$(SOCKS_LIB)" \ OPTIMIZE="$(OPTIMIZE)" SOCKS="$(SOCKS)" \ RESOLV_LIB="$(RESOLV_LIB)" OTHER_CFLAGS="$(OTHER_CFLAGS)") RFTP: LIB (cd rftp; $(MAKE) CC="$(CC)" SOCKS_LIB="$(SOCKS_LIB)" \ OPTIMIZE="$(OPTIMIZE)" SOCKS="$(SOCKS)" \ RESOLV_LIB="$(RESOLV_LIB)" OTHER_CFLAGS="$(OTHER_CFLAGS)") install.server: (cd sockd; $(MAKE) INSTALL="$(INSTALL)" MAN_DEST_DIR="$(MAN_DEST_DIR)" \ SERVER_BIN_DIR="$(SERVER_BIN_DIR)" install install.man) install.clients: install.man for i in rfinger rftp rtelnet; do \ (cd $$i ; $(MAKE) INSTALL="$(INSTALL)" \ CLIENTS_BIN_DIR="$(CLIENTS_BIN_DIR)" \ install) done install.man: (cd doc; $(MAKE) INSTALL="$(INSTALL)" MAN_DEST_DIR="$(MAN_DEST_DIR)" \ install) clean: for i in lib libident sockd rfinger rftp rtelnet ; do \ ( cd $$i ; $(MAKE) clean) done
#!/bin/csh # # ppp-on # # Установка соединения PPP set LOCKDIR=/var/spool/uucp set DEVICE=cua3 set OUR_IP_ADDR=128.000.111.222 if ( -f $LOCKDIR/LCK..$DEVICE ) then echo 'PPP device is locked' exit 1 endif route del default # Только для случая, если внутренняя сеть (etherNetwork) работает.... # если она НЕАКТИВНА, то вышеуказанные команды абсолютно безопасны... route ## Чтобы показать, что исполнение команд прошло успешно... /usr/lib/ppp/fix-cua $DEVICE unalias pushd unalias popd pushd /usr/lib/ppp # stty 19200 -tostop # Ниже закомментированы строки программы по умолчанию ... # if chat -l LCK..$DEVICE ABORT "NO CARRIER" ABORT BUSY "" ATZ OK ATs50=255s111=0DT$PHONE CONNECT "" ogin: $USER ssword: \\q$PASSWORD echo $cwd ls -l ./comserv.dip dip ./comserv.dip ## I removed the -v (DEBUG&VERBOSE) option to 'dip'. set dip_status=$status # echo the return value of dip is $dip_status # echo значение переменной dip есть $dip_status if $dip_status == '0' then # Now please wait for 10 seconds, while the link is being auto-verified by dip. echo 'About to fork-off pppd (after a delay of 10 secs)...' echo 'Запуск в параллельном режиме pppd (после задержки в 10 секунд)...' date echo 'If you see any error msgs below, then we are having SERIOUS problems...' echo 'Если вы увидите далее какие-либо сообщения об ошибках, то у нас СЕРЬЕЗНЫЕ проблемы...' sleep 10 pppd -detach crtscts defaultroute domain remote.princeton.edu mru 1005 mtu 1005 $OUR_IP_ADDR{}: /dev/$DEVICE 38400 & ###### нам не нужно исполнять ЭТО (есть предыдущие строки...) < /dev/$DEVICE > /dev/$DEVICE ) & # Демон pppd запущен в параллельном режиме. Видите "&" в КОНЦЕ предыдущей строки... # Использую опцию "locl", мы требуем чтобы каталог /var/spool/uucp был тем самым # каталогом, в котором создавались LOCKS... echo 'Now wait another 10 seconds, before I auto-verify internet connection.' echo 'Ждем 10 секунд перед проверкой соединения с интернет.' sleep 10 cat ~root/@utils/.line ping -v -c 5 genius.eng.wayne.edu cat ~root/@utils/.line traceroute physics.iisc.ernet.in >&! /tmp/$$ cat /tmp/$$ \rm -f /tmp/$$ cat ~root/@utils/.line exit 0 else echo 'PPP setup failed' exit 1 endif popd # [EoF]
ПРИМЕЧАНИЕ: Этот скрипт приведен здесь только как пример. Если вы будете использовать этот файл, то вам не гарантировано успешное соединение с интернет. Данный сценарий вызывается из "Скрипта PPP-подключения", приведенном выше...
#******************************** comserv.dip ******************************** # # Скрипт соединения SLIP ........ # коды ВОЗВРАТА этого скрипта при запуске "dip": # 0 - все нормально. # 1 - небольшие ошибки при инициализации модема. # 2 - ошибка при исполнении команды "dial". # 3 - Хоть команда DIAL и выполнена успешно, этот скрипт не смог распознать # САМЫЙ ПЕРВЫЙ ответ от другого модема. То есть было попытка связаться # заново, хоть ничего ошибочного для скрипта не произошло. # 4 - Модемы прекрасно могут установить соединение. Но удаленный сервер # ПОМЕНЯЛ синтакс или последовательности при обмене данными, # т.е. исходящие от удаленного сервера строки приходят # частично. Возможно, поменялось программное обеспечение на сервере, тогда # и может произойти такая ошибка. РЕШЕНИЕ!!! Соединитесь вручную и запишите # себе строки, показываемые при соединении, содержащие & # Затем перепишите данный скрипт. # 10 - хотя и дозвон, и обмен данными между модемами прошли успешно, # установить PPP-соединение не удалось ############################################################################ main: redial: # Установка серийного порта и скорости. port cua3 speed 38400 # term get $mtu 1005 # Сброс модема и линии. reset # Без исполнения предыдущего сброса, НИЧЕГО дальше работать не будет! # Инициализация модема и дозвон на comserv. # send ATQ0V1E1X4L1S0 0 \r # wait OK 5 send ATZ\r wait OK 5 if $errlvl != 0 goto error # send ATTQ0V1E1X4S0=0&C1\r # wait OK 5 # if $errlvl != 0 goto error ## For Dial Tone use :- send AT&D2\r send AT&DP\r wait OK 5 if $errlvl != 0 goto error # send ATS10=1\r # wait OK 5 # if $errlvl != 0 goto error print if the line is busy, the dial command will realize that after 30 secs ONLY. print если линия занята, то команда dial определит это ТОЛЬКО через 30 секунд. dial 258-0000 30 print Return value of DIAL is $errlvl print Значение переменной DIAL есть $errlvl if $errlvl == 1 goto Continue1 if $errlvl == 3 goto busy print unknown error with DIAL command in "dip" script. print неизвестная ошибка с командой DIAL в скрипте "dip". quit 2 # ошибка при исполнении команды "dial"... busy: print telephone number is busy... Continue (1) or terminate (2)? print телефонная линия занята... Продолжить (1) или отменить (2)? get $input ask if $input == 1 goto redial print You have requested to cancel PPP. Quitting... print Вы решили отменить PPP. Завершаем работу... quit 10 # конец работы... Continue1: # wait V32 30 # wait CONNECT 10 # if $errlvl != 0 print Couldn't detect a CONNECT # if $errlvl != 0 goto connect_fail # print CONNECT was detected... # print определен CONNECT... # Мы соединились. Начинаем входить в систему. login: sleep 3 # send \r\r wait Username: 20 if $errlvl != 0 goto error2 send USERID\r wait Password: 5 if $errlvl != 0 goto error2 send __Password+_::\r\r wait comserv> 15 # print Reached Comserv prompt... # print Достигли Comserv... if $errlvl != 0 goto error2 slipon: send ppp\r wait PPP_STARTED 25 if $errlvl != 0 goto error2 print CONNECTION completed... print Завершен сеанс СВЯЗИ... mode ppp exit 0 error: print Total failure to interact with MODEM!!! print Глобальная ошибка при обращении к МОДЕМУ!!! quit 1 # ошибки при инициализации модема и т.п.... connect_fail: print Couldnt detect a "CONNECT 14400" kind of string after dial in... print Не могу найти строку типа "CONNECT 14400" после дозвона... quit 3 error2: print Modems could nicely link up. But remote server HAS CHANGED syntax/ interaction sequence... print Модемы прекрасно могут установить соединение. Но удаленный сервер ПОМЕНЯЛ синтакс или последовательность при обмене данными... quit 4 # ошибки при инициализации модема и т.п.... #=================================== EOF ===================================
Авторские права на русский перевод этого текста принадлежат © 2000 ASPLinux Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: <linux-howto@metalab.unc.edu> или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу <linux-howto@asplinux.ru>