15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
30.10.2024
1 +1

Файлът Hosts в macOS: Пълното ръководство за локален DNS контрол

Независимо дали сте разработчик, тестващ нов сайт преди пускането му, отстранявате проблеми при миграция на сървър или просто блокирате разсейващи уебсайтове, hosts файлът на macOS е един от най-мощните — и най-малко използваните — инструменти във вашия арсенал. Това изчерпателно ръководство ви запознава с всичко, което трябва да знаете: какво представлява hosts файлът, къде да го намерите, как да го редактирате безопасно и как да го използвате за реални работни процеси като тестване на staging сървъри и среди за локална разработка.

Какво е hosts файлът?

Hosts файлът е обикновен текстов системен файл, който свързва четими от човека имена на хостове (като example.com) с конкретни IP адреси. Преди вашият Mac да изпрати DNS заявка към външен резолвър, той първо проверява локалния hosts файл. Ако съществува съответстващ запис, се използва този IP адрес — без участието на DNS сървър.

Това прави hosts файла вид локален слой за замяна на DNS, предоставяйки ви детайлен контрол върху начина, по който вашата машина разрешава имена на домейни. Той работи безшумно на заден план и когато се използва правилно, е изключително ефективен инструмент както за разработчици, така и за системни администратори.

Основни случаи на употреба с един поглед

Случай на употребаКакво прави
Блокиране на уебсайтовеСвързва домейн с 0.0.0.0, за да предотврати достъп
Локална разработкаСвързва персонализиран домейн с 127.0.0.1 за тестване на localhost
DNS тестване / МиграцияНасочва активен домейн към IP адрес на нов сървър преди разпространението на DNS
Staging средиПреглежда сайт на нов хост без промяна на публичния DNS
Укрепване на сигурносттаБлокира известни злонамерени домейни или такива, обслужващи реклами

Къде се намира hosts файлът на macOS?

На macOS hosts файлът се намира в директорията /etc/. Пълният път е:

/etc/hosts

Това е защитен системен файл, което означава, че се нуждаете от администраторски (root) привилегии, за да го промените. Не можете просто да щракнете двукратно върху него и да започнете редактиране — трябва да използвате Terminal с повишени права чрез sudo.

> Забележка: Директорията /etc/ на macOS всъщност е символна връзка към /private/etc/, така че /etc/hosts и /private/etc/hosts сочат към един и същи файл.

Как да редактирате hosts файла на macOS: Стъпка по стъпка

Стъпка 1 — Отворете Terminal

Стартирайте приложението Terminal. Можете да направите това по два начина:

  • Spotlight Search: Натиснете Command + Space, въведете Terminal и натиснете Enter
  • Finder: Навигирайте до Applications > Utilities > Terminal

Стъпка 2 — Отворете hosts файла с повишени привилегии

Използвайте текстовия редактор nano с sudo, за да отворите hosts файла:

sudo nano /etc/hosts

Ще бъдете подканени да въведете вашата администраторска парола за macOS. Въведете я и натиснете Enter. Обърнете внимание, че полето за парола ще остане празно докато пишете — това е нормално поведение за sudo в Terminal.

Стъпка 3 — Разберете записите по подразбиране

След като файлът се отвори в nano, ще видите записите по подразбиране, с които macOS се доставя:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

Не изтривайте и не променяйте тези записи по подразбиране. Те са необходими за правилното функциониране на вашата система. Всички персонализирани записи трябва да се добавят под тези редове.

Стъпка 4 — Добавете вашите персонализирани записи

Синтаксисът за запис в hosts файла е прост:

<IP address>    <hostname>    [optional alias]

Всеки запис трябва да е на собствен ред. Ето практически примери:

Блокиране на уебсайт:

0.0.0.0    facebook.com
0.0.0.0    www.facebook.com

Свързване на домейн за локална разработка:

127.0.0.1    myproject.local
127.0.0.1    myproject.dev

Насочване на домейн към конкретен сървър за тестване на миграция:

192.168.1.100    mywebsite.com
192.168.1.100    www.mywebsite.com

Можете също да добавяте вградени коментари с помощта на символа #, за да поддържате hosts файла си организиран:

# --- Local Development Projects ---
127.0.0.1    project-alpha.local
127.0.0.1    project-beta.local

# --- Migration Testing: New Server IP 203.0.113.50 ---
203.0.113.50    clientsite.com
203.0.113.50    www.clientsite.com

Стъпка 5 — Запазете файла

След като направите промените си в nano:

  1. Натиснете Control + O, за да запишете (запазите) файла
  2. Натиснете Enter, за да потвърдите името на файла
  3. Натиснете Control + X, за да излезете от nano

