Маршрутизация Linux определяет, через какой сетевой интерфейс и шлюз отправлять пакеты. Современный инструмент — команда ip из пакета iproute2.
Основные команды ip
# Показать все IP-адреса
ip addr show
ip a # краткая форма
# Показать таблицу маршрутизации
ip route show
ip r # краткая форма
# Показать маршрут до конкретного хоста
ip route get 8.8.8.8
# ARP-таблица (соответствие IP → MAC)
ip neigh show
Временные изменения (до перезагрузки)
# Добавить IP-адрес на интерфейс
sudo ip addr add 192.168.1.100/24 dev eth0
# Удалить IP-адрес
sudo ip addr del 192.168.1.100/24 dev eth0
# Добавить маршрут через конкретный шлюз
sudo ip route add 10.0.0.0/8 via 192.168.1.1
# Добавить дефолтный шлюз
sudo ip route add default via 192.168.1.1
# Удалить маршрут
sudo ip route del 10.0.0.0/8
# Включить/выключить интерфейс
sudo ip link set eth0 up
sudo ip link set eth0 down
Постоянные маршруты через Netplan (Ubuntu 22.04+)
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
- to: 10.0.0.0/8
via: 10.0.0.1
metric: 100
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply
Два интерфейса с разными шлюзами
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0: # Основной (интернет)
dhcp4: false
addresses: [1.2.3.4/24]
routes:
- to: default
via: 1.2.3.1
eth1: # Приватная сеть
dhcp4: false
addresses: [10.0.0.10/24]
routes:
- to: 10.0.0.0/8
via: 10.0.0.1
💡 ip vs ifconfig: Команда
ifconfig устарела и не установлена по умолчанию в Ubuntu 20.04+. Используйте ip addr и ip route — они поддерживают IPv6 и современные возможности ядра.