<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Ipv6 on DevOps Way - Практические гайды</title>
    <link>https://devopsway.ru/tags/ipv6/</link>
    <description>Recent content in Ipv6 on DevOps Way - Практические гайды</description>
    <image>
      <title>DevOps Way - Практические гайды</title>
      <url>https://devopsway.ru/images/devopsway-og.png</url>
      <link>https://devopsway.ru/images/devopsway-og.png</link>
    </image>
    <generator>Hugo -- 0.163.3</generator>
    <language>ru</language>
    <lastBuildDate>Thu, 02 Jul 2026 12:45:20 -0400</lastBuildDate>
    <atom:link href="https://devopsway.ru/tags/ipv6/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Networking 20/80, уровень 1: IP-адреса и подсети – математика DevOps</title>
      <link>https://devopsway.ru/posts/networking-01-ip-subnets/</link>
      <pubDate>Thu, 02 Jul 2026 12:00:00 +0300</pubDate>
      <guid>https://devopsway.ru/posts/networking-01-ip-subnets/</guid>
      <description>Второй уровень мини-курса по сетям для DevOps: как считать подсети и маски CIDR в уме, чем приватные адреса отличаются от публичных, что делает NAT и минимум по IPv6. Степени двойки, /24 против /25, три подвоха с собеседования и код-челлендж на разбиение сети.</description>
      <content:encoded><![CDATA[<p>Второй из семи уровней мини-курса «Networking 20/80»: 20% сетевых знаний, которые закрывают 80% ежедневной работы DevOps. В нулевом уровне разобрали карту местности – на каком слое искать поломку. Сегодня спускаемся на уровень адресов: как из <code>10.25.1.100/24</code> за десять секунд достать сеть, broadcast и число хостов, не открывая калькулятор подсетей.</p>
<blockquote>
<p>&ldquo;IP-адресация – единственная часть сетей, где нужна арифметика. Хорошая новость: арифметика простая – степени двойки.&rdquo;</p>
</blockquote>
<hr>
<h2 id="откуда-это-пошло">Откуда это пошло</h2>
<p><strong>1981 – IPv4 (RFC 791).</strong> Jon Postel (ISI, один из отцов интернета) определяет формат: 32 бита, разделённые на 4 октета. 2^32 = ~4.3 миллиарда адресов. В 1981 году казалось, что хватит навсегда.</p>
<p><strong>1993 – CIDR (RFC 1519).</strong> Оригинальная система классов (A, B, C) расходовала адреса неэффективно: класс B = 65 536 адресов, класс C = 256. CIDR (Classless Inter-Domain Routing) позволил делить сети произвольно: /24, /25, /22 – любой размер.</p>
<p><strong>1996 – RFC 1918.</strong> Приватные диапазоны (<code>10.0.0.0/8</code>, <code>172.16.0.0/12</code>, <code>192.168.0.0/16</code>) + NAT. Решение проблемы нехватки адресов до прихода IPv6.</p>
<p><strong>1998 – IPv6 (RFC 2460).</strong> 128 бит = 3.4 × 10^38 адресов. Достаточно, чтобы дать каждому атому на поверхности Земли несколько адресов. В 2026 году IPv6 всё ещё не вытеснил IPv4 полностью.</p>
<hr>
<h2 id="ipv4--32-бита-4-октета">IPv4 – 32 бита, 4 октета</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">IP-адрес: 10.25.1.100
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Десятичная:  10    .   25    .    1    .   100
</span></span><span class="line"><span class="cl">Двоичная:  00001010.00011001.00000001.01100100
</span></span><span class="line"><span class="cl">           └──────────────────────────────────┘
</span></span><span class="line"><span class="cl">                       32 бита
</span></span></code></pre></div><h3 id="специальные-адреса">Специальные адреса</h3>
<table>
	<thead>
			<tr>
					<th>Адрес</th>
					<th>Что значит</th>
					<th>Пример использования</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>0.0.0.0</code></td>
					<td>&ldquo;Все интерфейсы&rdquo; (bind) или &ldquo;нет адреса&rdquo;</td>
					<td><code>listen_addresses = '0.0.0.0'</code></td>
			</tr>
			<tr>
					<td><code>127.0.0.1</code></td>
					<td>Loopback (localhost)</td>
					<td><code>curl http://127.0.0.1:8080</code></td>
			</tr>
			<tr>
					<td><code>255.255.255.255</code></td>
					<td>Broadcast (все в сети)</td>
					<td>DHCP discovery</td>
			</tr>
			<tr>
					<td><code>169.254.x.x</code></td>
					<td>Link-local (DHCP не ответил)</td>
					<td>Проблема с сетью!</td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="приватные-и-публичные-адреса">Приватные и публичные адреса</h2>
<h3 id="приватные-rfc-1918--не-маршрутизируются-в-интернете">Приватные (RFC 1918) – НЕ маршрутизируются в интернете</h3>
<table>
	<thead>
			<tr>
					<th>Диапазон</th>
					<th>CIDR</th>
					<th>Размер</th>
					<th>Где видишь</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>10.0.0.0 – 10.255.255.255</code></td>
					<td><code>10.0.0.0/8</code></td>
					<td>16.7M адресов</td>
					<td>AWS VPC, K8s pods, корпоративные сети</td>
			</tr>
			<tr>
					<td><code>172.16.0.0 – 172.31.255.255</code></td>
					<td><code>172.16.0.0/12</code></td>
					<td>1M адресов</td>
					<td>Docker bridge (172.17.0.0/16)</td>
			</tr>
			<tr>
					<td><code>192.168.0.0 – 192.168.255.255</code></td>
					<td><code>192.168.0.0/16</code></td>
					<td>65K адресов</td>
					<td>Домашние роутеры</td>
			</tr>
	</tbody>
</table>
<h3 id="где-это-видно-в-реальной-работе">Где это видно в реальной работе</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Твоя машина (приватная сеть):</span>
</span></span><span class="line"><span class="cl">ip addr show eth0
</span></span><span class="line"><span class="cl"><span class="c1"># inet 10.25.1.100/24    ← приватный (10.x.x.x)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># K8s pod IP:</span>
</span></span><span class="line"><span class="cl">kubectl get pod -o wide
</span></span><span class="line"><span class="cl"><span class="c1"># NAME     IP            NODE</span>
</span></span><span class="line"><span class="cl"><span class="c1"># api-xxx  10.244.1.15   worker-1    ← приватный (pod network)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># K8s service IP:</span>
</span></span><span class="line"><span class="cl">kubectl get svc
</span></span><span class="line"><span class="cl"><span class="c1"># NAME   CLUSTER-IP    PORT(S)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># api    10.96.45.12   8080/TCP      ← приватный (service network)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Docker bridge:</span>
</span></span><span class="line"><span class="cl">docker inspect bridge <span class="p">|</span> grep Subnet
</span></span><span class="line"><span class="cl"><span class="c1"># &#34;Subnet&#34;: &#34;172.17.0.0/16&#34;          ← приватный</span>
</span></span></code></pre></div><hr>
<h2 id="cidr-и-маски-подсети--главная-математика">CIDR и маски подсети – главная математика</h2>
<h3 id="что-значит-24">Что значит /24</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">IP:   10.25.1.100/24
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">/24 = первые 24 бита – адрес СЕТИ, остальные 8 бит – адрес ХОСТА
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Сетевая часть:     10  . 25  .  1  .  ???
</span></span><span class="line"><span class="cl">                   └──────────────┘  └───┘
</span></span><span class="line"><span class="cl">                    24 бита (сеть)   8 бит (хост)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Маска подсети:  255.255.255.0
</span></span><span class="line"><span class="cl">Двоичная:       11111111.11111111.11111111.00000000
</span></span><span class="line"><span class="cl">                └────── единицы = сеть ──┘└─ нули = хост ─┘
</span></span></code></pre></div><h3 id="формула-сколько-хостов-в-сети">Формула: сколько хостов в сети</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Хостов = 2^(32 - prefix) - 2
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Почему -2: сетевой адрес (все нули) + broadcast (все единицы)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">/24: 2^(32-24) - 2 = 2^8 - 2 = 254 хоста
</span></span><span class="line"><span class="cl">/16: 2^(32-16) - 2 = 2^16 - 2 = 65 534 хоста
</span></span><span class="line"><span class="cl">/8:  2^(32-8)  - 2 = 2^24 - 2 = 16 777 214 хостов
</span></span><span class="line"><span class="cl">/32: 2^0 - 2  = -1 → один конкретный адрес (host route)
</span></span><span class="line"><span class="cl">/31: 2^1 - 2  = 0 → point-to-point линк (RFC 3021, два адреса)
</span></span></code></pre></div><h3 id="шпаргалка-размеров">Шпаргалка размеров</h3>
<table>
	<thead>
			<tr>
					<th>CIDR</th>
					<th>Маска</th>
					<th>Хостов</th>
					<th>Типичное использование</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>/32</td>
					<td>255.255.255.255</td>
					<td>1</td>
					<td>Один конкретный хост (host route)</td>
			</tr>
			<tr>
					<td>/28</td>
					<td>255.255.255.240</td>
					<td>14</td>
					<td>Маленькая подсеть (DMZ)</td>
			</tr>
			<tr>
					<td>/24</td>
					<td>255.255.255.0</td>
					<td>254</td>
					<td>Стандартная подсеть (одна команда, один VLAN)</td>
			</tr>
			<tr>
					<td>/20</td>
					<td>255.255.240.0</td>
					<td>4 094</td>
					<td>AWS subnet default</td>
			</tr>
			<tr>
					<td>/16</td>
					<td>255.255.0.0</td>
					<td>65 534</td>
					<td>Docker bridge, VPC</td>
			</tr>
			<tr>
					<td>/12</td>
					<td>255.240.0.0</td>
					<td>1 048 574</td>
					<td>Большая корпоративная сеть</td>
			</tr>
			<tr>
					<td>/8</td>
					<td>255.0.0.0</td>
					<td>16 777 214</td>
					<td>10.0.0.0/8 – весь приватный блок</td>
			</tr>
	</tbody>
</table>
<h3 id="как-считать-сеть-и-broadcast">Как считать: сеть и broadcast</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Пример: 10.25.1.100/24
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Шаг 1: /24 = маска 255.255.255.0
</span></span><span class="line"><span class="cl">Шаг 2: Сетевой адрес = IP AND маска = 10.25.1.0
</span></span><span class="line"><span class="cl">Шаг 3: Broadcast = сетевой + инверсия маски = 10.25.1.255
</span></span><span class="line"><span class="cl">Шаг 4: Диапазон хостов = 10.25.1.1 – 10.25.1.254
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Пример: 10.25.100.100/20
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Шаг 1: /20 → в третьем октете 4 бита уходят под сеть → 11110000 = 240 → маска 255.255.240.0
</span></span><span class="line"><span class="cl">        Под хост в третьем октете остаётся 4 бита
</span></span><span class="line"><span class="cl">        Размер блока = 2^4 = 16 в третьем октете
</span></span><span class="line"><span class="cl">Шаг 2: 100 в третьем октете → 100 / 16 = 6.25 → блок начинается с 6*16=96
</span></span><span class="line"><span class="cl">        Сетевой адрес: 10.25.96.0
</span></span><span class="line"><span class="cl">Шаг 3: Broadcast: 10.25.96.0 + 16 адресов в октете - 1 = 10.25.111.255
</span></span><span class="line"><span class="cl">Шаг 4: Хосты: 10.25.96.1 – 10.25.111.254
</span></span></code></pre></div><hr>
<h2 id="nat--как-приватные-сети-выходят-в-интернет">NAT – как приватные сети выходят в интернет</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Внутренняя сеть        NAT-роутер                 Интернет
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">10.0.0.5  ┐
</span></span><span class="line"><span class="cl">10.0.0.6  ┼──→   внутри:  10.0.0.1    ──→    8.8.8.8
</span></span><span class="line"><span class="cl">10.0.0.7  ┘      снаружи: 5.6.7.8
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Роутер заменяет адрес источника:
</span></span><span class="line"><span class="cl">10.0.0.5:54321  →  5.6.7.8:54321
</span></span></code></pre></div><p><strong>Три типа NAT:</strong></p>
<table>
	<thead>
			<tr>
					<th>Тип</th>
					<th>Что делает</th>
					<th>Где видишь</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>SNAT</strong> (Source NAT)</td>
					<td>Заменяет src IP</td>
					<td>Выход из приватной сети в интернет</td>
			</tr>
			<tr>
					<td><strong>DNAT</strong> (Destination NAT)</td>
					<td>Заменяет dst IP</td>
					<td>Port forwarding, K8s NodePort</td>
			</tr>
			<tr>
					<td><strong>Masquerade</strong></td>
					<td>SNAT с автоопределением src IP</td>
					<td>iptables на роутере</td>
			</tr>
	</tbody>
</table>
<h3 id="nat-в-k8s">NAT в K8s</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># NodePort: внешний трафик → нода → pod</span>
</span></span><span class="line"><span class="cl"><span class="c1"># DNAT: 10.25.1.10:30080 → 10.244.1.15:8080</span>
</span></span><span class="line"><span class="cl">kubectl get svc api -o yaml
</span></span><span class="line"><span class="cl"><span class="c1"># spec:</span>
</span></span><span class="line"><span class="cl"><span class="c1">#   type: NodePort</span>
</span></span><span class="line"><span class="cl"><span class="c1">#   ports:</span>
</span></span><span class="line"><span class="cl"><span class="c1">#   - port: 8080         ← ClusterIP port</span>
</span></span><span class="line"><span class="cl"><span class="c1">#     nodePort: 30080    ← DNAT на каждой ноде</span>
</span></span></code></pre></div><hr>
<h2 id="ipv6--минимум-для-devops">IPv6 – минимум для DevOps</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># IPv6-адрес:</span>
</span></span><span class="line"><span class="cl">ip -6 addr show
</span></span><span class="line"><span class="cl"><span class="c1"># inet6 fe80::1/64 scope link          ← link-local (аналог 169.254.x.x)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># inet6 2001:db8::1/64 scope global    ← глобальный</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Формат: 8 групп по 4 hex-цифры</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 2001:0db8:0000:0000:0000:0000:0000:0001</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Сокращение: 2001:db8::1 (нули можно убрать)</span>
</span></span></code></pre></div><p><strong>Что DevOps должен знать про IPv6:</strong></p>
<ol>
<li><code>::1</code> – loopback (аналог 127.0.0.1)</li>
<li><code>fe80::/10</code> – link-local (есть на каждом интерфейсе)</li>
<li>Docker и K8s поддерживают dual-stack (IPv4 + IPv6)</li>
<li>Если сервис не слушает на <code>[::]</code> – IPv6-клиенты не подключатся</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Проверить, слушает ли сервис на IPv6:</span>
</span></span><span class="line"><span class="cl">ss -tlnp <span class="p">|</span> grep <span class="m">8080</span>
</span></span><span class="line"><span class="cl"><span class="c1"># LISTEN  0.0.0.0:8080    ← только IPv4</span>
</span></span><span class="line"><span class="cl"><span class="c1"># LISTEN  [::]:8080       ← IPv4 + IPv6 (dual-stack)</span>
</span></span></code></pre></div><hr>
<h2 id="подвохи-для-собеса">Подвохи для собеса</h2>
<h3 id="подвох-1-сколько-хостов-в-сети-24-а-в-25">Подвох 1: &ldquo;Сколько хостов в сети /24? А в /25?&rdquo;</h3>
<p><strong>Ответ:</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">/24: 2^8 - 2 = 254 хоста
</span></span><span class="line"><span class="cl">/25: 2^7 - 2 = 126 хостов
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Почему -2:
</span></span><span class="line"><span class="cl">  - Сетевой адрес (10.0.0.0) – не может быть назначен хосту
</span></span><span class="line"><span class="cl">  - Broadcast (10.0.0.255) – не может быть назначен хосту
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Ловушка: /31 → 2^1 - 2 = 0. Но RFC 3021 разрешает /31 для point-to-point
</span></span><span class="line"><span class="cl">линков (два адреса, оба назначаются хостам, без broadcast).
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">/32 → один конкретный адрес. Используется в маршрутах (host route)
</span></span><span class="line"><span class="cl">и security groups (разрешить трафик с одного IP).
</span></span></code></pre></div><p><strong>На собесе:</strong> &ldquo;254 хоста в /24. Минус два: сетевой адрес и broadcast. В /31 формально ноль, но RFC 3021 разрешает два – это используется на point-to-point линках между роутерами.&rdquo;</p>
<hr>
<h3 id="подвох-2-хосты-1001524-и-1002524--в-одной-сети-или-нет">Подвох 2: &ldquo;Хосты 10.0.1.5/24 и 10.0.2.5/24 – в одной сети или нет?&rdquo;</h3>
<p><strong>Ответ через маску:</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">10.0.1.5/24:  сеть = 10.0.1.0, хосты: 10.0.1.1 – 10.0.1.254
</span></span><span class="line"><span class="cl">10.0.2.5/24:  сеть = 10.0.2.0, хосты: 10.0.2.1 – 10.0.2.254
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Разные сети! Они не могут общаться напрямую – нужен маршрутизатор.
</span></span></code></pre></div><p><strong>А если /16?</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">10.0.1.5/16:  сеть = 10.0.0.0, хосты: 10.0.0.1 – 10.0.255.254
</span></span><span class="line"><span class="cl">10.0.2.5/16:  сеть = 10.0.0.0, хосты: 10.0.0.1 – 10.0.255.254
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Одна сеть! Они видят друг друга напрямую (через switch, без router).
</span></span></code></pre></div><p><strong>На собесе:</strong> &ldquo;Маска определяет, в одной ли сети два хоста. Если после применения маски сетевая часть одинакова – одна сеть (L2, коммутация). Если разная – разные сети (L3, маршрутизация). Это фундаментальный принцип IP: маска определяет scope.&rdquo;</p>
<hr>
<h3 id="подвох-3-что-такое-cidr-и-зачем-он-заменил-классы">Подвох 3: &ldquo;Что такое CIDR и зачем он заменил классы?&rdquo;</h3>
<p><strong>Ответ через историю:</strong></p>
<p>До CIDR (до 1993) были классы:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Класс A: /8   – 16M адресов (IBM, Apple, MIT – каждый получил /8!)
</span></span><span class="line"><span class="cl">Класс B: /16  – 65K адресов
</span></span><span class="line"><span class="cl">Класс C: /24  – 256 адресов
</span></span></code></pre></div><p>Проблема: организации с 500 хостами получали класс B (65K) – 64 500 адресов впустую. С 300 хостами /24 не хватает, /16 – избыток.</p>
<p>CIDR: любой префикс /17, /20, /22 – точный размер под потребность.</p>
<p><strong>На собесе:</strong> &ldquo;CIDR – бесклассовая адресация, введённая в 1993. До неё были классы A/B/C с фиксированными размерами, что вело к расточительному использованию адресного пространства. CIDR позволяет /20 (4094 хоста) вместо выбора между /16 (65K) и /24 (254). Это отсрочило исчерпание IPv4 на десятилетия.&rdquo;</p>
<hr>
<h2 id="код-челлендж">Код-челлендж</h2>
<p><strong>Задача:</strong> тебе нужно спроектировать сеть для проекта с тремя окружениями:</p>
<ul>
<li><strong>prod</strong>: до 200 серверов</li>
<li><strong>staging</strong>: до 50 серверов</li>
<li><strong>dev</strong>: до 30 серверов</li>
</ul>
<p>Базовая сеть: <code>10.100.0.0/16</code>. Разбей её на подсети для каждого окружения.</p>
<p>Ответь: какой CIDR, сетевой адрес и диапазон хостов для каждого.</p>
<details>
<summary>Решение</summary>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">prod (до 200 серверов):
</span></span><span class="line"><span class="cl">  Нужно: ≥ 202 адреса (200 + сеть + broadcast)
</span></span><span class="line"><span class="cl">  /24 = 256 адресов (254 хоста) ✓
</span></span><span class="line"><span class="cl">  Сеть: 10.100.0.0/24
</span></span><span class="line"><span class="cl">  Хосты: 10.100.0.1 – 10.100.0.254
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">staging (до 50 серверов):
</span></span><span class="line"><span class="cl">  Нужно: ≥ 52 адреса
</span></span><span class="line"><span class="cl">  /26 = 64 адреса (62 хоста) ✓
</span></span><span class="line"><span class="cl">  Сеть: 10.100.1.0/26
</span></span><span class="line"><span class="cl">  Хосты: 10.100.1.1 – 10.100.1.62
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">dev (до 30 серверов):
</span></span><span class="line"><span class="cl">  Нужно: ≥ 32 адреса
</span></span><span class="line"><span class="cl">  /26 = 64 адреса (62 хоста) ✓
</span></span><span class="line"><span class="cl">  Сеть: 10.100.1.64/26
</span></span><span class="line"><span class="cl">  Хосты: 10.100.1.65 – 10.100.1.126
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Проверка: подсети не пересекаются ✓
</span></span><span class="line"><span class="cl">Осталось свободно: 10.100.2.0 – 10.100.255.255 (для будущих окружений)
</span></span></code></pre></div></details>
<hr>
<h2 id="дальше--уровень-2">Дальше → Уровень 2</h2>
<p>Ты умеешь считать подсети, понимаешь разницу между приватными и публичными адресами, знаешь что такое NAT. Но в реальной работе ты пишешь <code>curl http://api.example.com</code>, а не <code>curl http://93.184.216.34</code>. Как имя <code>api.example.com</code> превращается в IP-адрес?</p>
<p>DNS – Domain Name System – одна из самых частых причин сетевых проблем в DevOps: &ldquo;не резолвится&rdquo;, &ldquo;резолвится не туда&rdquo;, &ldquo;кеш DNS устарел&rdquo;, &ldquo;CoreDNS в K8s перегружен&rdquo;. Понимание DNS – обязательный навык.</p>
<p><strong>→ Уровень 2: DNS – как имена становятся адресами</strong></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