Стъпка 6 — Изчистете DNS кеша

Редактирането на hosts файла само по себе си не е достатъчно — macOS кешира DNS търсенията, затова трябва да изчистите DNS кеша, за да принудите системата си да разпознае новите записи незабавно.

Изпълнете следната команда в Terminal:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Тази команда прави две неща:

  • dscacheutil -flushcache — изчиства локалния DNS кеш
  • killall -HUP mDNSResponder — рестартира процеса mDNSResponder, който обработва DNS резолюцията на macOS

След изпълнението отворете браузъра си и тествайте домейна. Промените трябва да влязат в сила незабавно.

> Забележка за версията на macOS: Командата за изчистване по-горе работи на macOS Monterey, Ventura, Sonoma и Sequoia. При по-стари версии (преди Yosemite) командата може да се различава леко.

Реални случаи на употреба в детайли

Случай на употреба 1: Блокиране на уебсайтове

Hosts файлът е един от най-простите и най-ефективни начини за блокиране на разсейващи или вредни уебсайтове на системно ниво — без необходимост от софтуер на трети страни.

Като свързвате домейн с 0.0.0.0 (немаршрутизируем адрес), предотвратявате браузъра ви да достигне до сайта:

0.0.0.0    reddit.com
0.0.0.0    www.reddit.com
0.0.0.0    twitter.com
0.0.0.0    www.twitter.com

За разлика от браузърните разширения, това блокиране се прилага на системно ниво — засяга всеки браузър и приложение на вашия Mac.

Случай на употреба 2: Среди за локална разработка

Ако изграждате уебсайтове или уеб приложения локално, hosts файлът ви позволява да присвоявате персонализирани имена на домейни на вашата localhost среда вместо да използвате общото http://localhost или http://127.0.0.1.

127.0.0.1    myshop.local
127.0.0.1    clientproject.local
127.0.0.1    wordpress-staging.local

Това е особено полезно при работа с проекти на WordPress, Joomla или Laravel, които използват абсолютни URL адреси или домейни на бисквитки, обвързани с конкретно име на хост. Комбинирайте това с локален стек за уеб сървър (като MAMP, Laravel Valet или Docker контейнер) и ще имате професионален работен процес за локална разработка.

Ако изпълнявате средата си за разработка на отдалечен VPS Хостинг инстанс вместо локално, същият принцип се прилага — можете да насочите домейн директно към IP адреса на вашия VPS за тестване преди актуализиране на публичните DNS записи.

Случай на употреба 3: Тестване на миграции на сървъри без разпространение на DNS

Това е вероятно най-ценният случай на употреба за разработчици и системни администратори. Когато мигрирате уебсайт към нов сървър — независимо дали сменяте хостинг доставчици или надграждате инфраструктурата си — разпространението на DNS може да отнеме от няколко минути до 48 часа.

Hosts файлът ви позволява да прегледате сайта на новия сървър незабавно, от вашата собствена машина, без да засягате никой друг.

Примерен сценарий: Мигрирате mywebsite.com към нов Dedicated сървър с IP адрес 203.0.113.50. Добавете този запис:

203.0.113.50    mywebsite.com
203.0.113.50    www.mywebsite.com

Сега, когато въведете mywebsite.com в браузъра си, вашият Mac зарежда сайта от новия сървър — дори ако публичният DNS все още сочи към стария. Това ви позволява да:

  • Проверите дали всички страници се зареждат правилно
  • Проверите дали SSL сертификатите са правилно инсталирани
  • Тествате форми за контакт, процеси на плащане и динамична функционалност
  • Потвърдите, че връзките с базата данни и медийните файлове са непокътнати

След като се уверите, че всичко работи, актуализирайте публичните DNS записи. Преходът ще бъде безпроблемен за вашите посетители.

Случай на употреба 4: Заобикаляне на DNS за отстраняване на проблеми

Понякога DNS проблемите могат да направят сайта недостъпен дори когато самият сървър работи нормално. Hosts файлът ви позволява да заобиколите DNS напълно и да се свържете директно с известен IP адрес, за да диагностицирате проблема.

Това е особено полезно когато:

  • DNS записите на вашия домейн са неправилно конфигурирани
  • Тествате нова инсталация на SSL сертификати преди разпространението на DNS
  • Трябва да проверите дали сървърът отговаря правилно, докато DNS проблемите се разрешават

Случай на употреба 5: Тестване на конфигурации за имейл хостинг

