Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Продвижение сайта
Раскрутка сайта
Создание сайта
Оптимизация сайта
Интернет реклама
Аудит сайта
Администрирование сервера
настройка сервера
установка сервера
аренда сервера
Администрирование сервера
администрирование сервера
настройка сервера
аренда сервера
Rambler's Top100


Настройка сетевых интерфейсов и маршрутизация с помощью пакета iproute 2.

Автор : Вадим Фёдоров

Большинство дистрибутивов Linux, впрочем как и UNIX, для настройки сети и маршрутизации используют команды ifconfig, arp и route. Однако в Linux, начиная с ядра 2.2, была полностью переделана сетевая система и были добавлены новые возможности, которые ранее требовали дополнительных утилит, такие как маршрутизация на основе правил, управление трафиком и т.д. К этим возможностям предоставляет доступ пакет программ iproute2, который в настоящее время входит в большинство современных дистрибутивов.

Утилита ip объединяет в себе возможности команд ifconfig, arp и route, рассмотрим синтаксис команды:

ip [Опции] Объект [ Команда [Аргументы команды] ]

где Опции - опциональные параметры, который влияют на общую работу утилиты или вывод результатов.

В настоящее время доступны следующие опции:

  • -V, -Version - выводит в стандартный вывод (stdout) версию программы ip
  • -s, -stats, -statistic - выводит статистическую информацию.
  • -f, - family - указывается перед идентификатором протокола, таким как inet (IPv4), inet6(IPv6) или link (Устройстов). Служит для выбора указания протокола, если протокол не указан, то по умолчанию протокол выбирается из параметров команд.
  • -4 - аналог параметра -family inet
  • -6 - аналог параметра -family inet6
  • -0 - аналог параметра -family link
  • -o, -oneline - каждая запись будет выводиться на новой строке.
  • -r - выводить на экран символические имена хостов.

Объект - это объект, с которым будут работать или получать о котором информацию. Объекты бывают следующими:

  • link - сетевое устройство
  • address - IPv4 или IPv6 адрес на устройстве.
  • neighbour - ARP адреса
  • route - машрутизация
  • rule - база данных правил машрутизации
  • madress - Multicast-адреса представляют собой особый подвид широковещательных адресов, позволяющих обращаться к группе машин, которые не обязательно должны быть в той же самой подсети. Они весьма полезны при сетевых голосовых переговорах и видеоконференциях. Поддерживаются многими, но не всеми картами Ethernet.
  • mroute - Multicast-пакетов.
  • tunnel - туннель через IP.

Команда описывает действие над Объектом.



ip link - конфигурация сетевого устройства.

Доступные команды: set и show (или list).

ip link set - изменение параметров сетевого устройства.

Аргументы:

  • dev - Имя интерфейса, с которым будем проводить какие-то манипуляции.
  • up (включить) или down (выключить) - включить или выключить сетевой интерфейс.
  • arp on или arp off - изменяет значение флага NOARP на устройстве.
  • multicast on или multicast off - изменяет флаг MULTICAST на устройстве.
  • dynamic on или dynamic off - изменяет флаг DYNAMIC на устройстве.
  • name - Изменяет имя устройства
  • txqueuelen Число или txqlen Число - изменяет длину передаваемой очереди.
  • mtu Число - изменяет значение MTU на устройстве.
  • address Адрес - изменяет адрес на устройстве.
  • broadcast Адрес или brd Адрес - изменяет широковещательный адрес на устройстве.

ip link show (list, ls, sh, lst, l) - показывает информацию об сетевом интерфейсе. Аргументы:

  • dev - Имя интерфейса с которым будем проводить какие-то манипуляции.
  • up - показать только включенные интерфейсы.

Примеры:

Выведем информацию о состоянии интерфейса eth0

# ip link ls dev eth0

В результате получим:

eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:04:61:92:21:1d brd ff:ff:ff:ff:ff:ff

Выведем статистику интерфейса eth0

#ip -s link ls dev eth0

2: eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:04:61:92:21:1d brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
2891892504 15070935 0 0 0 0
TX: bytes packets errors dropped carrier collsns
3139067270 54387014 0 0 0 132934



ip address - управление адресами на интерфейсе.

Команда address имеет ряд псевдонимов: addr, a. Объект address - это адрес IPv4 или IPv6 протокола, связанный с каким-то устройством, чтобы оно могло работать с данными протоколами. Так же каждое устройство может иметь несколько IP адресов. Команда ip address показывает адреса, их свойства, а так же добавляет новые или удаляет старые.

ip address add - добавляет новый адрес.

Аргументы:

  • dev Имя - имя устройства.
  • local Адрес - адрес интерфейса.
  • peer Адрес - адрес удаленной машины при использовании протокола PPP.
  • broadcast Адрес - широковещательный адрес на интерфейсе. Вы можете использовать специальные символы "+" и "-", в этом случае широковещательный адрес получается путем установки/сброса бит в адрес хоста.
  • label Метка - каждый адрес может быть подписан строкой, однако следует помнить, что имя должно начинаться с имени устройства, затем после двоеточия идет сама метка.

Пример:

