БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Linux

Как Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° Hosts Π² Linux: Пълно тСхничСско Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ

Π€Π°ΠΉΠ»ΡŠΡ‚ `/etc/hosts` Π² Linux Π΅ статична Ρ‚Π°Π±Π»ΠΈΡ†Π° Π·Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅, която ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ ΠΈΠΌΠ΅Π½Π° Π½Π° хостовС с IP адрСси, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π° ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма *ΠΏΡ€Π΅Π΄ΠΈ* Π΄Π° бъдС ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½Π° ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ ΠΈ Π΄Π° Π΅ DNS заявка. Π§Ρ€Π΅Π· добавянС ΠΈΠ»ΠΈ промяна Π½Π° записи Π² Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ DNS Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡΡ‚Π° Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ Π½Π° Π±Π°Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½Π° машина β€” Π±Π΅Π· Π΄Π° докосватС DNS ΡΡŠΡ€Π²ΡŠΡ€Π°, Ρ€ΡƒΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ настройкитС Π½Π° рСгистратора.

Π’ΠΎΠ·ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΠΎΡ‚ Name Service Switch (NSS), ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π² `/etc/nsswitch.conf`. Бтандартният Ρ€Π΅Π΄ `hosts:` ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ гласи `files dns`, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ систСмата ΠΏΡŠΡ€Π²ΠΎ сС ΠΎΠ±Ρ€ΡŠΡ‰Π° към `/etc/hosts`, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ прибягва Π΄ΠΎ DNS Ρ€Π΅Π·ΠΎΠ»Π²ΡŠΡ€ΠΈΡ‚Π΅, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π² `/etc/resolv.conf`. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅Π΄ Π΅ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Π°ΠΊΠΎ Π΄Π°Π΄Π΅Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° хост ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π² `/etc/hosts`, DNS заявката Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ напуска ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π°.

Какво прСдставлява Ρ„Π°ΠΉΠ»ΡŠΡ‚ hosts ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ

Π€Π°ΠΉΠ»ΡŠΡ‚ `/etc/hosts` ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π° изцяло ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° DNS систСма. Π’ Ρ€Π°Π½Π½Π°Ρ‚Π° Π΅Ρ€Π° Π½Π° ARPANET Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ» `HOSTS.TXT`, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ ΠΎΡ‚ Stanford Research Institute, сС Ρ€Π°Π·ΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΠ²Π°ΡˆΠ΅ Π΄ΠΎ всяка ΡΠ²ΡŠΡ€Π·Π°Π½Π° Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° машина. Π”Π½Π΅ΡˆΠ½ΠΈΡΡ‚ `/etc/hosts` Π΅ пряк наслСдник Π½Π° Ρ‚Π°Π·ΠΈ концСпция β€” Π»ΠΎΠΊΠ°Π»Π΅Π½, Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ слой Π·Π° замяна, ΠΊΠΎΠΉΡ‚ΠΎ всяка POSIX-ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма всС ΠΎΡ‰Π΅ Π·Π°Ρ‡ΠΈΡ‚Π°.

ВсСки Ρ€Π΅Π΄ Π±Π΅Π· ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ Π² Ρ„Π°ΠΉΠ»Π° слСдва слСдния синтаксис:

β€œ`

IP_address canonical_hostname [alias1] [alias2] …

β€œ`

  • Π Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‰ΠΈ с `#`, са ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ΠΈ сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Ρ‚.
  • ΠŸΡ€Π°Π·Π½ΠΎΡ‚ΠΎ пространство (ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΈΠ»ΠΈ Ρ‚Π°Π±ΡƒΠ»Π°Ρ†ΠΈΠΈ) раздСля ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π°.
  • Π•Π΄ΠΈΠ½ IP адрСс ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΡŠΠΏΠΎΡΡ‚Π°Π²Π΅Π½ с мноТСство ΠΈΠΌΠ΅Π½Π° Π½Π° хостовС Π½Π° ΡΡŠΡ‰ΠΈΡ Ρ€Π΅Π΄.
  • IPv4 ΠΈ IPv6 записи ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ Ρ„Π°ΠΉΠ».

ΠœΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡΡ‚ стандартСн `/etc/hosts` ΠΏΡ€ΠΈ Π½ΠΎΠ²Π° инсталация Π½Π° Linux ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

β€œ`

127.0.0.1 localhost

127.0.1.1 myhostname.local myhostname

::1 localhost ip6-localhost ip6-loopback

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

β€œ`

Π—Π°ΠΏΠΈΡΡŠΡ‚ `127.0.1.1` Π΅ спСцифичСн Π·Π° Debian/Ubuntu ΠΈ ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ FQDN Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° с адрСс Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ статичСн IP. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°Ρ€ΡƒΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° инструмСнти ΠΊΠ°Ρ‚ΠΎ `sudo`, ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ‚ Π½Π° Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡ Π½Π° ΠΈΠΌΠ΅Π½Π° Π½Π° хостовС.

