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 аппаратно-независим, то есть может использоваться в самых разных сетях с любыми сетевыми адаптерами и кабелями:
  • локальных сетях (Ethernet, Token-Ring, FDDI) на основе витой пары, оптоволокна, коаксиала, радиоволн...
  • глобальных сетях (прежде всего Internet) на основе протяженных выделенных линий - X25, T1, ISDN...
  • вырожденных сетях, образующихся при модемном соединении 2-х компьютеров по телефонной линии (через протоколы SLIP, PPP)
Сейчас почти каждый маленький офис, содержащий несколько компьютеров, оборудован локальной сетью, как правило на основе TCP/IP. Как правило на компьютерах установлена Windows, из сетевого оборудования - один концентратор или коммутатор. Многие такие маленькие сети имеют доступ в Интернет - постоянный (через выделенную линию) или временный (через модем и телефонную линию, т.н. Dial-Up).

Более крупные локальные сети солидных фирм, предприятий и даже студенческих городков (сети кампусов) как правило подключены к Интернету постоянно через скоростную выделенную линию. В этих крупных сетях наряду с TCP/IP используются и другие протоколы, например IPX; для таких сетей характерно более разнообразное сетевое оборудование (маршрутизаторы, коммутаторы, концентраторы, различные выделенные сервера) и программное обеспечение (Windows, Windows NT, UNIX, Novell Netware...).

Набор протоколов TCP/IP был разработан достаточно давно, еще в 80-х годах. Изначально он предназначался для глобальных сетей, и потому:

  • хорошо маршрутизируется (данные в виде пакетов передаются от одного узла к другому через тысячи километров сквозь множество других сетей, даже с другими протоколами, посредством маршрутизаторов)
  • поддерживает т.н. иерархическую систему адресации (сетевой IP-адрес делится на две части: адрес подсети и адрес узла в этой подсети). Например, 192.34.56.11 (адрес подсети 192.34.56, номер узла 11). Это удобно для адресации в больших сетях (в Интернете насчитывается более 50 миллионов компьютеров)
  • позволяет использовать наряду с числовыми IP-адресами более удобные для человека символьные адреса, т.н. доменные имена узлов сети. Например, antiqua.boom.ru. Здесь доменное имя 3 уровня antiqua является поддоменом домена 2 уровня boom. В свою очередь - имя boom входит в пространство имен, принадлежащих домену 1 уровня .ru
  • протокол TCP обеспечивает гарантированную доставку информации (пакета данных) от одного узла к другому. При этом ошибки обнаруживаются и устраняются повторной пересылкой пакета. Таким образом, данные можно надежно передавать даже по зашумленной телефонной линии, правда с низкой скоростью
  • TCP/IP рассчитан на относительно медленные протяженные линии передачи данных (телефонные или выделенные): объем служебной информации по сравнению с полезной невелик, пакеты широковещательной рассылки за пределы своей подсети не распространяются и не "засоряют" другие подсети. Типичная скорость для телефонной линии 28800 бит/с или 33600 бит/с (3...5 Кбайт/с), редко 56000 бит/с (7...8 Кбайт/с). Для выделенных линий скорость 64, 128, 256 Кбит/с, для T1 - 1500 Кбит/с. В магистральных каналах связи встречаются скорости 10, 100 Мбит/с и выше
Сейчас протоколы TCP/IP активно используются не только в Internet, но и во многих локальных сетях, подключенных или не подключенных к Интернету. Неважно, имеет сеть выход в Internet или нет - в ней можно организовать внутренние т.н. интранет-серверы FTP, WWW, E-Mail... Однако в первом случае пользователи других сетей смогут (если вы дадите им доступ) воспользоваться вашими серверами.

Для многих слово 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 1.11a имеет нормальный FTP-сервер (можно заходить на него с помощью FTP-клиентов FAR, Windows Commander...), неплохой WWW-сервер (доступен в сети с помощью любого браузера). Кстати, этот сервер поддерживает механизм SSI!

