ΠΠ°ΠΊ Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΉΠ»Π° 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 ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡ. Π‘Π°ΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΡΠΉΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΉΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ; Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π±Π΅Π· ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°, Π΄ΠΎΠ±ΡΠ΅ ΡΠ°Π·Π±ΡΠ°Π½Π° ΠΏΡΠΈΡΠΈΠ½Π°.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