Решение извечной проблемы 1с и hosts
Здравствуйте, расскажу решение проблемы, о которой мне, как начинающему системному администратору пришлось столкнуться лет 5 назад- внедрение серверной 1с. Мною сразу же было принято решение, что никаких RDP, только тонкие клиенты. В этом есть и свои минусы, и свои плюсы. У меня-же сеть была из облака, и пачки магазинов/офисов. Обычная иерархия во главе которой CHR (где же и располагались сервера) и пачка mikrotikов в офисах и магазинах.
Одна и самая «неудобная» проблема тонких клиентов для меня случилась почти сразу.
Пинг к серверу- есть, сеть l3, но тонкий клиент не работает, получаем ошибку
«Ошибка установки соединения
по причине:
server_addr=ss descr=11001(0×00002AF9): Этот хост неизвестен. line=580 file=src\core\src\Networking.cpp»
Очень много времени потратил на решение- почти везде было упоминание hosts, и каких-то более сложных вариантов, типа Wins и тд. А внедрять то нужно уже вчера было. Что-ж прописываем на всех клиентах hosts, и погнали.
Примерно год мы проработали, и тут поняли что виртуальный сервер так себе, лицензии слетают порой, и работает медленно. Ну что-ж, переселяемся на физическую железку.
Все хорошо, но вот не задача- облачная сеть 10.X.1.0/24, там уже есть другие сервера, на 100+ клиентах прописаны хосты к адресу 10.X.1.4/24, а там будет отдельный сервер, нужно как-то проброситься к нему, при условии того что вся подсеть целиком в облаке.
В целом, решилось «вырезав» из /24 подсети участок /30 (ЧТО НЕ РЕКОМЕНДУЮ ДЕЛАТЬ) и это был большущий косяк!
Но все заработало, настроена маршрутизация, никаких проблем не возникает. Казалось бы можно и дальше пользовать так-, но вопрос масштабирования все равно возникает и дальше.
Решение:
Обязательно нужно настроить свой DNS сервер для всех участников сети, и DHCP сервер.
*Да, вариантов решения много, общий смысл такой, вам необходимо добиться того, что бы вы могли пинговать хостнейм из консоли, что сильно упрощенно, естественно.
В описанном мною случае топология следующая:
У нас три отдельных офиса, один общий DNS сервер, и в каждом офисе свой DHCP сервер, в настройках которого сказано клиентам выдавать DNS сервер 10.70.0.1
*естественно, в рамках одного офиса может быть и свой DNS сервер, и свой DHCP сервер. Это не играет особой роли.
Очень важной ролью играет хостнейм сервера 1с, оставлять его вида WIN-XXXXX не советую. Возьмем к примеру хостнейм SRV.
Так-же нам нужно решить либо придумать домен, в котором будут работать клиенты. Важно что бы домен не мог существовать в реальном мире, либо же используйте уже существующий ваш домен.
* Да, если у вас уже настроена AD, существует своя ветка и тд- вам уже виднее как что реализовать и строить.
Мы рассмотрим только пример. Домен local.net. Нам нужно сделать так, что бы и клиенты, и сервер были внутри этого домена. Это можно реализовать через AD, к примеру, либо через DHCP Option.
Итого:
Нам нужно прописать на DNS сервере статическую запись — A srv.local.net 10.70.0.5
А в офисах — DNS Suffix Code 15 'local.net', и указать IP адрес DNS сервера.
Как только клиенты обновят свои записи с DHCP сервера- у них будет прописан наш DNS сервер, и будет прописан «определенной для подключения DNS суффикс» с нашим доменом, что кстати говоря можно будет сделать и вручную, тогда достаточно будет указать общий DNS сервер.
Теперь, если у вас настроена маршрутизация, и все корректно работает- 1с будет работать без проблем. А если и возникают сложности, то nslookup srv покажет какие DNS сервера были использованы, и получил ли клиент адрес сервера.
Все вышесказанное возможно реализовать другими методами, но в рамках «экономии и небольшой сети» — это все вполне стабильно работает, и нужно решать от конкретной задачи, конкретных ситуаций как что лучше реализовать.
А теперь о командах, для Mikrotik:
На DNS сервере должно быть уже включено «Allow Remote Requests», и запрещающее правило на входящие пакеты с внешних интерфейсов.
/ip dns static add type=A name=srv.local.net address=10.70.0.5
Что пропишет статическую запись для хоста srv в домене local.net
На офисных роутерах уже должен быть настроен свой DHCP сервер, а так-же маршрутизация до сервера 1с.
/ip dhcp-server option add name=local code=15 value="'local.net'"
Обязательно домен должен быть внутри одинарных скобок 'домен' , но для консоли, его необходимо отделить двойными скобками, вида value= » 'домен ' » .
/ip dhcp-server network add address=10.70.1.0/24 gateway=10.70.1.1 netmask=24 dns-server=10.70.0.1,8.8.4.4 dhcp-option=local
В вышесказанной команде указан необходимый нам DNS сервер, и так-же название созданной DHCP нами опции. У меня указано два DNS сервера, на случай если не будет связи с нашим сервером (в моем случае не будет связи и с 1с) что бы далее работал интернет, поскольку если не будет ответа от DNS сервера- пользователи будут считать что интернета нету в целом.