
В своей работе мне часто необходимо подключаться к серверам через SSH и по другим протоколам. Часто эти сервера не имеют доменного имени, а подключаться необходимо по IP‑адресу.
Когда этих серверов 2-3, ещё как-то запоминаешь что на каком сервере находится. Но когда их становится больше 10, то помнить что находится на xxx.xxx.xxx.115, а что на yyy.yyy.yyy.71 проблематично.
Выход есть, можно дать этим адресам локальные доменные имена.
Привет! Меня зовут Игорь, я занимаюсь разработкой в геймдеве на Unity c 2018 года.
Короткая статья о том, как упорядочить хаос из IP-адресов.
Дисклеймер.
Статья не про описание как работает DNS, DHCP или как происходит резолвинг хостов. В статье закидываю только идею того, как можно улучшить ваш рабочий процесс и упростить себе жизнь.
Если тема заинтересует, то вы самостоятельно сможете нагуглить всё что потребуется.

Взаимодействие по сети происходит с помощью IP-адреса.
Когда мы вводим доменное имя в браузере, консоли или любом другом месте, то операционная система пытается получить IP‑адрес этого домена в DNS системе. DNS система содержит соответствия доменных имён и IP-адресов.
Запрос на резолвинг IP-адреса может проходить через несколько этапов, пока IP-адрес не будет найден:
Поиск IP-адреса локально (в кэшах операционной системы, браузере)
DNS Resolver (DNS-сервер провайдера. Если в вашей компании есть свой DNS-сервер, то сначала запрос идёт к нему, а потом уже к провайдеру)
Root DNS Server (перенаправляет к другим DNS-серверам нужных доменов верхнего уровня: .ru, .com и т.д.)
Top-Level Domain Server (Сервер домена верхнего уровня, резолвит конкретный домен второго уровня)
Authoritative DNS-Server (Хранит точные и окончательные данные о конкретных доменах)
Как задать кастомное доменное имя
При поиске IP-адреса локально мы можем самостоятельно создать кастомные доменные имена. Для этого в операционных системах есть файл hosts.
Файл hosts содержит сопоставление IP-адреса и доменного имени.
Имеет формат: IP-адрес custom_host_name
Расположение файла hosts на разных OS:
Windows |
C:\Windows\system32\drivers\etc |
Mac OS |
/etc |
Linux |
/etc |
P.S. Возможно файл/путь скрыт. Открываем с правами администратора.
Что делать если по указанному пути нет файла hosts или сам путь не существует?
Погуглить
В файле можем увидеть уже знакомый нам localhost.
P.S. В некоторых ситуациях может быть не указан.

Для примера возьмём один из IP для домена ya.ru (77.88.44.242) и добавим его как кастомный хост со своим именем ya_custom_host

Моё правило именования таких хостов
Для себя я ввёл правило, что все такие хосты именую с постфиксом custom_host (пример, db_custom_host).
Чтобы случайно не потратить время на выяснение причин почему несуществующий хост перестал резолвиться.
Тут, возможно, набегут знающие люди и скажут “дык этож начальная школа”.
Да действительно, это очень простой трюк.
Зачастую наш опыт складывается из набора ситуаций “А чё так можно было?!”.
В своё время я бы не отказался, если бы кто-то подкинул такую идею.
Использую это уже много времени, делюсь этой идеей с вами.
Вуаля, теперь используем наше кастомное доменное имя вместо IP-адреса там где это необходимо.

Как это можно использовать ещё?
Задать временное доменное имя для хоста, если DNS ещё не подтянул изменения.
Если нужно во многих местах, то можно раскатить такой файл.
Для уже существующих сайтов переопределить доменное имя локально, например сделать его короче (P.S. задача со звёздочкой*).
Залочить доступ к определённому сайту (родительский контроль).
Варианты использования ограничиваются только вашей фантазией.
Дополнительно
Если вас тоже интересует улучшение рабочих процессов, то возможно вас заинтересуют другие мои статьи:
Как при помощи ведения дневника событий искать точки роста, оценивать свой результат, проводить ретроспективу и давать конкретную обратную связь:
Статья «Activity Journal. Самоорганизация и анализ рабочего времени. На что уходят рабочие часы?»Как с помощью код-анализа можно ускорить изучение\понимание кодовой базы:
Статья: «Unity, Roslyn и code analysis. Прикладная задача визуализации графа состояний»
Комментарии (50)

Ds02006
23.05.2026 18:09В файле hosts у меня список доменных имён из поп-ап окон. Всё они резолвятся как 127.0.0.1

saigor33 Автор
23.05.2026 18:09Звучит интересно, а про какие поп-ап окна речь и для чего это?

alan008
23.05.2026 18:09Чтобы заблочить запросы на эти сервера, кэп ) А то мало ли что уйдёт на telemetry.microsoft.com. Поэтому каждый порядочный джентльмен пишет в hosts: 127.0.0.1 telemetry.microsoft.com

saigor33 Автор
23.05.2026 18:09Тут писали про поп-ап окна. Для меня это окна, которые вылетают в лицо в случайных местах. Вот интересно что имелось ввиду

NAI
23.05.2026 18:09...а потом жалуются почему микрософт принимает такие уе...жасные решения. Да потому что нормальные пользователи выпали из метрик и статистик
За это мнение мне конечно напихают, но как еще понять сколько пользователей переносят кнопку пуск наверх экрана 1%, 2%, 10%? Никак, только статистически, только через телеметрию.

alan008
23.05.2026 18:09Беда в том, что по телеметрии (даже если бы она отсылалась) принимать никакие решения нельзя. Решения можно принимать только в прямом диалоге с пользователями и через оценки. А не так что "я хозяин продукта, творю что хочу". Хотя у Microsoft еще с 90-х сценарий всех изменений один и тот же - сделать плохо, получить тонну хейта, а потом вернуть как было. Тут и видимость постоянных изменений, и счастье юзеров не уменьшается. Профит.

NAI
23.05.2026 18:09Беда в том, что по телеметрии (даже если бы она отсылалась) принимать никакие решения нельзя.
Это с чего такое мнение? Представьте, что у вас есть фича (любая) - как понять надо ли ее развивать, достаточно поддерживать или она нафиг никому не нужна и только жрет
время программистаденьги? Фокус группы, А\Б тесты (на той же фокус группе) и телеметрия. Фокус группы это очень и очень маленькие выборки на фоне общего количества пользователей.сделать плохо, получить тонну хейта, а потом вернуть как было.
Вообще то нет, powertoys тому пример - MS тестирует на пакете фичи и если они имеют хорошие отзывы внедряет в ОС (win+shift+s тому пример, или, скажем win+v)
Во-вторых, у тонны хейтеров отключена телеметрия, потому что хейтеры, они выпадают из статистики и потом удивляются "а че это наше мнение не учитывают".

Ds02006
23.05.2026 18:09Рекламные окна, которые выскакивают при открытии, например, странички на сайте Rutor.

pantsarny
23.05.2026 18:09а зачем они на 127.0.0.1 ходят ? логичнее тогда 0.0.0.0

Patrick139
23.05.2026 18:09"о, сколько вам открытий чудных готовит..." мир DNS

Goron_Dekar
23.05.2026 18:09Так и не понял за всю свою жизнь, как построить отказоустойчевый DNS.
Вот вам 2 самые частые причины отказа:
1) Все оплаты делаются с одноразовых счетов, и это приводит к провалам в сроках оплаты. Информационная гигиена не позволяет привязывать актуальный счёт.2) Отказ в обслуживании. DNS провайдеры отжимают домены, санкции запрещают переводы, конторы закрываются.
Выходит, что DNS или шифрование HTTPS - просто точка отказа по административной плоскости.

Freeman_RU
23.05.2026 18:09Завести свой dns с локальной зоной? И что вы такое делаете, что вам санкциями могут зону отобрать?

vselubyat
23.05.2026 18:09Странный пост, странное решение
Если не знаешь свою инфраструктуру, а серверов для подключения действительно много, то и в доменных именах будет путаница в итоге
Вы писали что для подключений используете "гуи", так в большинстве приложений есть возможность нейминга подключений, по этому не совсем ясно для чего прописывать доменные имена
Было бы смешно увидеть как человек с таким же успехом забывает какие он домены навыдумывал и лезет в хост каждый раз что бы вспомнить что там
Но хорошо, что вы сами придумали проблему, что бы самому не решить - очевидно растет эффективный менеджер хД