Обе версии 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. В этом каталоге нужно создать несколько подкаталогов:
\FTP - каталог для файлов, доступных по FTP
\LOGS - здесь создаются лог-файлы с отчетами
\NOS\BIN - место для программ: nos.exe и пакетного драйвера
\NOS\FINGER - здесь хранится информация о пользователях
\NOS\HELP - файлы с помощью по командам JNOS
\SPOOL - каталог для почты
\WWW - каталог для размещения WWW-сайтов
\WWWLOGS - отчеты о посещении веб-страниц
\WWWSTATS - статистика (число посещений веб-страниц)
В принципе, можно создать только подкаталог \NOS\BIN. Остальные каталоги JNOS создаст сама. Внимание! В каталоге \SPOOL создайте файл access.www - можно пустой. Если этого не сделать, доступ ко всем документам веб-сервера будет запрещен (на экране браузера будет появляться страница с сообщением "Forbidden")...

2. В каталог \NOS\BIN скопируйте программу NOS.EXE, пакетный драйвер вашей сетевой платы и программу TERMIN.EXE (для выгрузки пакетного драйвера).

3. В каталог \NOS скопируйте файлы конфигурации: HTTPD.BAT, NOS.CFG, AUTOEXEC.NOS, FTPUSERS, DOMAIN.TXT (если нужно). Подредактируйте их по своему усмотрению (не забудьте изменить имя пакетного драйвера и пути к файлам). В принципе, файлы конфигурации могут быть в любом месте. Но для этого нужно отредактировать NOS.CFG. NOS.CFG тоже может "лежать" где угодно, если запустить JNOS такой строкой:

c:\jnos\nos.exe -fd:\ka9q\router\nos.cfg

(для примера, считаем что JNOS лежит в C:\JNOS, а файл NOS.CFG - в D:\KA9Q\ROUTER).

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); каждый бит числа - отдельный атрибут доступа. Атрибуты каждого разряда:
1 разряд (00000001, 1) - чтение файлов, каталогов
2 разряд (00000010, 2) - создание новых файлов
3 разряд (00000100, 4) - перезапись старых и удаление
...
7 разряд (01000000, 64) - разрешено удаленное упраление
8 разряд (10000000, 128) - запрет доступа через Telnet

Таким образом типичные права доступа таковы:
1 (00000001) - разрешено только чтение (anonimous user)
2 (00000010) - можно только записать файлы (но не прочитать). Идеальный вариант "черного ящика", когда пользователь может отправить вам свой файл, но не может увидеть файлы других пользователей в этом же каталоге
3 (00000011) - можно читать файлы и добавлять новые файлы. Перезаписать или удалить уже имеющиеся файлы нельзя
4 (00000100) - почти то же, что и "черный ящик" (2), только можно не только записывать новые файлы, но и перезаписывать ("затирать") уже имеющиеся
7 (00000111) - чтение, запись, перезапись, удаление... Типичные права вебмастера сайта, лежащего на HTTP-сервере JNOS (сайт закачивается и обновляется по FTP)
127 (01111111) - администраторские права (удаленное управление плюс полный доступ по FTP)

Замечание: в файле FTPUSERS за последней строкой нужно ввести символ переноса (нажать Enter) - т.е оставить в конце файла пустую строку, не содержащую символов. Иначе последняя строчка (содержащая имя и права юзера) будет недоступна. Проверено на практике!
Вот так должен выглядеть файл FTPUSERS:

-------начало примера-------
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:

Если на сервере JNOS командой start remote запущен сервис remote (отсутствует в JNOS версии 1.11a), с другой машины, на которой тоже запущен JNOS, вы можете командой remote в какой-то мере управлять сервером по сети - завершить работу JNOS и выйти в DOS:
remote 192.0.1.1 exit
...или выполнять перезагрузку машины, на которой установлен сервер JNOS:
remote 192.0.1.1 reset
Разумеется, вместо 192.0.1.1 подставьте IP-адрес своего сервера JNOS.

На этом наша статья завершается, однако в ней мы не рассмотрели множества тем, касающихся JNOS: почтовая система, Telnet, "тонкости" настроек DNS-сервера, маршрутизация с использованием протокола RIP, подключение последовательной линии и телефонной линии PPP, механизм SSI http-сервера, закрытые паролем "приватные" веб-директории и т.д. Надеюсь, в будущем выйдет продолжение статьи, в которой будут затронуты эти вопросы...

Антиквар

вернуться к списку текстов