# Default gateway - выход из своей сети _Сеть: L2 / L3 · LinuxLab Knowledge Base_ **TL;DR:** IP-адрес роутера в твоей подсети, куда стек шлёт пакеты для всех адресов, которые **не лежат локально**. Один gateway на хост - но в multi-homed сетапах их может быть несколько. ## Зачем вообще нужен Когда у тебя пакет на `8.8.8.8`, ты делаешь два вопроса: 1. **Это в моей подсети?** Сравниваем IP+маска с локальной сетью. Если да - шлём напрямую через [arp](/kb/arp.md) и Ethernet-фрейм 2. **Если нет** - куда вообще слать? Тут вступает **default gateway**: специальный маршрут «всё что я не знаю - отдай этому роутеру» В Linux это выглядит так: ``` $ ip route default via 192.168.1.1 dev eth0 # ← вот он, default gateway 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50 ``` Первая строка = «всё неизвестное → шлём в `192.168.1.1`». Вторая = «своя подсеть → напрямую через eth0». ## Откуда берётся Три типичных пути: - **DHCP** даёт его в опции 3 (router). Дома - это твой Wi-Fi-роутер - **Прописан вручную** (`/etc/network/interfaces`, NetworkManager, cloud-init) - **Получен через RA** (router advertisement) в IPv6 ## Как используется Когда пакет на `8.8.8.8` уходит: 1. Стек смотрит [routing-table](/kb/routing-table.md). Match для `8.8.8.8` = `default` 2. Default route говорит: next hop = `192.168.1.1` 3. Стек смотрит - `192.168.1.1` это в моей подсети, шлю L2-фреймом 4. ARP по `192.168.1.1` → получаем MAC роутера 5. Кладём фрейм с **dst MAC = MAC роутера**, **dst IP = 8.8.8.8** 6. Роутер ловит фрейм, видит что dst IP не его, идёт по своей таблице Важный момент: **в L2-заголовке destination - это MAC шлюза**, не конечного сервера. На L3 destination остаётся `8.8.8.8`. На каждом хопе L2-заголовок переписывается, L3 - нет. ## Несколько gateway'ев - **Multiple default routes** с разными метриками - для failover между провайдерами или Wi-Fi/Ethernet - **Policy routing** (`ip rule`) - разные gateway'и для разных source IP или меток netfilter - **VPN'ы** часто меняют default gateway на туннель - поэтому весь трафик идёт через VPN ## Когда ломается - **Нет default route** - пингуешь `8.8.8.8`, получаешь `network is unreachable`. Лечится `ip route add default via X` - **Gateway недоступен** - пакеты уходят, но ARP не находит MAC. Видно в `ip neigh` как `FAILED` - **Wrong gateway** (не в твоей подсети) - стек его сразу отвергает, «next hop is not directly reachable» ## Команды ```bash ip route show default ``` Показать default gateway ```bash ip route add default via 192.168.1.1 dev eth0 ``` Прописать руками (если DHCP не дал или для ручной настройки) ```bash ip route del default ``` Удалить default route - все пакеты в чужие сети начнут падать ```bash ip route get 8.8.8.8 ``` Какой маршрут будет использован для конкретного destination ## См. также - [Routing table](/kb/routing-table.md) - [Subnetting и CIDR](/kb/subnetting-cidr.md) - [Policy routing - rule-based маршрутизация](/kb/policy-routing.md) - [DHCP - Dynamic Host Configuration Protocol](/kb/dhcp-protocol.md) - [IP forwarding - превратить хост в роутер](/kb/ip-forwarding.md)