Π—Π°Ρ‰ΠΎ Π±ΠΈΡ…Ρ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π»ΠΈ Ρ„Π°ΠΉΠ»Π° hosts

Π‘Π»ΡƒΡ‡Π°ΠΈΡ‚Π΅ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π²Π°Ρ€ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ удобство Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π΄ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° сигурността Π½Π° инфраструктурата:

Π›ΠΎΠΊΠ°Π»Π½ΠΈ срСди Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ тСстванС

НасочСтС производствСн Π΄ΠΎΠΌΠ΅ΠΉΠ½ (Π½Π°ΠΏΡ€. `myapp.com`) към `127.0.0.1` ΠΈΠ»ΠΈ LAN IP ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈΠ»ΠΈ тСстванС, Π±Π΅Π· Π΄Π° промСнятС ΠΆΠΈΠ²ΠΈΡ‚Π΅ DNS записи. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-чСстият случай Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ с VPS Hosting срСда Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ»ΠΈ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€.

ВСстванС Π½Π° прилоТСния с мноТСство ΡΡŠΡ€Π²ΡŠΡ€ΠΈ

ΠŸΡ€ΠΈ ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° сайт към Π½ΠΎΠ² ΡΡŠΡ€Π²ΡŠΡ€, насочСтС Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° към IP адрСса Π½Π° новия ΡΡŠΡ€Π²ΡŠΡ€ само Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Π»ΠΎΠΊΠ°Π»Π½Π° машина. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π½ΠΎΠ²Π°Ρ‚Π° срСда Π΅ напълно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½Π°, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ публичния DNS запис β€” Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°ΠΉΠΊΠΈ риска ΠΎΡ‚ прСстой.

Π‘Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ

ΠŸΡ€Π΅Π½Π°ΡΠΎΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ към `0.0.0.0` (ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ ΠΏΡ€Π΅Π΄ `127.0.0.1` Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅) ΠΊΠ°Ρ€Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π΄Π° сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ, Π±Π΅Π· Π΄Π° Ρ‡Π°ΠΊΠ° ΠΎΡ‚ΠΊΠ°Π·Π°Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π½Π° localhost. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ `StevenBlack/hosts` обСдиняват ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ Π·Π° Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈ, Ρ‚Ρ€Π°ΠΊΠ΅Ρ€ΠΈ ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ софтуСр Π² Π΅Π΄ΠΈΠ½ списък Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π² hosts Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

ΠœΡ€Π΅ΠΆΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ микроуслуги

Π’ Docker ΠΈΠ»ΠΈ LXC срСди Π±Π΅Π· пСрсонализиран DNS Ρ€Π΅Π·ΠΎΠ»Π²ΡŠΡ€, записитС `/etc/hosts` Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ (ΠΈΠ»ΠΈ Π½Π° хоста) осигуряват лСсно ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° услуги. Π€Π»Π°Π³ΡŠΡ‚ `–add-host` Π½Π° Docker ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π° записи Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² `/etc/hosts` Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС.

Замяна Π½Π° split-horizon DNS

Π’ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡΡ‚ ΠΈ Π²ΡŠΠ½ΡˆΠ½ΠΈΡΡ‚ DNS Π²Ρ€ΡŠΡ‰Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ записи Π·Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ΅ Π½Π° хост, Π·Π°ΠΏΠΈΡΡŠΡ‚ Π² hosts Ρ„Π°ΠΉΠ»Π° Π²ΠΈ Π΄Π°Π²Π° дСтСрминистичСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° машина.

ВСстванС Π½Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° SSL сСртификати

ΠŸΡ€ΠΈ тСстванС Π½Π° Π½ΠΎΠ²ΠΎ внСдряванС Π½Π° SSL Certificates Π½Π° тСстов ΡΡŠΡ€Π²ΡŠΡ€, насочванСто Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° към тСстовия IP Π² `/etc/hosts` Π²ΠΈ позволява Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡŠΠ»Π½ΠΎΡ‚ΠΎ TLS Ρ€ΡŠΠΊΠΎΡΡ‚ΠΈΡΠΊΠ°Π½Π΅, Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° ΠΎΡ‚ сСртификати ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈ прСнасочванС към HTTPS ΠΏΡ€Π΅Π΄ΠΈ пусканСто Π² производство.

Π‘Ρ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ°: Как Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° hosts Π² Linux

