Налаштування мережних інтерфейсів та маршрутизація за допомогою пакету 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 – виводити на екран символічні імена хостів.
Об'єкт - це об'єкт, з яким працюватимуть або отримуватимуть інформацію. Об'єкти бувають такими:
Команда описує дію над Об'єктом.
ip link- конфігурація мережного пристрою.
Доступні команди: set таshow (або List).
ip link set- Зміна параметрів мережного пристрою.
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 2891892504 15070935 0 0 0 0 TX: packets errors dropped carrier collsns 3139067270 54387014 0 0 0 132934
ip addr add 10.0.0.1/24 brd + dev eth0 label eth0:Alias
ip addr del 127.0.0.1/8 dev lo
Приклад роботи команди:
$ 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: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 for6 0: :2a0:ccff:fe66:1878/10 scope link [email protected]:
ip route- управління таблицею машрутизації.
Скорочення: route, ro, r.
ip route add - додати новий маршрут ip route change - змінити маршрут ip route replace - замінити маршрут
Скорочення: add, a; change, chg; replace, repl.
Додаємо маршрут до мережі 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 nexthop dev ppp0 nexthop dev ppp1
ip route delete- видалити маршрут.
Скорочення: delete, del, d.
Аргументи: Аргументи цієї команди подібні до ip route add.
Видаляємо маршрут, створений у попередньому розділі.
ip route del default scope nexthop dev ppp0 nexthop dev ppp1
ip rule- управління правилами машрутизації
Скорочення: rule, ru
ip rule add – додати нове правило. Ip rule delete – видалити правило.
Скорочення: add, a; delete, del, d
Маршрутизувати пакети з мережі 192.203.80.0/24 згідно з таблицею example.
ip ru add from 192.203.80.0/24 table example prio 220
Розглянемо приклади використання маршрутизації з урахуванням правил.
# echo 200 User >> /etc/iproute2/rt_tables # ip rule add from 10.0.0.10 table John # ip rule ls 0: від all lookup local 32765: від 10.0.0.10 lookup John 32766 : з усіх домашніх 32767: з усіх можливих
Далі призначаємо для цього користувача шлюз за замовчуванням та очищаємо кеш таблиці маршрутизації для того, щоб наші зміни набули чинності.
# 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 addfwmark 2 table www.out # ip route add default via 10.0.0.2 dev eth0 table www.out # ip route flush cache
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ:
1. IP Command Reference - Alexey N. Kuznetsov 2. Linux Advanced Routing & Traffic Control HOWTO