Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переходим с ifconfig и route на iproute2, Статья от Марата Фаттахова 
:(
    Опции темы
simanyay
Дата 13.12.2004, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: нет
Всего: 36



Данная статья написана Маратом Фаттаховым и впервые опубликована на форуме UzNet'a. Я публикую её здесь с разрешения автора.

Многие привыкли работать с помощью ifconfig и route. Однако новые дистрибутивы всё чаще используют iproute2 в своих стандартных скриптах, к тому же возможностей старых утилит уже недостаточно чтобы строить сеть на Linux-маршрутизаторах.

Известно, что ifconfig служит для настройки ip-адресов на сетевом интерфейсе, а так же и для просмотра этих настроек. А команда route настраивает маршрутизацию.

Всё это можно заменить лишь одной утилитой ip. Буду показывать только примеры, надеясь, что читатель знает синтаксис ifconfig, route и имеет примерное представление о ip.

Пока рассмотрим только замену ifconfig, команду route оставим на следующий раз.

Поднимаем IP-адрес на сетевом интерфейсе: 192.168.0.1, маска 255.255.255.0, сеть: 192.168.0.0/24, где 192.168.0.0 -- начало сети, а 192.168.0.255 -- конец сети, или бродкаст. Название сетевого интерфейса, к примеру -- eth0

ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
можно с лёгкостью заменить на:
ip l s eth0 up -- поднимаем интерфейс eth0 (идентична ifconfig eth0 up)
ip a a 192.168.0.1/24 brd + dev eth0 (добавляем IP-адрес на интерфейс 192.168.0.1, с маской /24 == 255.255.255.0, бродкаст (brd) вычисляем автоматически (+), и устройство -- eth0).

ifconfig eth0 down -- опускаем интерфейс (однако все айпишники остануться)
заменяем на:
ip a f dev eth0 -- удаляем все IP-адреса на интерфейсе (если просто опустить интерфейс с помощью ifconfig, то IP-адреса сохраняться, тоесть если сразу после ifconfig eth0 down, запустить ifconfig eth0 up -- то IP-адреса будут прежние. Это хорошо, но не всегда, т.к. может привести к путанице, именно поэтому в iproute2 желательно удалять все айпишники).
ip l s eth0 down -- опускаем уже сам интерфейс.

Немного сложноватый синтаксис, плюс ещё сокращения до одной буквы путают, но если хорошо знать синтаксис -- всё просто супер.

Теперь пробуем другую IP-сеть и другую маску:

ifconfig eth0 217.29.124.1 netmask 255.255.255.248 broadcast 217.29.124.7
будет выглядеть:
ip l s eth0 up -- поднимаем сам интерфейс
ip a f dev eth0 -- удаляем на нём все айпишники, на всякий пожарный
ip a a 217.29.124.1/29 brd + dev eth0 -- поднимаем сам айпишник. Тут сеть 255.255.255.248 принимает вид /29.

С сетями /30 или 255.255.255.252 всё выглядит аналогично
ifconfig eth0 217.29.127.161 netmask 255.255.255.252 broadcast 217.29.127.163
ip a a 217.29.127.161/30 brd + dev eth0

Итак -- если всё понятно, то идём дальше.

Как будет выглядить в iproute2 команда, типа:
ifconfig eth0:test 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255
? А очень просто:
ip a a 10.10.10.1/24 brd + dev eth0 label eth0:test

Заметили, что название интерфейса повторяется дважды?.. Где указывается устройство и сам алиас (label). К тому же есть ограничение на название алиаса (в данном случае test), т.е. того слова, что идёт после двоеточия - в 11 символов.
Разумеется там не должно быть никаких символов, кроме /А-Яа-яЕё_A-Za-z0-9/. Тоесть никаких пробелов и т.п. Однако поддерживаются русские буквы и символ подчёркивания wink.gif :
ip a a 10.50.50.1/24 brd + dev eth0 label eth0:русскиё_бук
Проверить, получилось ли ввести такую команду, можно так:
root@bgp:~# ip a l dev eth0 label eth0:русскиё_бук
inet 10.50.50.1/24 brd 10.50.50.255 scope global eth0:русскиё_бук

Очень прикольно в этом случае показывает данные ifconfig:
eth0:русс Link encap:Ethernet HWaddr 00:40:95:1A:7A:A9
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0x260

Однако уже удалить он не сможет:
root@bgp:~# ifconfig eth0:русс down
SIOCSIFFLAGS: Cannot assign requested address
root@bgp:~# ifconfig eth0:русскиё_бук down
SIOCSIFFLAGS: Cannot assign requested address

Тоже и с латиницей. Проблема в том, что ifconfig сам имеет ограничение в 10 символов:
root@bgp:~# ip a a 10.40.40.1/24 brd + dev eth0 label eth0:русские_бк
root@bgp:~# ip a a 10.41.41.1/24 brd + dev eth0 label eth0:английские
root@bgp:~# ifconfig eth0:английские;ifconfig eth0:русские_бк
eth0:англ Link encap:Ethernet HWaddr 00:40:95:1A:7A:A9
inet addr:10.41.41.1 Bcast:10.41.41.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0x260

eth0:русс Link encap:Ethernet HWaddr 00:40:95:1A:7A:A9
inet addr:10.40.40.1 Bcast:10.40.40.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0x260
root@bgp:~# ifconfig eth0:английские down;ifconfig eth0:русские_бк down



Как видите, можно и поизвращаться, если, конечно же, у Вас локаль настроена нормально wink.gif.

Теперь остаётся последняя возможность ifconfig'а, которую многие не помнят, как реализовать в iproute2 -- это pointopoint:

root@bgp:~# ifconfig eth0:ptp 172.16.19.1 pointopoint 192.168.0.1 netmask 255.255.255.255
root@bgp:~# ifconfig eth0:ptp
eth0:ptp Link encap:Ethernet HWaddr 00:40:95:1A:7A:A9
inet addr:172.16.19.1 Bcast:172.16.255.255 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0x260

root@bgp:~# route -n|grep 192.168.0.1
192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
root@bgp:~# ip r|grep 192.168.0.1
192.168.0.1 dev eth0 proto kernel scope link src 172.16.19.1

Линк на 192.168.0.1 от 172.16.19.1 поднялся. Теперь рассмотрим это в iproute2:

root@bgp:~# ip a a 172.16.19.1/32 peer 192.168.0.1/32 brd + dev eth0 label eth0:ptp

Проверяем с помощью тех же команд -- результат идентичный.

Теперь перейдём к проверке конфигурации. В случае с ifconfig достаточно лишь набрать его без параметров:
root@bgp:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:40:95:1A:7A:A9
inet addr:192.168.0.1 Bcast:192.168.0.3 Mask:255.255.255.252
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:24 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 cool.gif TX bytes:2880 (2.8 Kb)
Interrupt:5 Base address:0x260

eth0:ptp Link encap:Ethernet HWaddr 00:40:95:1A:7A:A9
inet addr:172.16.19.1 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0x260

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:42 errors:0 dropped:0 overruns:0 frame:0
TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3523 (3.4 Kb) TX bytes:3523 (3.4 Kb)

В случае с ip, тоже достаточно набрать его практически без параметров:

root@bgp:~# ip a
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:40:95:1a:7a:a9 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/30 brd 192.168.0.3 scope global eth0
inet 172.16.19.1 peer 192.168.0.1/32 scope global eth0:ptp

Соответствие видно? 127.0.0.1/8 == 127.0.0.1 mask 255.0.0.0, 192.168.0.1/30 brd 192.168.0.3 == 192.168.0.1 mask 255.255.255.252 bcast 192.168.0.255 и т.д.

Итак, практически все возможности команды ifconfig мы заменили с помощью одной лишь единственной команды ip, которая кроме поднятия интерфейсов, ещё управляет и маршрутами и тунелями. Достоинства -- достаточно изучить лишь синтаксис одной этой утилиты и получаем огромные возможности. Недостатки -- сложный, для начинающего, синтаксис.

P.S. Сокращения iproute2:

ip a -- ip addr -- работа с IP-адресами на интерфейсах
ip r -- ip route -- работа с маршрутами
ip ru -- ip rule -- работа с правилами (таблицами) маршрутов

ip l s eth0 up -- ip link set eth0 up -- поднимаем сетевой интерфейс eth0
ip a a -- ip addr add -- добавляем IP-адрес
ip a d -- ip addr del -- удаляем IP-адрес
ip a f -- ip addr flush -- очищаем все IP-адреса
ip r a -- ip route add -- добавляем маршрут
ip r d -- ip route del -- удаляем маршрут


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
DENNN
Дата 16.12.2004, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата
к тому же возможностей старых утилит уже недостаточно чтобы строить сеть на Linux-маршрутизаторах

- Тбилиси лучше, чем Ереван!
- Чем лучше?
- Чем Ереван!

Собственно тоже очень похожие высказывания.
Если гворить о простейшем роутинге, то утилит в любой POSIX-совместимой системе хватает уже последние несколько десятков лет. Если же человек собрался ставить магистральный маршрутизатор с поддержкой QoS, приоритетом маршрутов и т.п., то для таких вещей существуют серьезные решения для больших дядек (BGP/Zebra, железо от CISCO) а никак не утилита iproute2
PM ICQ   Вверх
Марат Фаттахов
Дата 17.12.2004, 12:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(DENNN @ 16.12.2004, 13:30)
Цитата
к тому же возможностей старых утилит уже недостаточно чтобы строить сеть на Linux-маршрутизаторах

- Тбилиси лучше, чем Ереван!
- Чем лучше?
- Чем Ереван!

Собственно тоже очень похожие высказывания.
Если гворить о простейшем роутинге, то утилит в любой POSIX-совместимой системе хватает уже последние несколько десятков лет. Если же человек собрался ставить магистральный маршрутизатор с поддержкой QoS, приоритетом маршрутов и т.п., то для таких вещей существуют серьезные решения для больших дядек (BGP/Zebra, железо от CISCO) а никак не утилита iproute2

В условиях провайдеров, для которых циска дороговата, тратить 2.5 штуки евро на собственную сеть и BGP дорого, но сеть достаточно большая и развлетвлённая, iproute2 подходит идеально.

К примеру сделай на ifconfig и route балансировку каналов между двумя провайдерами. Только если писать скрипт какой-нибудь заумный.
  Вверх
DENNN
Дата 17.12.2004, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата
К примеру сделай на ifconfig и route балансировку каналов между двумя провайдерами. Только если писать скрипт какой-нибудь заумный.

Скрипт не заумный, вопрос в производительности.
А чем зебра не устраивает?

Вообще же, по поводу,
Цитата
В условиях провайдеров, для которых циска дороговата, тратить 2.5 штуки евро на собственную сеть и BGP дорого, но сеть достаточно большая и развлетвлённая

согласитесь, это вопрос не технический а коммерческий. Есть провайдеры, которые хотели бы строить большие сети, но не желают/не могут/не имеют возможности тратиться на простейшее активное сетевое оборудование. Мы же не будем их тоже равнять с хорошими сетями?

Это сообщение отредактировал(а) DENNN - 17.12.2004, 12:52
PM ICQ   Вверх
Марат Фаттахов
Дата 17.12.2004, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.12.2004

Репутация: нет
Всего: 1



Цитата(DENNN @ 17.12.2004, 12:49)
Цитата
К примеру сделай на ifconfig и route балансировку каналов между двумя провайдерами. Только если писать скрипт какой-нибудь заумный.

Скрипт не заумный, вопрос в производительности.
А чем зебра не устраивает?

Вообще же, по поводу,
Цитата
В условиях провайдеров, для которых циска дороговата, тратить 2.5 штуки евро на собственную сеть и BGP дорого, но сеть достаточно большая и развлетвлённая

согласитесь, это вопрос не технический а коммерческий. Есть провайдеры, которые хотели бы строить большие сети, но не желают/не могут/не имеют возможности тратиться на простейшее активное сетевое оборудование. Мы же не будем их тоже равнять с хорошими сетями?

Зебра устраивает, внутри можно и по OSPF работать, однако в iproute2 лично мне удобнее ;)