Π‘Ρ‚ΡŠΠΏΠΊΠ° 1: ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»

ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅Π½ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€. ΠŸΡ€ΠΈ настолни дистрибуции, ΠΊΠ»Π°Π²ΠΈΡˆΠ½Π°Ρ‚Π° комбинация `Ctrl + Alt + T` Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² GNOME, KDE ΠΈ XFCE. На ΡΡŠΡ€Π²ΡŠΡ€ Π±Π΅Π· Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс Π²Π΅Ρ‡Π΅ стС Π² шСл сСсия Ρ‡Ρ€Π΅Π· SSH.

ΠŸΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Ρ‚Π΅ тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ:

β€œ`bash

whoami

id

β€œ`

Π‘Ρ‚ΡŠΠΏΠΊΠ° 2: НаправСтС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° тСкущия Ρ„Π°ΠΉΠ» hosts

Π’ΠΈΠ½Π°Π³ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ с Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ систСмСн Ρ„Π°ΠΉΠ». ΠžΠ±Ρ‰ΠΎ `hosts.backup` ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС случайно прСзаписано; врСмСвият ΠΏΠ΅Ρ‡Π°Ρ‚ Π΅ нСдвусмислСн:

β€œ`bash

sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)

β€œ`

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π΅ създадСно:

β€œ`bash

ls -lh /etc/hosts*

β€œ`

Π‘Ρ‚ΡŠΠΏΠΊΠ° 3: ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²Π°Ρ‚Π° ΠΈ собствСността Π½Π° Ρ„Π°ΠΉΠ»Π°

ΠŸΡ€Π΅Π΄ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Ρ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° собствСност ΠΈ ΠΏΡ€Π°Π²Π°Ρ‚Π° Π½Π° Ρ„Π°ΠΉΠ»Π°:

β€œ`bash

ls -la /etc/hosts

β€œ`

ΠžΡ‡Π°ΠΊΠ²Π°Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚:

β€œ`

-rw-r–r– 1 root root 221 Jan 10 09:00 /etc/hosts

β€œ`

Π€Π°ΠΉΠ»ΡŠΡ‚ трябва Π΄Π° Π΅ собствСност Π½Π° `root:root` с ΠΏΡ€Π°Π²Π° `644`. Ако ΠΏΡ€Π°Π²Π°Ρ‚Π° сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚, ΠΏΡ€ΠΎΡƒΡ‡Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅ β€” `/etc/hosts` с ΠΏΡ€Π°Π²Π° Π·Π° запис ΠΎΡ‚ всички Π΅ уязвимост Π² сигурността.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 4: ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° hosts с тСкстов Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

ИзползванС Π½Π° nano (ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ):

β€œ`bash

sudo nano /etc/hosts

β€œ`

ИзползванС на vim:

β€œ`bash

sudo vim /etc/hosts

β€œ`

ИзползванС Π½Π° gedit (GUI, GNOME дСсктоп):

β€œ`bash

sudo gedit /etc/hosts

β€œ`

ИзползванС Π½Π° tee Π·Π° Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ/скриптирани добавяния (Π±Π΅Π· Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€):

β€œ`bash

echo "192.168.1.50 staging.myapp.com" | sudo tee -a /etc/hosts

β€œ`

Π€Π»Π°Π³ΡŠΡ‚ `-a` добавя към Ρ„Π°ΠΉΠ»Π°, вмСсто Π΄Π° Π³ΠΎ прСзаписва. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-бСзопасният ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° скриптовС Π·Π° автоматизация ΠΈ Ansible playbooks.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 5: ДобавянС, промяна ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° записи

ΠŸΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към края Π½Π° Ρ„Π°ΠΉΠ»Π° ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ записи. Π‘ΠΏΠ°Π·Π²Π°ΠΉΡ‚Π΅ стриктно слСднитС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅:

  • По Π΅Π΄ΠΈΠ½ запис Π½Π° Ρ€Π΅Π΄.
  • ΠŸΡŠΡ€Π²ΠΎ IP Π°Π΄Ρ€Π΅ΡΡŠΡ‚, слСд Ρ‚ΠΎΠ²Π° Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈΠΌΠ΅Π½Π° Π½Π° хостовС, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ с ΠΏΡ€Π°Π·Π½ΠΎ пространство.
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ `#` Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ, Π·Π° Π΄Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Ρ‚Π΅ записитС Π·Π° Π±ΡŠΠ΄Π΅Ρ‰ΠΈ справки.

ΠŸΡ€Π΅Π½Π°ΡΠΎΡ‡Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ към Π»ΠΎΠΊΠ°Π»Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°:

β€œ`

127.0.0.1 myproject.local # Local dev – remove before production

β€œ`

НасочванС Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ към ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ тСстов ΡΡŠΡ€Π²ΡŠΡ€:

β€œ`

203.0.113.45 staging.myapp.com # Staging server – pre-DNS cutover

β€œ`

Π‘Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ (ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° 0.0.0.0):