Ако настройвате или мигрирате Имейл хостинг и трябва да проверите дали вашият пощенски сървър е достъпен на конкретен IP преди актуализирането на DNS записите, можете временно да свържете вашия пощенски домейн в hosts файла, за да тествате свързаността и конфигурацията.

Проверка на промените в hosts файла

Преди изчистването на DNS кеша е добра практика да проверите дали записът е запазен правилно. Можете да видите текущото съдържание на hosts файла без да го редактирате, като използвате:

cat /etc/hosts

Можете също да използвате командата ping, за да проверите дали дадено име на хост се разрешава до очаквания IP:

ping mywebsite.com

Изходът трябва да показва IP адреса, който сте свързали в hosts файла.

Възстановяване на hosts файла по подразбиране

Ако hosts файлът ви стане претрупан или нещо се обърка, можете да го нулирате до първоначалното му състояние. Отворете файла с sudo nano /etc/hosts, премахнете всички персонализирани записи и се уверете, че файлът съдържа само оригиналните настройки по подразбиране:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

Запазете файла, излезте от nano и изчистете DNS кеша с командата от Стъпка 6. Системата ви ще се върне към използването на стандартна DNS резолюция за всички домейни.

Съображения за сигурност

Въпреки че hosts файлът е мощен инструмент, имайте предвид следните добри практики за сигурност:

  • Ограничете достъпа: Само администратори трябва да имат право на запис в /etc/hosts. Проверете разрешенията с ls -la /etc/hosts — трябва да показва -rw-r--r--.
  • Премахнете тестовите записи след употреба: Не оставяйте записи за тестване на миграция след като сте приключили. Те могат да причинят объркване и неочаквано поведение по-късно.
  • Бъдете наясно със злонамерен софтуер: Някои злонамерени програми модифицират hosts файла, за да пренасочват легитимни домейни към злонамерени сървъри. Периодично преглеждайте hosts файла си, за да се уверите, че не съществуват неоторизирани записи.
  • Използвайте контрол на версиите за екипи: Ако няколко разработчици споделят среда за разработка, помислете за документиране на записите в hosts файла в споделен README или конфигурационен файл с контрол на версиите.

Бърза справка: Основни команди

ЗадачаКоманда
Отваряне на hosts файла за редактиранеsudo nano /etc/hosts
Преглед на hosts файла (само за четене)cat /etc/hosts
Изчистване на DNS кеша (macOS Ventura/Sonoma)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Проверка на разрешенията на файлаls -la /etc/hosts
Проверка на разрешаването на имена на хостовеping yourdomain.com
Запазване в nanoControl + O, след това Enter
Излизане от nanoControl + X

Често задавани въпроси

Трябва ли да рестартирам Mac след редактиране на hosts файла?

Не. Изчистването на DNS кеша с командата dscacheutil е достатъчно. Рестартирането не е необходимо.

Ще засегнат ли промените в hosts файла другите потребители на моя Mac?

Да. Hosts файлът е на системно ниво, така че промените засягат всички потребителски акаунти на същата машина.

Работи ли hosts файлът с HTTPS?

Да, но с уговорка. Hosts файлът контролира само IP резолюцията — той не обработва SSL/TLS сертификати. Ако пренасочите домейн към нов сървър чрез hosts файла и SSL сертификатът на този сървър не съответства на домейна, браузърът ви ще покаже предупреждение за сертификата.

Мога ли да използвам заместващи символи в hosts файла?

Не. Hosts файлът на macOS не поддържа записи със заместващи символи. Всяко име на хост трябва да бъде изброено изрично на собствен ред.

Ще засегне ли редактирането на hosts файла моя VPN?

Зависи от конфигурацията на вашия VPN. Някои VPN мрежи заменят локалните DNS настройки, което може да доведе до игнориране на записите в hosts файла, докато VPN е активен.

Заключение: Поемете пълен контрол над локалния си DNS

Hosts файлът на macOS е измамно прост, но забележително мощен инструмент. С един текстов файл и няколко команди в Terminal можете да блокирате разсейващи уебсайтове, да изграждате професионални среди за локална разработка и да тествате миграции на сървъри с пълна увереност — без да чакате разпространението на DNS или да докосвате живата си инфраструктура.

За разработчици, работещи с VPS контролни панели или управляващи сайтове на Споделен уеб хостинг, овладяването на hosts файла е основно умение, което ще ви спести часове за отстраняване на проблеми. Следващия път, когато подготвяте миграция на сайт или стартирате нов проект за разработка, посегнете първо към /etc/hosts — това е най-бързият и най-надежден начин да контролирате как вашият Mac разрешава всеки домейн в интернет.

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало