В своей работе мне часто необходимо подключаться к серверам через 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-адрес не будет найден:

  1. Поиск IP-адреса локально (в кэшах операционной системы, браузере)

  2. DNS Resolver (DNS-сервер провайдера. Если в вашей компании есть свой DNS-сервер, то сначала запрос идёт к нему, а потом уже к провайдеру)

  3. Root DNS Server (перенаправляет к другим DNS-серверам нужных доменов верхнего уровня: .ru, .com и т.д.)

  4. Top-Level Domain Server (Сервер домена верхнего уровня, резолвит конкретный домен второго уровня)

  5. 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. задача со звёздочкой*).

  • Залочить доступ к определённому сайту (родительский контроль).

Варианты использования ограничиваются только вашей фантазией.

Дополнительно

Если вас тоже интересует улучшение рабочих процессов, то возможно вас заинтересуют другие мои статьи:

Комментарии (50)


  1. Danusha0000000
    23.05.2026 18:09

    алиас делаешь сразу с подключение к нужному айпи с нормальным именем)


    1. saigor33 Автор
      23.05.2026 18:09

      тоже хороший вариант, только не только в консоли это нужно)
      Например, для перекидывания файликов через sftp использую гуишное приложение


      1. eri
        23.05.2026 18:09

        гуишные приложения часто умеют смотреть конфиг ssh


      1. Daimonn
        23.05.2026 18:09

        в гуишное приложение добавляешь соединение 1 раз и называешь его как хочешь


    1. Radiohead72
      23.05.2026 18:09

      алиас делаешь сразу с подключение к нужному айпи с нормальным именем)

      Когда хостов не 50 или там 100 а ТЫСЯЧИ, я перестаю запоминать даже алиасы)

      Хоть как их не именуй "нормальными именами".


      1. Goron_Dekar
        23.05.2026 18:09

        А когда хостов не 50 или там 100, а ТЫСЯЧИ на них руками заходить просто нельзя. Если мониторинг, деплой и отладка такого парка всё ещё требует ручного набирания адресов/ip то у вас в workflow что-то координально не так!


      1. Daimonn
        23.05.2026 18:09

        точно так же и домены не запомнишь


  1. Ds02006
    23.05.2026 18:09

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


    1. saigor33 Автор
      23.05.2026 18:09

      Звучит интересно, а про какие поп-ап окна речь и для чего это?


      1. alan008
        23.05.2026 18:09

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


        1. saigor33 Автор
          23.05.2026 18:09

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


        1. NAI
          23.05.2026 18:09

          ...а потом жалуются почему микрософт принимает такие уе...жасные решения. Да потому что нормальные пользователи выпали из метрик и статистик

          За это мнение мне конечно напихают, но как еще понять сколько пользователей переносят кнопку пуск наверх экрана 1%, 2%, 10%? Никак, только статистически, только через телеметрию.


          1. alan008
            23.05.2026 18:09

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


            1. NAI
              23.05.2026 18:09

              Беда в том, что по телеметрии (даже если бы она отсылалась) принимать никакие решения нельзя. 

              Это с чего такое мнение? Представьте, что у вас есть фича (любая) - как понять надо ли ее развивать, достаточно поддерживать или она нафиг никому не нужна и только жрет время программиста деньги? Фокус группы, А\Б тесты (на той же фокус группе) и телеметрия. Фокус группы это очень и очень маленькие выборки на фоне общего количества пользователей.

              сделать плохо, получить тонну хейта, а потом вернуть как было. 

              Вообще то нет, powertoys тому пример - MS тестирует на пакете фичи и если они имеют хорошие отзывы внедряет в ОС (win+shift+s тому пример, или, скажем win+v)

              Во-вторых, у тонны хейтеров отключена телеметрия, потому что хейтеры, они выпадают из статистики и потом удивляются "а че это наше мнение не учитывают".


      1. Ds02006
        23.05.2026 18:09

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


    1. pantsarny
      23.05.2026 18:09

      а зачем они на 127.0.0.1 ходят ? логичнее тогда 0.0.0.0


      1. Patrick139
        23.05.2026 18:09

        логичнее почитать документацию


        1. pantsarny
          23.05.2026 18:09

          Какую документацию ?


      1. alan008
        23.05.2026 18:09

        1. pantsarny
          23.05.2026 18:09

          Ну и зачем делать запросы на 127.0.0.1 если задача их заблокировать


    1. Goron_Dekar
      23.05.2026 18:09

      Самодельный adblock? Но... зачем?


  1. Patrick139
    23.05.2026 18:09

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


    1. Goron_Dekar
      23.05.2026 18:09

      Так и не понял за всю свою жизнь, как построить отказоустойчевый DNS.
      Вот вам 2 самые частые причины отказа:
      1) Все оплаты делаются с одноразовых счетов, и это приводит к провалам в сроках оплаты. Информационная гигиена не позволяет привязывать актуальный счёт.

      2) Отказ в обслуживании. DNS провайдеры отжимают домены, санкции запрещают переводы, конторы закрываются.

      Выходит, что DNS или шифрование HTTPS - просто точка отказа по административной плоскости.


      1. Freeman_RU
        23.05.2026 18:09

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


  1. ivanopulos
    23.05.2026 18:09

    Зачем сюда это писать??? И кто это сюда пропускает.


  1. vselubyat
    23.05.2026 18:09

    Странный пост, странное решение

    Если не знаешь свою инфраструктуру, а серверов для подключения действительно много, то и в доменных именах будет путаница в итоге

    Вы писали что для подключений используете "гуи", так в большинстве приложений есть возможность нейминга подключений, по этому не совсем ясно для чего прописывать доменные имена

    Было бы смешно увидеть как человек с таким же успехом забывает какие он домены навыдумывал и лезет в хост каждый раз что бы вспомнить что там

    Но хорошо, что вы сами придумали проблему, что бы самому не решить - очевидно растет эффективный менеджер хД


    1. saigor33 Автор
      23.05.2026 18:09

      Ну тут я с Вами не соглашусь.

      Если не знаешь свою инфраструктуру, а серверов для подключения действительно много, то и в доменных именах будет путаница в итоге

      Знать свою инфраструктуру не то же самое, что помнить наизусть все свои хосты. Как по мне, помнить все свои хосты в большинстве случаев будет мусорной информацией (здорово, если Вы их помните).

      Путаница в доменных именах будет только если вы даёте плохой нейминг, либо не обновляете его по мере внесения изменений.

      Да, могут быть ситуации, когда проще использовать ip, так в этом случае и стоит его использовать. Никто не запрещает пользоваться двумя вариантами. Есть например реплика сет базы данных состоящего из primary-реплики, secondary-реплики и арбитра. Так почему бы их не назвать так (да, primary и secondary могут поменяться. Они для этого и нужны), но они настраиваются с предпочтениями под конкретную задачу, так почему бы не использовать human-readable конструкции.

      Вы писали что для подключений используете "гуи", так в большинстве приложений есть возможность нейминга подключений, по этому не совсем ясно для чего прописывать доменные имена

      Я использую несколько вариантов. SSH консоль, SFTP чаще всего гуи. То что в гуи есть нейминг это верно, и я использую его. Но так во всех тулзах, которые Вы используете нужно будет пойти и поменять ip-адрес, а так у вас одна точка принятия решения.

      Было бы смешно увидеть как человек с таким же успехом забывает какие он домены навыдумывал и лезет в хост каждый раз что бы вспомнить что там

      Это уже вопрос плохо нейминга и самоорганизации.


      1. m1skam
        23.05.2026 18:09

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


        1. saigor33 Автор
          23.05.2026 18:09

          У меня как раз не было цели разворачивать DNS. Это настройка только моей рабочей машины, так чтобы мне было удобно работать.

          То что я могу пересесть на другой компьютер, тоже в полне ожидаемое и возможно событие. Но речь в статье именно о том как сделать это для себя (без привлечения других людей и доп. инфраструктуры).

          Про ssh config я уже увидел в нескольких комментария рекомендацию, спасибо.


          За рекомендацию ansible тоже спасибо. Задачи на серверах менять конфигурацию достаточно редкая, но думаю полезно знать о тулзе.


          1. m1skam
            23.05.2026 18:09

            DNS это не так сложно. Хостинги DNS (AWS, Yandex Cloud) стоят не так дорого. К примеру в Yandex Cloud это примерно 44 рубля за зону(домен) в месяц и 38 рублей за 1 млн запросов к записям. Одного домена как правило достаточно.


            Ansible же это не только про менять, редко или часто, конфигурацию на сервере. Это история про идемпотентность, то есть если вы 1 раз настроили какую то роль в ansible и далее простым действием раскатали эту роль на N серверов и вы будете уверены в том, что на все сервера конфигурация встало одинаково.

            Вы же сами писали про большое кол-во серверов, имхо на масштабах, когда вы уже не помните, где и что у вас на серверах, жить без нормальных инструментов - это очень сильно не любить себя и свое время.


            1. saigor33 Автор
              23.05.2026 18:09

              DNS это не так сложно. Хостинги DNS (AWS, Yandex Cloud) стоят не так дорого. К примеру в Yandex Cloud это примерно 44 рубля за зону(домен) в месяц и 38 рублей за 1 млн запросов к записям. Одного домена как правило достаточно.

              Тут дело не в деньгах или сложности. Я не думаю что мне будет сложно поднять или настроить(скорее всего что-то поизучать всё равно придётся). Тут вопрос только профита от этого. Если это нужно только мне, то зачем усложнять.

              Может получится как типичная история "программист тратит несколько часов на автоматизацию задачи, которую можно сделать вручную за 5 минут" :)

              Да, это правильно. Но нужно ли? Получу ли я то преимущество ради которого делаю это? А если нет разницы, то мой ответ тут только один :) Когда понадобится, тогда и сделаю)

              Это как выбирать монолит или микросервисы)


              1. JBFW
                23.05.2026 18:09

                Тут палка о двух концах: с одной стороны, иногда решить задачу вручную действительно быстрее и проще, но если задача достаточно нечастая - в следующий раз придётся вспоминать, "чего я тут такое делаль-то?"

                Правда, для этого ещё скрипты придумали: один раз пусть даже долго пишешь - потом запускаешь не вникая и не вспоминая чё -как.


  1. eri
    23.05.2026 18:09

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


    1. saigor33 Автор
      23.05.2026 18:09

      Спасибо, посмотрю


    1. PaulZi
      23.05.2026 18:09

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


      1. mureevms
        23.05.2026 18:09

        Там же можно указать и имя пользователя


  1. UcnleGaara
    23.05.2026 18:09

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


    1. savostin
      23.05.2026 18:09

      Может потому, что не только для ssh может хост понадобиться?


    1. NAI
      23.05.2026 18:09

      Человечество придумало для таких вещей как минимум ~ /. ssh/config

      Создал, прописал, RDP не работает. Браузер тоже не открывает по имени. Это я к тому что не SSH'ем единым полон мир. Есть еще windows и браузеры.

      Нам вот админы не могут(не хотят) зону *.rnd.company.ru делигировать. В итоге, это очень весело настраивать 50 web-based железок(камеры, smart-коммуты, snr-erd) по IP-адресам. Единственный способ или поднять свой DNS и жонглировать корпоративный-свой или hosts


  1. 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 в курсе, если кто мне напомнит)


    1. saigor33 Автор
      23.05.2026 18:09

      Но для подобного, если у вас инфраструктура больше пары хостов и прям уже надо не забыть ip адрес, достаточно развернуть внутренний dns и не мучаться, ибо снова - смена адреса = проблемы с вопросом - что это не работает ничего.

      Если это нужно только мне, то я не вижу смысла заводить себе систему DNS. Ибо нет разницы, буду я менять его у себя локально или на dns сервере, который ещё поддерживать нужно будет.

      Про отладку. В целом если знаешь как настроена своя рабочая машина, то проверка коннекта по прямому ip-адресу у меня будет стоять первым пунктом.

      Но в любом случае, спасибо за совет.

      Вы совершенно не верно описали принцип работы DNS со стороны как клиента, так и со стороны сервера

      А можете скорректировать в чём я не прав? Я не стал её описывать подробно и упоминать кэши. Какие-нибудь пару пунктов, где я не верно говорю про принцип?


      1. m1skam
        23.05.2026 18:09

        Если это нужно только мне, то я не вижу смысла заводить себе систему DNS. Ибо нет разницы, буду я менять его у себя локально или на dns сервере, который ещё поддерживать нужно будет.

        Да, только то, что нравится лично вам и что является плохими практиками, вы тащите на хабр в статью. И разница есть. У вас «локально работает» только на конкретном экземпляре вашего компьютера, dns же будет работать даже если вам потребуется что то сделать в отпуске с кофеварки.

        Возможно, я просто рассуждаю, этот сценарий и ваша убежденность в удобстве своего подхода родились из того, что эти сервера не являются вашей основной работой и вам не нужно их поддерживать на постоянной основе.


  1. JBFW
    23.05.2026 18:09

    про ~/.ssh/config никто не вспомнил?

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


    1. saigor33 Автор
      23.05.2026 18:09

      мне кажется, только ленивый про него сегодня не написал)


    1. NAI
      23.05.2026 18:09

      ssh myserver - и готово?

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


  1. nronnie
    23.05.2026 18:09

    Тут, возможно, набегут знающие люди и скажут “дык этож начальная школа”.

    Да-да. Ведь именно в начальной школе еще не знают, что подчеркивание в доменном имени это недопустимый символ (сюрприз?).


  1. Akon32
    23.05.2026 18:09

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


    1. 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?

      А еще очень весело неймить какие-ндб русские аббревиатуры систем типа СКУ ШС ЭЧ


  1. 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 с интерактивным выбором из списка. Это очень удобно. На все ушло возможно меньше времени чем на написание данного поста :-/


  1. ekungurov
    23.05.2026 18:09

    Ответственно заявляю, хабр больше не торт