Системные администраторы очень любят вместо статических IP-адресов, по которым обращаются, например, на сервер TELNET терминальные клиенты, использовать их определение через сервер доменных имен DNS. Рассмотрим, как использовать эту возможность под DOS при использовании Sockets API SOCKETP.EXE (разработка Datalight), а также проблемы, с которыми может неожиданно столкнуться пользователь.
Конфигурация сети для клиента, работающего под DOS с использованием программного обеспечения фирмы Datalight, определяется текстовым конфигурационным файлом SOCKET.CFG. Для указания сервера DNS в этот файл добавляют строчку:
domain server 192.168.0.2
Если вы разрабатываете программное обеспечение самостоятельно, то приводятся простые примеры функций на ассемблере и C.
Для повышения надежности системы иногда используют два сервера DNS. При этом, по инструкции, в файл SOCKET.CFG требуется добавить следующие строчки:
domain retry 2
domain server 192.168.0.2
domain server 192.168.0.3
domain time 2000
Здесь domain retry 2 определяет число попыток обращения к каждому серверу, а domain time 2000 - время ожидания ответа в миллисекундах.
Однако реальность не всегда соответствует инструкции. Оказалось, что некоторые версии SOCKETP.EXE, поставленные вместе с оборудованием, действуют весьма своеобразно. Они используют только один адрес сервера (конкретно второй в списке, в приведенном примере это 192.168.0.3) и, если этот сервер не работает (остановлен или вышел из строя по техническим причинам) не обращаются к первому (192.168.0.2). Поэтому, если у вас полетит второй DNS, то клиентские устройства, на которых загружены такие версии программы SOCKETP.EXE, работать не будут, потому что не смогут получить нужный им IP-адрес.
К счастью, большой объем используемого оборудования позволил эту ошибку определить, а
также выяснить работоспособную версию SOCKETP.EXE. Вот ее исходные данные:
SOCKETP.EXE - дата 28.11.2003, размер 47228 байт.
SOCKET.UPW - дата 28.11.2003, размер 94 байт.
При запуске программа выводит следующее сообщение:
Sockets v6.22/v7.10 (Revision 4.11.1458)
Copyright (c) 1989-2003 Datalight, Inc.
Portions copyright (c) GPvNO 2003
Compiled Jul 24 2003 (4.11.1458)
Для проверки работоспособности конкретно используемой версии можно применить следующий способ. Следует указать в качестве адреса DNS сервера сначала "пустой" адрес, а затем адрес реального устройства, но без поднятого на нем сервера DNS. При этом такой эксперимент желательно произвести как с первым, так и со вторым по порядку сервером DNS. Дело в том, что встречаются случаи (например, в контроллере радиотерминалов фирмы LXE 6220), когда ошибки происходят с первым в списке DNS-серверов, причем в случае, если указанный IP-адрес реально существует, но сервер DNS там не работает, то обращение к следующему в списке адресу происходит без проблем. А вот если IP-адрес не существует (компьютер, на котором стоит служба DNS вышел из строя), то обращения к следующему в списке адресу уже не будет.
Жаль, что когда у нас полетел именно второй в списке сервер DNS, то из-за поспешного обновления программного обеспечения на клиентских устройствах, не удалось зафиксировать параметры недоработанного варианта программы, но несколько станций, подозрительных по этой части, еще ползают, и если подозрения оправдаются - здесь будут указаны исходные данные частично работоспособных версий SOCKETP.EXE.