А критерий цена/качество во многом зависит от руководства провайдера, они же хотят гигабитные сети по всему городу, а потратить на это только 100 штук зелени. И то говорят много ;)

Вот и приходиться строить сеть не на цисках, как надо, а на линукс серверах, вот тут уже и выручает iproute2.
PM MAIL   Вверх
DENNN
Дата 17.12.2004, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата
на линукс серверах, вот тут уже и выручает iproute2.

Хотя истина была в начале ответа
Цитата
Зебра устраивает, внутри можно и по OSPF работать, однако в iproute2 лично мне удобнее ;)

smile
PM ICQ   Вверх
Secandr
Дата 18.12.2004, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: нет
Всего: 39



А чего может не хватать в ifconfig и route ?

Сколько пользуюсь - всегда хватало.

А циски разные бывают и не обязательно 100 000$


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Марат Фаттахов
Дата 18.12.2004, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.12.2004

Репутация: нет
Всего: 1



ну если провайдер не может купить свитч с поддежкой виланов за $400, тогда о цисках приходится только мечтать ;)

а в серверах, где нет навороченной маршрутизции (например для веб-серверов) действительно хватает ifconfig+route. А вот когда уже чувствуешь, что не хватает, тогда уже и юзаешь iproute2.
Добавлено @ 10:13
Ладно, тут идёт обсуждение надо это или не надо. Кому надо -- тот так и так будет использовать. Тут другой вопрос более востребован, всё ли правильно я там описал?.. Нет ли ошибок? И чего важного я забыл?
PM MAIL   Вверх
KIM
Дата 8.9.2005, 15:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата

Ладно, тут идёт обсуждение надо это или не надо. Кому надо -- тот так и так будет использовать. Тут другой вопрос более востребован, всё ли правильно я там описал?.. Нет ли ошибок? И чего важного я забыл?

не знаю как нащёт забыл не зыбыл но для меня эта инфа просто как громом по лбу ...
супер smile
огромный тнкс smile smile
  Вверх
Гость_Марат Фаттахов
Дата 23.10.2005, 17:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











блин прикол ;)

прошел почти год с момента написания статьи, перечитав её только что заново, я много узнал и вспомнил ;), например про ограничение на кол-во символов в алиасах ;)
  Вверх
bilbobagginz
Дата 24.10.2005, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 34
Всего: 317



Марат, а ты чего так редко сюда заглядываешь ?
ты такую статью хорошую написал... я ее уже в FAQ мечу.... ( правда FAQ еще не фурычит )
или уже "все что можно узнать - узнал" и вопросов нет?
давай, подбрасывай вопросики хотя бы иногда..
а то тут люди чего-то интересные вопросы редко спрашивают.
удачи.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Администрирование"
ZeeLax
Imple
nerezus
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.

  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование *NIX систем | Следующая тема »


 




[ Время генерации скрипта: 0.0853 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.