β€œ`

0.0.0.0 ads.example.com

0.0.0.0 tracker.analytics-provider.com

β€œ`

ДобавянС Π½Π° IPv6 запис:

β€œ`

::1 ipv6-service.local

β€œ`

Π‘ΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° мноТСство псСвдоними с Π΅Π΄ΠΈΠ½ IP (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ хостовС):

β€œ`

127.0.0.1 app.local api.local static.local

β€œ`

Π‘Ρ‚ΡŠΠΏΠΊΠ° 6: Π—Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ ΠΈ ΠΈΠ·Π»Π΅Π·Ρ‚Π΅ ΠΎΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°

Π’ nano:

  • Π—Π°ΠΏΠ°Π·Π²Π°Π½Π΅: `Ctrl + O`, слСд Ρ‚ΠΎΠ²Π° `Enter` Π·Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π°.
  • Π˜Π·Ρ…ΠΎΠ΄: `Ctrl + X`.

Π’ vim:

  • Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π² Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ: `Esc`
  • Π—Π°ΠΏΠ°Π·Π²Π°Π½Π΅ ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄: `:wq` слСд Ρ‚ΠΎΠ²Π° `Enter`
  • Π˜Π·Ρ…ΠΎΠ΄ Π±Π΅Π· Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅: `:q!` слСд Ρ‚ΠΎΠ²Π° `Enter`

Π‘Ρ‚ΡŠΠΏΠΊΠ° 7: ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π°

ΠŸΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Ρ‚Π΅, Ρ‡Π΅ записитС са записани ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ:

β€œ`bash

cat /etc/hosts

β€œ`

Π—Π° Π³ΠΎΠ»Π΅ΠΌΠΈ hosts Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ `grep` Π·Π° Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ записи:

β€œ`bash

grep "myproject.local" /etc/hosts

β€œ`

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π·Π° синтактични Π³Ρ€Π΅ΡˆΠΊΠΈ β€” запис с липсващ IP ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½ адрСс Ρ‰Π΅ бъдС ΠΌΡŠΠ»Ρ‡Π°Π»ΠΈΠ²ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Π½ ΠΎΡ‚ Ρ€Π΅Π·ΠΎΠ»Π²ΡŠΡ€Π°:

β€œ`bash

sudo python3 -c "

with open('/etc/hosts') as f:

for i, line in enumerate(f, 1):

line = line.strip()

if line and not line.startswith('#'):

parts = line.split()

if len(parts) < 2:

print(f'Line {i} may be malformed: {line}')

"

β€œ`

Π‘Ρ‚ΡŠΠΏΠΊΠ° 8: Π˜Π·Ρ‡ΠΈΡΡ‚Π΅Ρ‚Π΅ DNS кСша

ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² `/etc/hosts` Π²Π»ΠΈΠ·Π°Ρ‚ Π² сила Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π·Π° Π½ΠΎΠ²ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ систСми. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ систСмата Π²ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ с Π»ΠΎΠΊΠ°Π»Π΅Π½ DNS ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‰ Π΄Π΅ΠΌΠΎΠ½, трябва Π΄Π° изчиститС кСша ΠΌΡƒ, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅.

systemd-resolved (Ubuntu 18.04+, ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ дистрибуции):

β€œ`bash

sudo systemd-resolve –flush-caches

sudo systemd-resolve –statistics # Verify cache was cleared

β€œ`

nscd (Name Service Cache Daemon):

β€œ`bash

sudo systemctl restart nscd

β€œ`

dnsmasq:

β€œ`bash

sudo systemctl restart dnsmasq

β€œ`

NetworkManager с dnsmasq плъгин:

β€œ`bash

sudo systemctl restart NetworkManager

β€œ`

Π‘Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ собствСн DNS кСш нСзависимо. Chrome ΠΈ Firefox ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚ DNS записи Π΄ΠΎ 60 сСкунди. Π—Π° Π΄Π° изчиститС Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ DNS кСш Π½Π° Chrome, ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° `chrome://net-internals/#dns` ΠΈ ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ β€žClear host cache”.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 9: ВСствайтС Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡΡ‚Π°

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ `getent` вмСсто `ping` Π·Π° ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ тСст Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° Π·Π° NSS Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡ:

β€œ`bash

getent hosts myproject.local

β€œ`

`getent` заявява Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Name Service Switch Π½Π° систСмата, Π·Π°Ρ‡ΠΈΡ‚Π°ΠΉΠΊΠΈ `/etc/nsswitch.conf`, ΠΈ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма β€” Π½Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π²Ρ€ΡŠΡ‰Π° DNS ΡΡŠΡ€Π²ΡŠΡ€. Π’ΠΎΠ²Π° Π΅ окончатСлният тСст.

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ:

