http://nostalgy.org.ru (c)2004 М.Бабичев 11 октября 2004 г. Использование MS-DOS в сетях TCP/IP В предлагаемой Вам статье будет очень кратко рассказано о компьютерных сетях TCP/IP; основная же часть материала посвящена универсальному сетевому MS-DOS приложению - серверу JNOS. Автору этой статьи приходилось достаточно серьезно изучать JNOS, оказывается с помощью этой небольшой программы можно превратить любой старый компьютер (даже IBM PC XT) в неплохой маршрутизатор и даже WEB, FTP или DNS - сервер! Таким образом любая старая машина может полноценно работать в современных локальных и глобальных сетях... К сожалению документации к JNOS на русском языке практически нет; спешу по мере своих сил исправить это упущение. Надеюсь данная статья поможет начинающим, а возможно и опытным администраторам, желающим использовать JNOS. Сетями TCP/IP, или просто IP-сетями называют компьютерные сети, в которых используется стек (набор) протоколов TCP/IP. Протокол TCP/IP аппаратно-независим, то есть может использоваться в самых разных сетях с любыми сетевыми адаптерами и кабелями:
Более крупные локальные сети солидных фирм, предприятий и даже студенческих городков (сети кампусов) как правило подключены к Интернету постоянно через скоростную выделенную линию. В этих крупных сетях наряду с TCP/IP используются и другие протоколы, например IPX; для таких сетей характерно более разнообразное сетевое оборудование (маршрутизаторы, коммутаторы, концентраторы, различные выделенные сервера) и программное обеспечение (Windows, Windows NT, UNIX, Novell Netware...). Набор протоколов TCP/IP был разработан достаточно давно, еще в 80-х годах. Изначально он предназначался для глобальных сетей, и потому:
Для многих слово Internet означает нечто ультрасовременное, принадлежащее XXI веку. Информационная Супермагистраль, киберпространство, переворот в жизни человечества... Это газетные и журнальные штампы: встречая их, не следует забывать, что локальные сети Ethernet появились еще в 1980 году, а протокол TCP/IP был разработан более 20 лет назад и с тех пор почти не менялся. Для MS-DOS, ровесницы TCP/IP, было разработано немало приложений, позволяющих использовать компьютер с ней в качестве клиента или сервера IP-сети. Несмотря на "торжество" Windows некоторые программисты и сегодня занимаются созданием сетевого софта для DOS. Мы не будем рассматривать все сетевые MS-DOS приложения, их достаточно много. К сожалению, в большинстве своем эти программы имеют неудобный интерфейс, сложны в настройке, имеют только англоязычную документацию. Впрочем, надо признаться, делать сеть под DOS не сложнее, чем под Windows или UNIX. Делать и настраивать сеть вообще непросто, по крайней мере для меня. Но - не боги горшки обжигают. Вчитавшись в документацию, поискав помощи в Интернете, поэкспериментировав с разным оборудованием, софтом и т.д. обычно удается решить проблему - сделать WWW, FTP, почтовый сервер, сервер DNS, маршрутизатор... Если вы взялись за это дело, могу пожелать терпения. И еще нужно изучать устройство локальных сетей, принципы их работы. Из всего TCP/IP софта для DOS хотелось бы выделить клиентский пакет Arachne - графический WWW-браузер с встроенной почтовой программой. Самая новая версия 1.70 поддерживает таблицы, фреймы, CSS, изображения в веб-страницах; работает с монитором SVGA, мышью с колесиком прокрутки на 386. Более старые версии идут на 8086. Arachne теперь русифицирована: есть поддержка кодировок Win-1251 и Koi-8r, русский интерфейс. Этот браузер можно использовать в локальной сети (с пакетным драйвером сетевой карты), либо выходить в Интернет по телефонной линии (есть дозвонщик PPP). Наиболее "продвинутое" серверное приложение для DOS - программа KA9Q NOS (и ее "клоны" JNOS, EZ-NOS, TNOS...). Она позволяет создать в сети WWW, FTP, DNS-сервер, маршрутизатор - даже на 8088 машине с MS-DOS! Впрочем, KA9Q NOS (и "клоны") можно использовать как клиент FTP, Telnet... Что весьма приятно, JNOS является программным продуктом типа freeware, его можно свободно и бесплатно использовать, копировать, распространять... Далее в этой статье будет сказано несколько слов о настройке сервера JNOS: как сделать на его основе различные серверы. Итак, JNOS. Это клон популярной программы KA9Q NOS, созданной в 80-х годах Филом Харном (Phil Harn), радиолюбителем с позывным KA9Q. Мне удалось поэкспериментировать с тремя версиями JNOS: JNOS 1.10k, JNOS 1.11a и JNOS 1.11f. Эти программы вышли в свет еще в 1991 году, однако полезны и сегодня.
JNOS 1.10k содержит FTP-сервер (очень "кривой"),
DNS-сервер. Можно управлять машиной с JNOS 1.10k
по сети (команда remote). JNOS 1.11f весьма похожа
на JNOS 1.10k.
Обе версии JNOS могут работать как программные маршрутизаторы (роутеры), т.е. соединять две и более локальные сети (например, с разными средами передачи данных: витой парои и коаксиалом, или с разной скоростью: 10 Мбит/с и 100 Мбит/с). Либо соединять вашу сеть с другой (в т.ч. Интернетом) через последовательную линию связи, например телефонный провод с модемом (для связи с провайдером поддерживается протокол PPP) или выделенную линию. Для проверки доступности узлов сети есть команды ping и hop check. JNOS содержит также почтовую систему, но похоже, она больше рассчитана на пользователей BBS. Мне, увы не удалость с ней разобраться. Но если вы знаете как сделать из JNOS нормальный E-Mail сервер для локальной сети (доступ через почтовые клиенты Outlook, TheBat!) - обязательно сообщите мне. Очень нужно! :-). Есть и Telnet-сервер, но он используется в основном, для доступа к почтовой системе, поэтому рассматриваться не будет... В целом JNOS - весьма удобная и надежная система с многозадачностью (одновременно может быть запущено несколько серверов и клиентов). Она работает даже на 8088 компьютере без жесткого диска! Изначально JNOS состоит всего из одного исполняемого файла (обычно NET.EXE, NOS.EXE или JNOS.EXE) размером менее 200 Кб. Сравните с Windows NT Server, а ведь их возможности вполне соизмеримы! Для работы JNOS нужны еще несколько каталогов, файлов конфигурации и пакетный драйвер сетевой карты. Установка JNOS:
1. Создайте на диске (дискете) отдельный каталог,
например C:\JNOS. В этом каталоге нужно создать
несколько подкаталогов: 2. В каталог \NOS\BIN скопируйте программу NOS.EXE, пакетный драйвер вашей сетевой платы и программу TERMIN.EXE (для выгрузки пакетного драйвера).
3. В каталог \NOS скопируйте файлы конфигурации:
HTTPD.BAT, NOS.CFG, AUTOEXEC.NOS, FTPUSERS,
DOMAIN.TXT (если нужно). Подредактируйте их по
своему усмотрению (не забудьте изменить имя
пакетного драйвера и пути к файлам). В принципе,
файлы конфигурации могут быть в любом месте. Но
для этого нужно отредактировать NOS.CFG. NOS.CFG
тоже может "лежать" где угодно, если запустить
JNOS такой строкой:
4. Теперь, если вы запустите файл HTTPD.BAT, загрузится пакетный драйвер/драйверы сетевой платы/плат, а затем сервер JNOS. Если выйти из сервера командой exit, пакетные драйверы выгрузятся из памяти программой TERMIN. Пример файла HTTPD.BAT: ----------------------------------------------------------- @echo off REM Запуск пакетного драйвера сетевой платы (3com590): c:\jnos\nos\bin\3c59xpd /I=0x60 REM Если сервер работает маршрутизатором, REM запускаем драйвер второй сетевой платы (Eline-320): c:\jnos\nos\bin\feapkt 0x80 REM Запуск сервера JNOS с файлом конфигурации nos.cfg: c:\jnos\nos\bin\nos.exe -fc:\jnos\nos\nos.cfg REM Выгрузка пакетных драйверов после выхода из JNOS: c:\jnos\nos\bin\termin 0x60 c:\jnos\nos\bin\termin 0x80 ----------------------------------------------------------- Пример файла NOS.CFG: ----------------------------------------------------------- #Внимание! Во всех путях используйте "левый" слэш (т.е "/") #Путь к автоматически выполняемому файлу системных настроек Startup = c:/jnos/nos/autoexec.nos #Каталог почты Spoolqdir = c:/jnos/spool #Каталог, где размещаются файлы finger Fdir = c:/jnos/nos/finger #Файл с описанием пользователей FTP и их прав доступа Userfile = c:/jnos/nos/ftpusers #Каталог, где хранятся лог-файлы LogsDir = c:/jnos/logs #Корневой каталог HTTP-сервера (для размещения веб-страниц) Httpdir = c:/jnos/www #Каталог для статистики HTTP-сервера HttpStatsDir = c:/jnos/wwwstats #Каталог для подробных лог-файлов HTTP-сервера HLogsDir = c:/jnos/wwwlogs #Путь к файлу domain.txt (нужен для DNS-сервера) Dfile = c:/jnos/nos/domain.txt # Файлы для консольной помощи по командам находятся здесь: CmdsHelpdir = c:/jnos/nos/help ----------------------------------------------------------- Пример файла AUTOEXEC.NOS: ----------------------------------------------------------- # Укажите доменное имя этого сервера (или его IP-адрес если # в сети не используются доменные имена) hostname jnos.nostalgy.org # "Персональный" IP-адрес этого сервера ip address 192.0.1.1 # Настройка сервера DNS (есть только в JNOS 1.10k и 1.11f) # Включаем сервер DNS domain dns on # Суффикс домена (общая часть всех имен в вашей сети) domain suffix nostalgy.org. # Очистка кэша имен domain cache clean on # Внешний DNS-сервер. К нему обращаются этот DNS, если не # может найти адрес в своем файле domain.txt. Если внешний # DNS-сервер есть, раскомментируйте следующую строку: # domain addserver 192.0.1.5 # Параметры TCP/IP (если не знаете, лучше не менять!) tcp mss 1460 tcp window 4096 tcp syn off tcp maxwait 60000 tcp irtt 1000 tcp timer linear ip ttl 50 isat 1 # Подключение пакетных драйверов Ethernet. 0x60, 0x80 - это # программные прерывания пакетных драйверов, en0 и en1 суть # условные имена сетевых плат, 5 - размер буфера передачи, # 1600 - параметр mtu. Адреса 0x60, 0x80 - типовые, возможны # другие, но с ними система может не работать (например, у # меня система не функционировала с адресами 0x62 и 0x72)! attach packet 0x60 en0 5 1500 attach packet 0x80 en1 5 1500 # Настройка интерфейса en0: присвоение сетевой плате своего # ip-адреса и маски подсети (это нужно, если сервер jnos # используется в качестве маршрутизатора и имеет несколько # сетевых плат - портов со своими IP-адресами) ifconfig en0 ip 192.0.1.1 ifconfig en0 netmask 0xffffff00 # Настройка интерфейса en1... ifconfig en1 ip 192.0.2.1 ifconfig en1 netmask 0xffffff00 # Настройка маршрутизатора. Добавление двух записей в # таблицу маршрутизации для переброски пакета из одной # сети в другую. Здесь 192.0.1 - адрес сети назначения # (куда направляется IP-пакет), /24 - маска подсети (адрес # сети занимает 24 бита или 3 байта, прочие 8 бит - адрес # узла сети). en0 значит, что пакет для сети 192.0.1 будет # направлен на сетевую плату en0, к которой подключена # сеть назначения 192.0.1 route add 192.0.1/24 en0 route add 192.0.2/24 en1 # Добавляем запись маршрутизации по умолчанию. Если адрес # сети назначения пакета не совпадает с вышеуказанными (см. # выше 192.0.1 и 192.0.2), пакет будет направлен по адресу, # данному ниже (другому маршрутизатору) через интерфейс en0 route add default en0 192.0.1.6 # Настройка сервера FTP (добавьте записи о пользователях в # файл FTPUSERS): ftype image # Время бездействия пользователя (сек.), после истечения # которого соединение с ним прерывается ftptdisc 900 # Максимальное число одновременно подключеных пользователей ftpmax 10 # Включаем сервер FTP start ftp # Запускаем HTTP-сервер на стандартном порту 80. Корневой # каталог для веб-страниц - c:\ka9nos\www (HTTP - сервер # есть только в JNOS 1.11a). Главная страница сайта должна # находиться в корневом каталоге для веб-страниц и иметь # имя root.htm start http 80 c \ka9nos\www # Запускаем Telnet-сервер (если это вам понадобится) # на стандартном порту 23 start telnet 23 # Запускаем удаленное управление JNOS (есть в JNOS версий # 1.10k и 1.11f) для перезагрузки сервера с другой машины: start remote # Автоматическое завершение работы сервера в 06:00 # at 0600 exit # Либо автоматическая перезагрузка (рекомендуется один раз # в день). В данном случае в 05:00 at 0500 reboot ----------------------------------------------------------- Пример файла FTPUSERS: ----------------------------------------------------------- admin ghjkl \ 127 c zxcvb c:\ 127 anonimous * \jnos\ftp 1 upload qwerty c:\jnos\ftp 3 webmaster asdfgh \jnos\www 7 -----------------------------------------------------------Каждая строка содержит запись об одном пользователе. Первым в строке идет имя (логин) пользоввателя, затем его пароль. Еесли вместо пароля указать символ "*", пользователь может использовать любой пароль (или не вводить его вовсе). В примере даны настройки для анонимного пользователя (логин anonimous, в качестве пароля обычно используют свой адрес E-Mail) с минимальными правами. Далее - путь к "домашней" директории FTP, куда попадает пользователь (если указать символ "\" - пользователь войдет в "корень" диска, на котором сервер JNOS, а можно задать любой диск, например "a:\"). Выше "домашнего" каталога "подняться" нельзя, т.е. если указан C:\JNOS\FTP, в C:\JNOS и тем более в C:\ пользователь не попадет.
Последний параметр в строке, пользовательские права доступа
выглядят как число (обычно от 1 до 128); каждый бит числа -
отдельный атрибут доступа. Атрибуты каждого разряда:
Таким образом типичные права доступа таковы:
Замечание: в файле FTPUSERS за последней строкой нужно
ввести символ переноса (нажать Enter) - т.е оставить в
конце файла пустую строку, не содержащую символов. Иначе
последняя строчка (содержащая имя и права юзера) будет
недоступна. Проверено на практике! -------начало примера------- user1 password1 c:\ka9nos\ftp 7 user2 password2 c:\ka9nos\ftp 3 -------конец примера--------Более того, если в конце пути каталога, доступного пользователю указать символ "\", файлы и каталоги, уже содержащиеся в этом каталоге, БУДУТ НЕВИДИМЫ! Получится эдакий "черный ящик" - закачать файл можно, а скачать - уже нет... Эта особенность JNOS не отражена в документации и также обнаружена на практике. Вот пример (user2 видит "черный ящик"): -------начало примера------- user1 password1 c:\ka9nos\ftp 7 user2 password2 c:\ka9nos\ftp\ 7 -------конец примера-------- Использование JNOS в качестве DNS-сервера: DNS (Domain Name System) - система доменных имен, одна из сервисных служб сети TCP/IP. Вы вводите в строке браузера либо FTP-клиента (или любой другой программы) доменное имя сайта, к которому желаете обратиться, например http://386.by.ru :-). Ваша клиентская машина отправляет DNS-серверу запрос, содержащий имя 386.by.ru и получает от него IP-адрес, по которому и производит доступ к узлу. В этой статье не будет подробно рассматриваться конфигурирование DNS-сервера JNOS, мы ограничимся случаем использования его в локальной сети, не подключенной к Интернету. Пусть в этой сети нужно каждому компьютеру (и особенно серверу) присвоить доменное имя. Пример файла DOMAIN.TXT: ----------------------------------------------------------- jnos.nostalgy.org. IN A 192.0.1.1 bigtower.nostalgy.org. IN A 192.0.1.2 pc1.nostalgy.org. IN A 192.0.2.2 masha.nostalgy.org. IN A 192.0.2.2 -----------------------------------------------------------Как видите, здесь каждому доменному имени командой "IN A" присваивается определенный IP-адрес, принадлежащий одному из компьютеров сети. Каждое доменное имя должно заканчиваться строкой "nostalgy.org.", так как это суффикс домена (domain suffix), указанный в файле autoexec.nos (см. выше). Суффикс домена вы можете указать любой, даже "ru." или "microsoft.com." :-), при условии, что ваша сеть отделена от других сетей. Если вы подключены к Интернету, скорее всего Вам уже выделен какой-либо домен, который нужно использовать в качестве суффикса. Доменные имена должны быть лишь на один уровень больше, чем суффикс домена (например, имя masha.pc1.nostalgy.org недопустимо, а masha.nostalgy.org - годится). Впрочем, эти ограничения справедливы лишь для приведенного выше файла DOMAIN.TXT и использования JNOS в качестве единственного DNS-сервера в сети. Если вы подключены к Интернету, вам должен быть известен другой DNS-сервер, к которому вы и направите пользователей, если указанное доменное имя не будет найдено в файле DOMAIN.TXT (смотрите. строку "domain addserver" в файле AUTOEXEC.NOS). Для того, чтобы клиентская машина могла воспользоваться DNS-сервером JNOS, укажите в ее настроках IP-адрес сервера JNOS в качестве сервера DNS. Например, в Windows 98: Панель управления - Сеть - TCP/IP (привязанный к сетевой плате) - Кнопка "Свойства" - Вкладка "Конфигурация DNS". Выберите "Включить DNS", укажите имя клиентского компьютера (в нашем примере p233), домен сети (nostalgy.org) и добавьте в "Порядке просмотра серверов DNS" IP-адрес вашего сервера JNOS (в нашем примере 192.0.1.1).
Если на сервере JNOS командой start remote запущен
сервис remote (отсутствует в JNOS версии 1.11a), с другой
машины, на которой тоже запущен JNOS, вы можете командой
remote в какой-то мере управлять сервером по сети - завершить
работу JNOS и выйти в DOS: На этом наша статья завершается, однако в ней мы не рассмотрели множества тем, касающихся JNOS: почтовая система, Telnet, "тонкости" настроек DNS-сервера, маршрутизация с использованием протокола RIP, подключение последовательной линии и телефонной линии PPP, механизм SSI http-сервера, закрытые паролем "приватные" веб-директории и т.д. Надеюсь, в будущем выйдет продолжение статьи, в которой будут затронуты эти вопросы... Антиквар |