ip addr add 10.0.0.1/24 brd + dev eth0 label eth0:Alias

Данная команда добавляет адрес 10.0.0.1/24 с маской подсети 255.255.255.0 со стандартным широковещательным адресом и именем eth0:Alias.

ip address delete - удаляет адреса. Сокращения: delete, del, d.

Пример:

ip addr del 127.0.0.1/8 dev lo

Удаляет адрес 127.0.0.1/8 с устройства lo.

ip address show - выводит информацию об адресе. Сокращения: show, list, lst, sh, ls, l. Аргументы:

  • dev Имя - имя устройства.
  • to Префикс - вывести информация о адресах с заданным префиксом.
  • label Имя - вывести информацию об адресах с заданным именем.

Пример работы команды:

kuznet@alisa:~ $ ip addr ls eth0
3: eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff
inet 193.233.7.90/24 brd 193.233.7.255 scope global eth0
inet6 3ffe:2400:0:1:2a0:ccff:fe66:1878/64 scope global dynamic
valid_lft forever preferred_lft 604746sec
inet6 fe80::2a0:ccff:fe66:1878/10 scope link
kuznet@alisa:~ $


ip route - управление таблицей машрутизации.

Сокращения: route, ro, r.

ip route add - добавить новый маршрут
ip route change - изменить маршрут
ip route replace - заменить маршрут

Сокращения: add, a; change, chg; replace, repl.

Аргументы:

  • to - назначение маршрута.
  • metric Число - задание метрики маршрута.
  • table Идентификатор таблицы - таблица связанная с маршрутом. Идентификатором таблицы может быть номер или строка из файла /etc/iproute2/rt_tables
  • dev Имя - имя устройства.
  • via Адрес - адрес перехода к следующему маршрутизатору
  • src Адрес - адрес источника
  • nexthop NEXTHOP - следующий переход в случае, если используется многоканальная маршрутизация.
  • via Адрес
  • dev Имя - имя устройства.
  • weight Число - вес маршрута, определяющийся шириной канала или качеством .

Примеры:

Добавляем маршрут к сети 10.0.0/24 через 193.233.7.65

ip route add 10.0.0/24 via 193.233.7.65

Добавим шлюз по умолчанию в случае использования двух каналов в зависимости от загрузки канала:

ip route add default scope global nexthop dev ppp0
nexthop dev ppp1

ip route delete - удалить маршрут.

Сокращения: delete, del, d.

Аргументы: Аргументы данной команды сходны с ip route add.

Пример:

Удаляем маршрут, созданный в предыдущем разделе.

ip route del default scope global nexthop dev ppp0
nexthop dev ppp1


ip rule - управление правилами машрутизации

Сокращения: rule, ru

Маршрутизация может производиться не только в зависимости от адреса получателя, но и по адресу источника, IP протокола и транспортного протокола. По умолчанию существуют 3 правила:

  • Таблица Local (ID 255) - специальная таблица маршрутизации с самым большим приоритетом, которая содержит таблицы для локальных и широковещательных адресов.
  • Таблица Main (ID 254) - обычная таблица маршрутизации.
  • Таблица Default (ID 253) - пустая по умолчанию таблица.

ip rule add - добавить новое правило.
Ip rule delete - удалить правило.

Сокращения: add, a; delete, del, d

Аргументы:

  • from - адрес источник
  • to - адрес получателя
  • iif Имя - имя интерфейса с которого будет получен пакет
  • fwmark Метка - метка пакета, устанавливаемая firewall.
  • table Идентификатор таблицы - таблица связанная с маршрутом. Идентификатором таблицы может быть номер или строка из файла /etc/iproute2/rt_tables
  • priority Число- приоритет таблицы.

Примеры:

Маршрутизировать пакеты с сети 192.203.80.0/24 согласно таблицы example.

ip ru add from 192.203.80.0/24 table example prio 220


Рассмотрим примеры использования маршрутизации на основе правил.

1. Пусть у нас есть два канала в интернет: быстрый модем с IP адресом 212.64.94.251, связанный PPP c 212.64.94.1, и медленный c 212.64.78.148, связанный PPP c 195.96.98.253. Надо пакеты одного пользователя отправлять через медленный модем. Для этого сформируем новое правило:

# echo 200 User >> /etc/iproute2/rt_tables
# ip rule add from 10.0.0.10 table John
# ip rule ls
0: from all lookup local
32765: from 10.0.0.10 lookup John
32766: from all lookup main
32767: from all lookup default

Далее назначаем для этого пользователя шлюз по умолчанию и очищаем кэш таблицы маршрутизации для того чтобы наши изменения вступили в действие.

# ip route add default via 195.96.98.253 dev ppp2 table John
# ip route flush cache

2. Необходимо направить весь трафик на 80 порт через сетевую карту eth0. Пометим пакеты, идущие на 80 порт.

# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 80
-j MARK --set-mark 2

Создадим правила для помеченных пакетов.

# echo 202 www.out >> /etc/iproute2/rt_tables
# ip rule add fwmark 2 table www.out
# ip route add default via 10.0.0.2 dev eth0 table www.out
# ip route flush cache


Обсудить данную тему на нашем форуме "Все о Linux"