# ip - швейцарский нож сетевой настройки _Команды · LinuxLab Knowledge Base_ **TL;DR:** `ip` - фронт-энд iproute2, заменяет старые ifconfig/route/arp. Подкоманды: `ip addr` (адреса), `ip link` (интерфейсы), `ip route` (маршруты), `ip neigh` (ARP). ## Базовый синтаксис ``` ip [-OPTIONS] OBJECT [COMMAND [ARGUMENTS]] ``` Главные OBJECT'ы (объекты): | object | про что | |---|---| | `addr` | IP-адреса на интерфейсах | | `link` | сетевые интерфейсы (up/down, MAC, MTU, type) | | `route` | таблица маршрутизации | | `neigh` | соседи (ARP/NDP) | | `rule` | policy-routing rules | | `netns` | network namespaces (см. [namespaces](/kb/namespaces.md)) | | `tunnel` | tunnel-интерфейсы (gre, ipip, sit) | | `xfrm` | IPsec | | `monitor` | live-стрим netlink-событий | ## Полезные опции - `-br` - brief формат (одна строка на запись) - `-4` / `-6` - только IPv4 / IPv6 - `-c` - colorize - `-j` - JSON вывод (отлично для скриптов) - `-s` - статистика (счётчики) ## Примеры по объектам ### addr ```bash ip -4 -br addr # компактный список IPv4 ip addr show eth0 # один интерфейс детально sudo ip addr add 10.0.0.5/24 dev eth0 sudo ip addr del 10.0.0.5/24 dev eth0 ``` ### link ```bash ip -br link # все интерфейсы кратко sudo ip link set eth0 down / up sudo ip link set eth0 mtu 9000 sudo ip link set eth0 address aa:bb:cc:00:11:22 sudo ip link add veth0 type veth peer name veth1 # см. [veth-pair](/kb/veth-pair.md) ``` ### route ```bash ip route # все маршруты ip route get 8.8.8.8 # какой выберется для адреса sudo ip route add 10.5.0.0/16 via 10.0.0.1 sudo ip route add default via 192.168.1.1 sudo ip route del 10.5.0.0/16 ``` ### neigh ```bash ip neigh # ARP-таблица (см. [arp](/kb/arp.md)) sudo ip neigh flush all sudo ip neigh add 10.0.0.5 lladdr aa:bb:cc:dd:ee:ff dev eth0 ``` ### netns ```bash sudo ip netns add red ip netns list sudo ip netns exec red bash # выполнить команду внутри netns sudo ip link set veth1 netns red ``` ## ip monitor - live-события Очень полезный режим для дебага сетевых событий: ```bash ip monitor # стрим всех netlink-событий: link/addr/route/neigh ip monitor route # только изменения маршрутов ``` Когда что-то «само» меняется - посмотри что monitor покажет. ## JSON для автоматизации ```bash ip -j addr show eth0 | jq '.[0].addr_info[] | select(.family=="inet") | .local' # → "10.0.0.5" ``` Это **правильный** способ парсинга `ip` в скриптах - не grep по тексту. ## Команды ```bash ip -br -c addr ``` Brief + colorized - основная команда «что у меня в сети» ```bash ip -j route show | jq ``` JSON-вывод маршрутов; идеально для скриптов мониторинга ```bash ip route get 8.8.8.8 ``` Какой маршрут СЕЙЧАС выберется для адреса (с auto-source) ```bash ip monitor link ``` Стримить события UP/DOWN на интерфейсах в реальном времени ```bash ip -s link show eth0 ``` Счётчики rx/tx packets и bytes на интерфейсе ## См. также - [IPv4-адресация и CIDR](/kb/ipv4-addressing.md) - [Routing table](/kb/routing-table.md) - [Policy routing - rule-based маршрутизация](/kb/policy-routing.md) - [GRE-туннели и IPIP - point-to-point поверх IP](/kb/gre-tunnel.md) - [Linux namespaces](/kb/namespaces.md)