β€œ`bash

ping -c 3 myproject.local

β€œ`

β€œ`bash

curl -v http://myproject.local

β€œ`

Ако `getent` Π²Ρ€ΡŠΡ‰Π° правилния IP, Π½ΠΎ `ping` Π½Π΅ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ Π² мрСТовия стСк ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна, Π° Π½Π΅ Π² hosts Ρ„Π°ΠΉΠ»Π°.

Hosts Ρ„Π°ΠΉΠ» срСщу DNS: Кога Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠ΅

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ`/etc/hosts`DNS ΡΡŠΡ€Π²ΡŠΡ€
ΠžΠ±Ρ…Π²Π°Ρ‚Π‘Π°ΠΌΠΎ Π΅Π΄Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Π—Π° цялата ΠΌΡ€Π΅ΠΆΠ° ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»Π΅Π½
Π—Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΠ΅Π·Π°Π±Π°Π²Π½ΠΎΠœΠΈΠ½ΡƒΡ‚ΠΈ Π΄ΠΎ 48 часа (зависи ΠΎΡ‚ TTL)
Изисква мрСТаНСДа (Π·Π° външСн DNS)
ΠœΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚Π‘Π»Π°Π±Π° (Ρ€ΡŠΡ‡Π½Π°, Π·Π° всСки хост)ΠžΡ‚Π»ΠΈΡ‡Π½Π° (Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π½ΠΎ управлявана)
ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° замСстващи символиНСДа (Π½Π°ΠΏΡ€. `*.example.com`)
ΠžΡ†Π΅Π»ΡΠ²Π° слСд рСстартиранСДа (Ρ„Π°ΠΉΠ»ΡŠΡ‚ сС Π·Π°ΠΏΠ°Π·Π²Π°)Π”Π° (управлявано ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°)
ΠžΠ΄ΠΈΡ‚Π½Π° слСдаБамо Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° вСрсиитСЗависи ΠΎΡ‚ DNS доставчика
Най-подходящо Π·Π°Π—Π°ΠΌΠ΅Π½ΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°/тСстванС, Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π° инфраструктура
ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° IPv6Π”Π°Π”Π°
ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΠΎ Π·Π° автоматизацияУмСрСно (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»)Високо (управлявано Ρ‡Ρ€Π΅Π· API)

Π—Π° Π΅ΠΊΠΈΠΏΠΈ, управляващи мноТСство ΡΡŠΡ€Π²ΡŠΡ€ΠΈ β€” ΠΊΠ°Ρ‚ΠΎ Ρ„Π»ΠΎΡ‚ ΠΎΡ‚ Dedicated Servers β€” Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° DNS Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ ΠΎΡ‚ Ρ€ΡŠΡ‡Π½ΠΎΡ‚ΠΎ разпространСниС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² hosts Ρ„Π°ΠΉΠ»Π°. Hosts Ρ„Π°ΠΉΠ»ΡŠΡ‚ Π΅ инструмСнт Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½Π° машина, Π° Π½Π΅ инструмСнт Π·Π° инфраструктура.

Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΈ случаи

ИзползванС Π½Π° hosts Ρ„Π°ΠΉΠ»Π° с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ хостовС Π² Apache ΠΈ Nginx

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с мноТСство уСбсайтовС Π½Π° Π΅Π΄ΠΈΠ½ ΡΡŠΡ€Π²ΡŠΡ€ Ρ‡Ρ€Π΅Π· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ хостинг, hosts Ρ„Π°ΠΉΠ»ΡŠΡ‚ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° *клиСнтска машина* трябва Π΄Π° насочва Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° към IP адрСса Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° HTTP Ρ…Π΅Π΄ΡŠΡ€Π° `Host:`, Π·Π° Π΄Π° насочи заявката към правилния Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ хост. Π—Π°ΠΏΠΈΡΡŠΡ‚ Π² hosts Ρ„Π°ΠΉΠ»Π° ΠΈ конфигурацията Π½Π° виртуалния хост Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ΅ Π½Π° хост.

НапримСр, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ Apache Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ хост, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π·Π° `myapp.local` Π½Π° VPS с cPanel, Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ IP адрСса Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° към локалния hosts Ρ„Π°ΠΉΠ»:

β€œ`

198.51.100.10 myapp.local

β€œ`

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ `http://myapp.local` Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° си. Apache Ρ‡Π΅Ρ‚Π΅ Ρ…Π΅Π΄ΡŠΡ€Π° `Host: myapp.local` ΠΈ обслуТва правилния сайт.

Π—Π°Ρ‰ΠΈΡ‚Π° Π½Π° hosts Ρ„Π°ΠΉΠ»Π° ΠΎΡ‚ Π½Π΅ΠΎΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°Π½Π° промяна