saigor33 Автор
23.05.2026 18:09Ну тут я с Вами не соглашусь.
Если не знаешь свою инфраструктуру, а серверов для подключения действительно много, то и в доменных именах будет путаница в итоге
Знать свою инфраструктуру не то же самое, что помнить наизусть все свои хосты. Как по мне, помнить все свои хосты в большинстве случаев будет мусорной информацией (здорово, если Вы их помните).
Путаница в доменных именах будет только если вы даёте плохой нейминг, либо не обновляете его по мере внесения изменений.
Да, могут быть ситуации, когда проще использовать ip, так в этом случае и стоит его использовать. Никто не запрещает пользоваться двумя вариантами. Есть например реплика сет базы данных состоящего из primary-реплики, secondary-реплики и арбитра. Так почему бы их не назвать так (да, primary и secondary могут поменяться. Они для этого и нужны), но они настраиваются с предпочтениями под конкретную задачу, так почему бы не использовать human-readable конструкции.
Вы писали что для подключений используете "гуи", так в большинстве приложений есть возможность нейминга подключений, по этому не совсем ясно для чего прописывать доменные имена
Я использую несколько вариантов. SSH консоль, SFTP чаще всего гуи. То что в гуи есть нейминг это верно, и я использую его. Но так во всех тулзах, которые Вы используете нужно будет пойти и поменять ip-адрес, а так у вас одна точка принятия решения.
Было бы смешно увидеть как человек с таким же успехом забывает какие он домены навыдумывал и лезет в хост каждый раз что бы вспомнить что там
Это уже вопрос плохо нейминга и самоорганизации.

m1skam
23.05.2026 18:09Вы тут пишете про нейминг и тд, и вот вроде это правильная мысль, только решение вы максимально убогое предложили. Даже ssh config будет не идеальным решением, потому что вы можете пересесть на другой компьютер где не будет вашего hosts и возможно config. Используйте нормально dns. А еще лучше используйте ansible, нечего руками по серверам ползать, что бы потом не удивляться откуда конфигурационный дрифт появился.

saigor33 Автор
23.05.2026 18:09У меня как раз не было цели разворачивать DNS. Это настройка только моей рабочей машины, так чтобы мне было удобно работать.
То что я могу пересесть на другой компьютер, тоже в полне ожидаемое и возможно событие. Но речь в статье именно о том как сделать это для себя (без привлечения других людей и доп. инфраструктуры).
Про ssh config я уже увидел в нескольких комментария рекомендацию, спасибо.
За рекомендацию ansible тоже спасибо. Задачи на серверах менять конфигурацию достаточно редкая, но думаю полезно знать о тулзе.
m1skam
23.05.2026 18:09DNS это не так сложно. Хостинги DNS (AWS, Yandex Cloud) стоят не так дорого. К примеру в Yandex Cloud это примерно 44 рубля за зону(домен) в месяц и 38 рублей за 1 млн запросов к записям. Одного домена как правило достаточно.
Ansible же это не только про менять, редко или часто, конфигурацию на сервере. Это история про идемпотентность, то есть если вы 1 раз настроили какую то роль в ansible и далее простым действием раскатали эту роль на N серверов и вы будете уверены в том, что на все сервера конфигурация встало одинаково.Вы же сами писали про большое кол-во серверов, имхо на масштабах, когда вы уже не помните, где и что у вас на серверах, жить без нормальных инструментов - это очень сильно не любить себя и свое время.

saigor33 Автор
23.05.2026 18:09DNS это не так сложно. Хостинги DNS (AWS, Yandex Cloud) стоят не так дорого. К примеру в Yandex Cloud это примерно 44 рубля за зону(домен) в месяц и 38 рублей за 1 млн запросов к записям. Одного домена как правило достаточно.
Тут дело не в деньгах или сложности. Я не думаю что мне будет сложно поднять или настроить(скорее всего что-то поизучать всё равно придётся). Тут вопрос только профита от этого. Если это нужно только мне, то зачем усложнять.
Может получится как типичная история "программист тратит несколько часов на автоматизацию задачи, которую можно сделать вручную за 5 минут" :)Да, это правильно. Но нужно ли? Получу ли я то преимущество ради которого делаю это? А если нет разницы, то мой ответ тут только один :) Когда понадобится, тогда и сделаю)
Это как выбирать монолит или микросервисы)
JBFW
23.05.2026 18:09Тут палка о двух концах: с одной стороны, иногда решить задачу вручную действительно быстрее и проще, но если задача достаточно нечастая - в следующий раз придётся вспоминать, "чего я тут такое делаль-то?"
Правда, для этого ещё скрипты придумали: один раз пусть даже долго пишешь - потом запускаешь не вникая и не вспоминая чё -как.

