Когда клиент 1С не видит сервер по имени: настройка hosts в Windows и Linux
Содержание
В Windows файл hosts лежит в C:\Windows\System32\drivers\etc\hosts, в Linux и macOS — в /etc/hosts. Для работы 1С в него добавляют строку вида 192.168.1.10 srv1c: IP-адрес сервера и его сетевое имя. Править файл можно только с правами администратора, перезагрузка компьютера не нужна.
Есть два способа научить компьютер находить сервер 1С по имени: запись в DNS или строка в hosts. DNS — правильный путь для офиса, где все машины в одном домене. Hosts выбирают, когда DNS нет или он не ваш: удалённый сотрудник по VPN, сервер в облаке, база у подрядчика, тестовый стенд. Файл hosts для 1С — это локальная «подсказка» одному компьютеру, которая срабатывает раньше DNS.
Где находится файл hosts в Windows и как его открыть
Полный путь одинаковый для Windows 10, 11 и Windows Server 2016–2022:
C:\Windows\System32\drivers\etc\hosts
Если система стоит не на диске C, путь начинается с переменной: %SystemRoot%\System32\drivers\etc\hosts. Её можно вставить прямо в адресную строку Проводника.
У файла нет расширения. Это не hosts.txt и не hosts.ics — те файлы рядом служебные, 1С и Windows их не читают.
Как открыть hosts на редактирование
Двойной щелчок по файлу не поможет: Блокнот откроется без прав администратора, и при сохранении появится отказ в доступе. Порядок такой:
- Нажмите «Пуск», наберите
Блокнот. - Щёлкните правой кнопкой по найденному приложению → «Запуск от имени администратора».
- В Блокноте выберите
Файл → Открыть. - Вставьте путь
C:\Windows\System32\drivers\etc\в поле адреса. - В правом нижнем углу смените фильтр «Текстовые документы (*.txt)» на «Все файлы (*.*)» — иначе hosts не будет виден.
- Откройте
hosts, допишите строки в конец, сохраните черезCtrl+S.
Быстрый вариант для тех, кто привык к консоли. Откройте PowerShell от имени администратора и выполните:
notepad $env:SystemRoot\System32\drivers\etc\hosts
Добавить строку без Блокнота тоже можно:
Add-Content -Path "$env:SystemRoot\System32\drivers\etc\hosts" -Value "192.168.1.10`tsrv1c"
Перед первой правкой сделайте копию: copy C:\Windows\System32\drivers\etc\hosts C:\Windows\System32\drivers\etc\hosts.bak. Откат займёт секунду.
Редактирование hosts на серверах Linux и macOS
В Linux и macOS путь один — /etc/hosts. Файл принадлежит root, поэтому правка идёт через sudo:
sudo cp /etc/hosts /etc/hosts.bak
sudo nano /etc/hosts
В nano сохранение — Ctrl+O, затем Enter, выход — Ctrl+X. Если привычнее vim, используйте sudo vim /etc/hosts.
Строка 127.0.1.1 на сервере 1С под Ubuntu и Debian
Это главный подвох при установке сервера 1С на Linux. Установщик Ubuntu и Debian пишет в hosts строку:
127.0.1.1 srv1c
То есть собственное имя сервера указывает на петлевой адрес. Для сервера 1С так оставлять не стоит: кластер регистрирует себя по имени компьютера, и разрешение этого имени в 127.0.1.1 даёт путаницу в адресах процессов. Замените строку на реальный адрес сервера в локальной сети:
127.0.0.1 localhost
192.168.1.10 srv1c.office.local srv1c
Проверьте результат командой hostname -f и getent hosts srv1c — должен вернуться адрес 192.168.1.10.
Если сервер 1С уже работает с пользователями, изменённое разрешение имени подхватится процессами кластера полностью только после перезапуска службы. Перезапуск оборвёт все сеансы — делайте его вечером или в выходной, предупредив пользователей.
Порядок поиска имён в Linux
Linux смотрит в hosts, только если это разрешено в /etc/nsswitch.conf. Строка по умолчанию выглядит так:
hosts: files dns
files — это и есть /etc/hosts, он проверяется первым. Если в вашей сборке порядок другой, записи из hosts могут игнорироваться.
macOS
На Mac сервер 1С ставят редко, но клиент 1С для macOS встречается. Путь тот же, /etc/hosts. После правки сбросьте кэш имён:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Как правильно записать строку в hosts
Синтаксис простой, но ошибки в нём — частая причина того, что «прописал, а не работает ».
| Элемент | Правило | Пример |
|---|---|---|
| IP-адрес | первым в строке, IPv4 или IPv6 | 192.168.1.10 |
| Разделитель | пробел или табуляция, сколько угодно | 192.168.1.10 srv1c |
| Имя | одно или несколько через пробел | srv1c srv1c.office.local |
| Комментарий | всё после # игнорируется | # сервер 1С бухгалтерии |
| Одна запись | одна строка, перенос — конец записи | — |
Чего hosts не умеет:
- 🚫 порты — строка
192.168.1.10:1541 srv1cне работает, порт задаётся в 1С, а не здесь; - 🚫 маски —
*.office.localне поддерживается, каждое имя пишется отдельно; - 🚫 протокол и путь —
https://и/baseв hosts недопустимы, только голое имя хоста; - 🚫 подчёркивание и кириллица в имени — имя компьютера для сервера 1С лучше держать латиницей, цифрами и дефисом.
Пример готового блока для 1С:
# --- 1С ---
192.168.1.10 srv1c srv1c.office.local # центральный сервер кластера
192.168.1.11 srv1c-2 # второй рабочий сервер
192.168.1.20 sqlsrv sqlsrv.office.local # MS SQL / PostgreSQL
192.168.1.30 lic-srv # менеджер сетевых ключей
Регистр букв в имени не важен: SRV1C и srv1c — одно и то же.
Если одно и то же имя написано в hosts дважды с разными адресами, сработает первая строка. Перед добавлением поищите имя в файле поиском Ctrl+F.
Какие имена прописать для кластера 1С, СУБД и лицензий
Главное, что нужно знать практику: адрес сервера, который вы вводите в окне добавления базы, — не единственное имя, которое должен найти клиент.
Клиент → кластер серверов 1С
Схема подключения такая. Клиент стучится к агенту сервера (порт 1540), затем к менеджеру кластера (1541) и к рабочему процессу. Адреса менеджера и рабочих процессов агент сообщает по имени компьютера, под которым сервер зарегистрирован в кластере.
Отсюда классический случай. Сотрудник по VPN добавил базу как Srvr="192.168.1.10";Ref="buh";, агент ответил, а дальше клиент получил имя srv1c и не смог его разрешить. Ошибка выглядит примерно так:
Ошибка соединения с сервером 1С:Предприятия 8.3:
server_addr=tcp://srv1c:1541 descr=11001(0x00002AF9): Этот хост неизвестен.
Лечится одной строкой в hosts клиента: 192.168.1.10 srv1c. Имя берите ровно то, что стоит после tcp:// в тексте ошибки.
Узнать, под каким именем зарегистрирован сервер, можно на самом сервере:
- в консоли кластера: ветка «Рабочие серверы» — колонка с именем компьютера;
- через утилиту
rac:rac cluster listпокажет имя хоста кластера,rac server list --cluster=<id>— рабочие серверы.
Если в кластере несколько рабочих серверов, клиенту нужны записи для каждого: рабочий процесс, к которому вас направит менеджер, может оказаться на любом из них.
Сервер 1С → сервер СУБД
В свойствах информационной базы есть поле «Сервер баз данных». Это имя разрешает сервер 1С, а не компьютер пользователя. Поэтому запись 192.168.1.20 sqlsrv нужна в hosts сервера 1С — у клиентов она ничего не изменит.
Для именованного экземпляра MS SQL в поле пишут sqlsrv\INST, в hosts при этом указывается только sqlsrv. Для PostgreSQL на нестандартном порту — sqlsrv port=5433, в hosts опять же только имя.
Сетевой ключ HASP
Если в конторе стоит сетевой аппаратный ключ, адрес менеджера лицензий задают в файле nhsrv.ini параметром NH_SERVER_ADDR. Его можно указать IP-адресом — тогда hosts не нужен. Если указано имя, оно должно разрешаться на каждом компьютере, где ищется ключ: на клиенте при клиентских ключах, на сервере 1С при серверном ключе.
Веб-клиент и публикация базы
Когда база опубликована на веб-сервере под внешним доменом, внутри офиса этот домен часто указывает на внешний адрес и через роутер не открывается. Строка 192.168.1.40 1c.firma.ru в hosts офисных компьютеров направит браузер и тонкий клиент сразу на внутренний веб-сервер. Сертификат HTTPS при этом продолжит работать: имя в адресной строке не меняется.
Сводка: где какая запись нужна
| Задача | Чей hosts правим | Какое имя пишем |
|---|---|---|
| Клиент не видит кластер | компьютер пользователя | имя из ошибки tcp://… |
| Несколько рабочих серверов | компьютер пользователя | имена всех рабочих серверов |
| 1С не подключается к SQL | сервер 1С | имя из поля «Сервер баз данных» |
| Сервер на Linux, 127.0.1.1 | сервер 1С | собственное имя → реальный IP |
| Сетевой HASP по имени | где ищется ключ | имя из NH_SERVER_ADDR |
| Веб-публикация внутри офиса | компьютер пользователя | домен публикации |
Проверка: подхватилась ли запись
Windows читает hosts на лету, но кэширует результаты. После правки выполните в командной строке:
ipconfig /flushdns
ping srv1c
В ответе ping должен стоять адрес из hosts. Если сервер не отвечает на ping из-за брандмауэра — не страшно, важна первая строка с IP.
Проверить сам порт агента:
Test-NetConnection srv1c -Port 1540
TcpTestSucceeded : True значит, что имя разрешилось и порт открыт. Затем проверьте 1541 и порты рабочих процессов (по умолчанию диапазон 1560–1591, его задают в свойствах рабочего сервера).
Не проверяйте hosts командой nslookup. Она обращается напрямую к DNS-серверу и файл hosts не читает. Отсутствие ответа в nslookup при работающем ping — нормальная картина.
Для PowerShell есть Resolve-DnsName srv1c — он учитывает hosts. В Linux аналог — getent hosts srv1c.
Клиент 1С, который уже был открыт при правке hosts, перезапустите. Отдельные сбои с кэшем имени в запущенном процессе случаются, и перезапуск клиента быстрее, чем поиск причины.
Ошибки при правке hosts и безопасность системы
Частые промахи при редактировании:
- 📄 Файл сохранился как
hosts.txt. Блокнот добавил расширение. Удалите лишнее и переименуйте файл; включите показ расширений в Проводнике, чтобы видеть разницу. - 🔒 «Нет доступа» при сохранении. Блокнот открыт без прав администратора. Иногда у файла стоит атрибут «Только чтение» — снимите его в свойствах файла.
- ↩️ Решётка в начале строки. Строка закомментирована и не работает. Так часто бывает с примерами, скопированными из шаблона hosts.
- 🔁 Устаревший IP. Сервер переехал, адрес сменился, а старая запись в hosts продолжает отправлять клиента в пустоту. DNS бы обновился, hosts — нет.
- 🌐 Запись только на одном компьютере. Через неделю на другой машине та же ошибка. Если записей много и машин больше трёх-четырёх, заведите имя в DNS.
Защита файла
Hosts — излюбленная цель вредоносных программ: подменой адреса пользователя уводят на поддельный сайт банка или блокируют обновления антивируса. Поэтому:
- 🛡️ Защитник Windows может удалять записи с адресами известных сайтов или помечать изменённый файл. Свои локальные строки для 1С он обычно не трогает.
- 👀 Раз в квартал открывайте hosts и смотрите, нет ли чужих строк. Незнакомая запись с именем банка или почты — повод для проверки антивирусом.
- 🧾 Держите комментарий у каждой своей строки: кто добавил и зачем. Через год вы скажете себе спасибо.
Встречаются советы прописать в hosts адреса сайтов фирмы 1С с 127.0.0.1, чтобы «программа не проверяла лицензию». Это обход лицензионной защиты: незаконно и опасно — к таким инструкциям часто прилагаются модифицированные файлы платформы с вредоносным кодом. Кроме того, блокировка ломает получение обновлений, работу интернет-поддержки и сервисов отчётности.
Частые вопросы
Нужно ли перезагружать компьютер после правки hosts?
ipconfig /flushdns в Windows и перезапустить клиент 1С. На Linux-сервере процессы кластера может понадобиться перезапустить вместе со службой.Можно ли в hosts указать порт сервера 1С?
srv1c:2541.Что лучше для удалённых сотрудников: hosts или DNS?
Почему nslookup не видит имя, которое есть в hosts?
nslookup опрашивает DNS-сервер напрямую и файл hosts не читает. Проверяйте командами ping, Resolve-DnsName или Test-NetConnection.Нужно ли прописывать hosts для файловой базы?
\\192.168.1.10\base. Если путь задан по имени компьютера и имя не находится, строка в hosts поможет так же, как для сервера.