ЗлонамСрСният софтуСр чСсто Π°Ρ‚Π°ΠΊΡƒΠ²Π° `/etc/hosts`, Π·Π° Π΄Π° прСнасочи Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ (Π½Π°ΠΏΡ€. Π±Π°Π½ΠΊΠΎΠ²ΠΈ сайтовС) към Ρ„ΠΈΡˆΠΈΠ½Π³ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ `chattr`, Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Π° нСизмСняСм:

β€œ`bash

sudo chattr +i /etc/hosts

β€œ`

Π’ΠΎΠ²Π° прСдотвратява промяна Π΄ΠΎΡ€ΠΈ ΠΎΡ‚ root, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ„Π»Π°Π³ΡŠΡ‚ Π·Π° нСизмСняСмост Π½Π΅ бъдС ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚:

β€œ`bash

sudo chattr -i /etc/hosts # Remove immutability to edit

β€œ`

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°:

β€œ`bash

lsattr /etc/hosts

β€œ`

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° вСрсиитС Π½Π° hosts Ρ„Π°ΠΉΠ»Π°

Π—Π° Π΅ΠΊΠΈΠΏΠΈ ΠΈΠ»ΠΈ слоТни срСди Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, прослСдявайтС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² `/etc/hosts` с Git:

β€œ`bash

sudo cp /etc/hosts ~/dotfiles/hosts

cd ~/dotfiles && git add hosts && git commit -m "Add staging.myapp.com entry"

β€œ`

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ etckeeper Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ управляват вСрсиитС Π½Π° цялата дирСктория `/etc` с Git ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ VCS Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ, осигурявайки пълна ΠΎΠ΄ΠΈΡ‚Π½Π° слСда Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² систСмнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Hosts Ρ„Π°ΠΉΠ» Π² Docker ΠΈ Kubernetes

Π’ Docker ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ записи ΠΎΡ‚ hosts Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈ стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π±Π΅Π· Π΄Π° промСнятС хост систСмата:

β€œ`bash

docker run –add-host=myservice.local:192.168.1.100 myimage

β€œ`

Π’ Kubernetes, `hostAliases` Π² спСцификацията Π½Π° Pod постига ΡΡŠΡ‰ΠΈΡ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚:

β€œ`yaml

spec:

hostAliases:

  • ip: "192.168.1.100"

hostnames:

  • "myservice.local"

β€œ`

Π’Π΅Π·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ са Π·Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π΅ ΠΏΡ€Π΅Π΄ промяната Π½Π° `/etc/hosts` Π½Π° хоста ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ срСди.

Π”Π΅Π±Π°Ρ‚ΡŠΡ‚ `0.0.0.0` срСщу `127.0.0.1` Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅

И Π΄Π²Π°Ρ‚Π° адрСса сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ, Π½ΠΎ сС Π΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½:

  • `127.0.0.1`: Насочва Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° към локалния loopback интСрфСйс. Ако Π½ΠΈΡ‰ΠΎ Π½Π΅ ΡΠ»ΡƒΡˆΠ° Π½Π° ΠΏΠΎΡ€Ρ‚ 80/443 Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° сС ΠΎΡ‚ΠΊΠ°Π·Π²Π° β€” Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма всС ΠΏΠ°ΠΊ сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° я установи, причинявайки ΠΊΡ€Π°Ρ‚ΠΊΠΎ закъснСниС.
  • `0.0.0.0`: ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ²Π° Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Π° дСстинация Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ систСми. Π’Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° сС проваля Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ, Π±Π΅Π· Π΄Π° сС ΠΎΠΏΠΈΡ‚Π²Π° TCP Ρ€ΡŠΠΊΠΎΡΡ‚ΠΈΡΠΊΠ°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° страницитС ΠΏΡ€ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° голям Π±Ρ€ΠΎΠΉ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ Π·Π° Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈ/Ρ‚Ρ€Π°ΠΊΠ΅Ρ€ΠΈ.

Π—Π° случаи Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° с Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ, `0.0.0.0` Π΅ тСхничСски ΠΏΠΎ-добрият ΠΈΠ·Π±ΠΎΡ€.

ЧСсти Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ

ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π΅ Π²Π»ΠΈΠ·Π°Ρ‚ Π² сила слСд Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅:

  • ΠŸΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Ρ‚Π΅, Ρ‡Π΅ Π·Π°ΠΏΠΈΡΡŠΡ‚ Π΅ синтактично ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ (ΠΏΡŠΡ€Π²ΠΎ IP, слСд Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° хоста).
  • Π˜Π·Ρ‡ΠΈΡΡ‚Π΅Ρ‚Π΅ локалния DNS кСш (Π²ΠΈΠΆΡ‚Π΅ Π‘Ρ‚ΡŠΠΏΠΊΠ° 8).
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ `/etc/nsswitch.conf` β€” Π°ΠΊΠΎ `dns` сС появява ΠΏΡ€Π΅Π΄ΠΈ `files` Π² Ρ€Π΅Π΄Π° `hosts:`, DNS сС заявява ΠΏΡŠΡ€Π²ΠΎ ΠΈ hosts Ρ„Π°ΠΉΠ»ΡŠΡ‚ сС заобикаля Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈΡ‚Π΅ записи.