eri
23.05.2026 18:09в etc ещё лезть в правами администратора. напишите лучше ssh_config он простой. Host myserver HostName 192.168.1.10 . перенаправлет подключение к myserver на 192.168.1.10

PaulZi
23.05.2026 18:09люто плюсую. Причём можно указывать масками различные настройки. Например у меня задана маска *.companyname чтобы прописать рабочий ключ, не указывая его к каждому. Также удобно сразу прописывать порт, если он нестандартный - голова не болит помнить, какой там порт используется. Единственное о чём приходится помнить - имя пользователя.

UcnleGaara
23.05.2026 18:09Да когда уже вы в покое несчастный hosts оставите? Человечество придумало для таких вещей как минимум ~ /. ssh/config

NAI
23.05.2026 18:09Человечество придумало для таких вещей как минимум ~ /. ssh/config
Создал, прописал, RDP не работает. Браузер тоже не открывает по имени. Это я к тому что не SSH'ем единым полон мир. Есть еще windows и браузеры.
Нам вот админы не могут(не хотят) зону *.rnd.company.ru делигировать. В итоге, это очень весело настраивать 50 web-based железок(камеры, smart-коммуты, snr-erd) по IP-адресам. Единственный способ или поднять свой DNS и жонглировать корпоративный-свой или hosts

itoolsy
23.05.2026 18:09Очень вредная и по бОльшей части не верная статья. Скоро начнем читать статьи о том, как включить в 220В сетевой штунр не перепутав со шнуром от USB-C
1. Не стоит править hosts для резолвинга имен (да, слово резолвинг, если уж транслитерацию используем, обозначает "преобразование" доменного имени в IP адрес) так как при изменении ip адреса будет проблематично проводить диагностику неисправности сей. Для подобного существуют, например, .ssh/config файл, где можно прибить к имени и ip и порты и ключи и остальное для ssh. Но для подобного, если у вас инфраструктура больше пары хостов и прям уже надо не забыть ip адрес, достаточно развернуть внутренний dns и не мучаться, ибо снова - смена адреса = проблемы с вопросом - что это не работает ничего.
2. Вы совершенно не верно описали принцип работы DNS со стороны как клиента, так и со стороны сервера. Слышали, но почему-то погуглить или чатгпт спросить - не спросили. Если решите пробел в знаниях убрать, то гуглить стоит про dns forwarding и dns recursion.upd.
Да, про PTR в курсе, если кто мне напомнит)
saigor33 Автор
23.05.2026 18:09Но для подобного, если у вас инфраструктура больше пары хостов и прям уже надо не забыть ip адрес, достаточно развернуть внутренний dns и не мучаться, ибо снова - смена адреса = проблемы с вопросом - что это не работает ничего.
Если это нужно только мне, то я не вижу смысла заводить себе систему DNS. Ибо нет разницы, буду я менять его у себя локально или на dns сервере, который ещё поддерживать нужно будет.
Про отладку. В целом если знаешь как настроена своя рабочая машина, то проверка коннекта по прямому ip-адресу у меня будет стоять первым пунктом.
Но в любом случае, спасибо за совет.
Вы совершенно не верно описали принцип работы DNS со стороны как клиента, так и со стороны сервера
А можете скорректировать в чём я не прав? Я не стал её описывать подробно и упоминать кэши. Какие-нибудь пару пунктов, где я не верно говорю про принцип?

m1skam
23.05.2026 18:09Если это нужно только мне, то я не вижу смысла заводить себе систему DNS. Ибо нет разницы, буду я менять его у себя локально или на dns сервере, который ещё поддерживать нужно будет.
Да, только то, что нравится лично вам и что является плохими практиками, вы тащите на хабр в статью. И разница есть. У вас «локально работает» только на конкретном экземпляре вашего компьютера, dns же будет работать даже если вам потребуется что то сделать в отпуске с кофеварки.
Возможно, я просто рассуждаю, этот сценарий и ваша убежденность в удобстве своего подхода родились из того, что эти сервера не являются вашей основной работой и вам не нужно их поддерживать на постоянной основе.

JBFW
23.05.2026 18:09про ~/.ssh/config никто не вспомнил?
Ну, это такой смешной файл, куда пишется хост, юзер и т.д., чтобы потом ssh myserver - и готово?

NAI
23.05.2026 18:09ssh myserver - и готово?
там у автора вроде в первой строке написано "..и другим протоколам". Как редактирование config поможет подключиться к серверу/web-based железке по, скажем, http(s)?

nronnie
23.05.2026 18:09Тут, возможно, набегут знающие люди и скажут “дык этож начальная школа”.
Да-да. Ведь именно в начальной школе еще не знают, что подчеркивание в доменном имени это недопустимый символ (сюрприз?).

Akon32
23.05.2026 18:09Ждём статью "Как перестать путаться в доменных именах серверов"

NAI
23.05.2026 18:09Шутки-шутками, а я бы почитал про кейсы нейминга. Потому что когда вы работаете в company.ru все просто.. вроде бы.
server1.company.ru, server2.company... а потом их становится 10 и хочется переименовать в server01...(хотя можно было бы сразу)
Потом появляется филиал...уже хочется чего-то вроде server01.filial.company.ru...
и виртуалки... vm01.server01.filial.company.ru
Появляется второй филиал... как его неймит? 02 или по географии?
А что делать если мы поставляем системы на разные предприятия? system.vm.server.company.ru или vm.system.company.ru?
А еще очень весело неймить какие-ндб русские аббревиатуры систем типа СКУ ШС ЭЧ

Emergy
23.05.2026 18:09Офигеть если честно, что такое требует статьи с иллюстрациями и объемным текстом. Я для себя навайбкодил утилитку на golang, которая умеет читать каталог с yaml конфигами которые выглядят примерно так (очень упрощённо):
commands: - my_command: flags: # тут описываются флаги, которые потом можно использовать как переменные tasks: # тут некая цепочка операций, с передачей результата друг другу - http: # запрушиваем данные из какого-то API register: my_var1 - file: # читем файл register: var2 - template: # обрабатываем данные с помощью gotemplete # с кастомными функциями, такими как могучий jq register: tmlp_result - ui_select: # интерактивно выбираем из списка register: ui_result - command: ssh {{ ui_result }}Да. Это намеренно напоминает Ansible.
Пользуемся так:
invi <command> [flags] [query]В результате я запрашиваю списки хостов
invi px my-vm # запрос VM в Proxmox invi inv my-search-query # запрос из инвентарника Ansible invi nb --my-dc dataline my-host # запрашиваем в нетбоксеТе я просто описываю в конфиге цепочку действий, которые мне позволяют сохранить результат в файл или выполнить команду или сделать очередной запрос в API с интерактивным выбором из списка. Это очень удобно. На все ушло возможно меньше времени чем на написание данного поста :-/
Danusha0000000
алиас делаешь сразу с подключение к нужному айпи с нормальным именем)
saigor33 Автор
тоже хороший вариант, только не только в консоли это нужно)
Например, для перекидывания файликов через sftp использую гуишное приложение
eri
гуишные приложения часто умеют смотреть конфиг ssh
Daimonn
в гуишное приложение добавляешь соединение 1 раз и называешь его как хочешь
Radiohead72
Когда хостов не 50 или там 100 а ТЫСЯЧИ, я перестаю запоминать даже алиасы)
Хоть как их не именуй "нормальными именами".
Goron_Dekar
А когда хостов не 50 или там 100, а ТЫСЯЧИ на них руками заходить просто нельзя. Если мониторинг, деплой и отладка такого парка всё ещё требует ручного набирания адресов/ip то у вас в workflow что-то координально не так!
Daimonn
точно так же и домены не запомнишь