Π“Ρ€Π΅ΡˆΠΊΠ° `sudo: unable to resolve host` слСд Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅:

  • ВСроятно стС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°, ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΡ‰ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° хоста Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° машина с `127.0.1.1` ΠΈΠ»ΠΈ `127.0.0.1`. НСзабавно Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠΏΠΈΠ΅: `sudo cp /etc/hosts.bak.TIMESTAMP /etc/hosts`.

Π—Π°ΠΏΠΈΡΡŠΡ‚ сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π° Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

  • Някои прилоТСния (ΠΏΠΎ-спСциално Ρ‚Π΅Π·ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ `getaddrinfo` с пСрсонализирани NSS ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΈΠ»ΠΈ Ρ‚Π΅Π·ΠΈ със статично ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ Ρ€Π΅Π·ΠΎΠ»Π²ΡŠΡ€ΠΈ) заобикалят изцяло `/etc/nsswitch.conf` ΠΈ заявяват DNS Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ. Π’ΠΎΠ²Π° Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ Π·Π° Go Π±ΠΈΠ½Π°Ρ€Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ с Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ CGO. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ с `strace -e trace=network yourapp`.

Hosts Ρ„Π°ΠΉΠ»ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π½ΠΎ Π½Π΅ Π² Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€:

  • ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π°. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ ΠΈΠΌΠ° собствСн `/etc/hosts`. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ `–add-host` ΠΈΠ»ΠΈ `hostAliases` ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ описано ΠΏΠΎ-Π³ΠΎΡ€Π΅.

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ тСхничСски ΠΈΠ·Π²ΠΎΠ΄ΠΈ: ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ списък Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ `/etc/hosts`, ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π· Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ списък:

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠ±Ρ…Π²Π°Ρ‚Π°: НСобходима Π»ΠΈ Π΅ Ρ‚Π°Π·ΠΈ промяна само Π½Π° Π΅Π΄Π½Π° машина? Ако мноТСство машини сС нуТдаят ΠΎΡ‚ нСя, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ DNS ΠΈΠ»ΠΈ инструмСнт ΠΊΠ°Ρ‚ΠΎ Ansible Π·Π° разпространСниС Π½Π° промяната.
  • ΠŸΡŠΡ€Π²ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅: Π’ΠΈΠ½Π°Π³ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ с Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ (`hosts.bak.YYYYMMDD_HHMMSS`) ΠΏΡ€Π΅Π΄ΠΈ всяко Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅.
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ `0.0.0.0` Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅: По-Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π²Π°Π½Π΅, Π±Π΅Π· overhead ΠΎΡ‚ loopback.
  • Π˜Π·Ρ‡ΠΈΡΡ‚Π΅Ρ‚Π΅ правилния кСш: УстановСтС Π΄Π°Π»ΠΈ систСмата Π²ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° `systemd-resolved`, `nscd` ΠΈΠ»ΠΈ `dnsmasq` ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° рСстартиратС Π³Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° услуга.
  • ВСствайтС с `getent`: По-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ ΠΎΡ‚ `ping` Π·Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° NSS Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡΡ‚Π°.
  • Π—Π°Ρ‰ΠΈΡ‚Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π°: Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ `chattr +i` Π½Π° производствСни ΠΈΠ»ΠΈ чувствитСлни към сигурността систСми.
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ записитС си: ДобавяйтС Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ (`# reason – added YYYY-MM-DD`) към всСки запис, Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ стандартния.
  • ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΉΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ записи: Записи Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°/тСстванС, оставСни Π² производствСни hosts Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, са чСста ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π° Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ диагностицируСми Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅.

Ако управляватС Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² мноТСство срСди, помислСтС Π·Π° ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° hosts Ρ„Π°ΠΉΠ»Π° с ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π° настройка Π½Π° VPS Control Panels, Π·Π° Π΄Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ хостовС ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ отклонСнията Π² конфигурацията Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ машини.

Π—Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ Domain Registration ΠΈ ΠΏΠΎΠ΅Ρ‚Π°ΠΏΠ½ΠΎ пусканС Π² производство, hosts Ρ„Π°ΠΉΠ»ΡŠΡ‚ остава Π½Π°ΠΉ-надСТдният Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° пълСн end-to-end тСст Π½Π° Π½ΠΎΠ²Π° ΡΡŠΡ€Π²ΡŠΡ€Π½Π° конфигурация ΠΏΡ€Π΅Π΄ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° DNS разпространСниСто β€” Π΄Π°Π²Π°ΠΉΠΊΠΈ Π²ΠΈ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π·Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π±Π΅Π· риск, ΠΏΡ€Π΅Π΄ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Π° Π΄Π° Π²ΠΈΠ΄ΠΈ ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ ΠΈ Π΄Π° Π΅ промяна.

Π§Π—Π’

Изисква Π»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° `/etc/hosts` рСстартиранС Π½Π° систСмата?

НС. ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² `/etc/hosts` Π²Π»ΠΈΠ·Π°Ρ‚ Π² сила Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π·Π° Π½ΠΎΠ²ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ. Ако ΠΈΠΌΠ°Ρ‚Π΅ Π»ΠΎΠΊΠ°Π»Π΅Π½ DNS ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‰ Π΄Π΅ΠΌΠΎΠ½ (`systemd-resolved`, `nscd` ΠΈΠ»ΠΈ `dnsmasq`), трябва Π΄Π° изчиститС кСша ΠΌΡƒ. Π‘Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ нСзависими DNS кСшовС, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ изчистСни Ρ€ΡŠΡ‡Π½ΠΎ.

Π—Π°Ρ‰ΠΎ Π·Π°ΠΏΠΈΡΡŠΡ‚ Π² hosts Ρ„Π°ΠΉΠ»Π° ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Π½ΠΎ Π½Π΅ ΠΈ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°?

Π‘Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚ DNS записи нСзависимо ΠΎΡ‚ OS Ρ€Π΅Π·ΠΎΠ»Π²ΡŠΡ€Π°. Chrome ΠΊΠ΅ΡˆΠΈΡ€Π° записи Π΄ΠΎ 60 сСкунди. ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° `chrome://net-internals/#dns` ΠΈ изчистСтС кСша Π½Π° хостовСтС, ΠΈΠ»ΠΈ ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅ TTL Π΄Π° ΠΈΠ·Ρ‚Π΅Ρ‡Π΅.

Мога Π»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ замСстващи символи Π² `/etc/hosts`?

НС. Π€Π°ΠΉΠ»ΡŠΡ‚ `/etc/hosts` Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° записи със замСстващи символи. Всяко ΠΈΠΌΠ΅ Π½Π° хост трябва Π΄Π° бъдС ΠΈΠ·Π±Ρ€ΠΎΠ΅Π½ΠΎ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ. Ако ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡ със замСстващи символи (Π½Π°ΠΏΡ€. `*.local`), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π΅Π½ DNS Ρ€Π΅Π·ΠΎΠ»Π²ΡŠΡ€ ΠΊΠ°Ρ‚ΠΎ `dnsmasq` ΠΈΠ»ΠΈ `unbound`.

Какъв Π΅ максималният Π±Ρ€ΠΎΠΉ записи Π² `/etc/hosts`?

Няма Ρ‚Π²ΡŠΡ€Π΄ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡ‚ ядрото ΠΈΠ»ΠΈ glibc. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° производитСлността сС влошава ΠΏΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ„Π°ΠΉΠ»ΡŠΡ‚ сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΏΡ€ΠΈ всяко Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅. Π€Π°ΠΉΠ»ΠΎΠ²Π΅ с дСсСтки хиляди записи (Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΈ Π·Π° ΡΠΏΠΈΡΡŠΡ†ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈ) ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° добавят ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌΠΎ закъснСниС ΠΏΡ€ΠΈ Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡΡ‚Π° Π½Π° ΠΈΠΌΠ΅Π½Π° Π½Π° хостовС. Π—Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ, спСциализиран DNS sinkhole ΠΊΠ°Ρ‚ΠΎ Pi-hole Π΅ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½.

БСзопасно Π»ΠΈ Π΅ Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅Ρ‚Π΅ стандартнитС записи Π² `/etc/hosts`?

НС. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΈΡ‚Π΅ записи (`127.0.0.1 localhost`, `::1 localhost` ΠΈ ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅Ρ‚ΠΎ Π½Π° собствСното ΠΈΠΌΠ΅ Π½Π° хоста Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π°) са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° систСмата. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°Ρ€ΡƒΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° `sudo`, Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ socket Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ прилоТСнията, Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ‰ΠΈ Π½Π° loopback Ρ€Π΅Π·ΠΎΠ»ΡŽΡ†ΠΈΡ. Π‘Π°ΠΌΠΎ добавяйтС ΠΈΠ»ΠΈ промСняйтС записи; Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΉΡ‚Π΅ стандартнитС Π±Π΅Π· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°, Π΄ΠΎΠ±Ρ€Π΅ Ρ€Π°Π·Π±Ρ€Π°Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°.