![]() |
Модераторы: powerfox, ZeeLax |
![]() ![]() ![]() |
|
simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 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. |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
- Тбилиси лучше, чем Ереван! - Чем лучше? - Чем Ереван! Собственно тоже очень похожие высказывания. Если гворить о простейшем роутинге, то утилит в любой POSIX-совместимой системе хватает уже последние несколько десятков лет. Если же человек собрался ставить магистральный маршрутизатор с поддержкой QoS, приоритетом маршрутов и т.п., то для таких вещей существуют серьезные решения для больших дядек (BGP/Zebra, железо от CISCO) а никак не утилита iproute2 |
|||
|
||||
Марат Фаттахов |
|
||||
Unregistered |
В условиях провайдеров, для которых циска дороговата, тратить 2.5 штуки евро на собственную сеть и BGP дорого, но сеть достаточно большая и развлетвлённая, iproute2 подходит идеально. К примеру сделай на ifconfig и route балансировку каналов между двумя провайдерами. Только если писать скрипт какой-нибудь заумный. |
||||
|
|||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Скрипт не заумный, вопрос в производительности. А чем зебра не устраивает? Вообще же, по поводу,
согласитесь, это вопрос не технический а коммерческий. Есть провайдеры, которые хотели бы строить большие сети, но не желают/не могут/не имеют возможности тратиться на простейшее активное сетевое оборудование. Мы же не будем их тоже равнять с хорошими сетями? Это сообщение отредактировал(а) DENNN - 17.12.2004, 12:52 |
||||
|
|||||
Марат Фаттахов |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.12.2004 Репутация: нет Всего: 1 |
Зебра устраивает, внутри можно и по OSPF работать, однако в iproute2 лично мне удобнее ;) А критерий цена/качество во многом зависит от руководства провайдера, они же хотят гигабитные сети по всему городу, а потратить на это только 100 штук зелени. И то говорят много ;) Вот и приходиться строить сеть не на цисках, как надо, а на линукс серверах, вот тут уже и выручает iproute2. |
||||||
|
|||||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Хотя истина была в начале ответа
![]() |
||||
|
|||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: нет Всего: 39 |
А чего может не хватать в ifconfig и route ?
Сколько пользуюсь - всегда хватало. А циски разные бывают и не обязательно 100 000$ |
|||
|
||||
Марат Фаттахов |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.12.2004 Репутация: нет Всего: 1 |
ну если провайдер не может купить свитч с поддежкой виланов за $400, тогда о цисках приходится только мечтать ;)
а в серверах, где нет навороченной маршрутизции (например для веб-серверов) действительно хватает ifconfig+route. А вот когда уже чувствуешь, что не хватает, тогда уже и юзаешь iproute2. Добавлено @ 10:13 Ладно, тут идёт обсуждение надо это или не надо. Кому надо -- тот так и так будет использовать. Тут другой вопрос более востребован, всё ли правильно я там описал?.. Нет ли ошибок? И чего важного я забыл? |
|||
|
||||
KIM |
|
|||
Unregistered |
не знаю как нащёт забыл не зыбыл но для меня эта инфа просто как громом по лбу ... супер ![]() огромный тнкс ![]() ![]() |
|||
|
||||
Гость_Марат Фаттахов |
|
|||
Unregistered |
блин прикол ;)
прошел почти год с момента написания статьи, перечитав её только что заново, я много узнал и вспомнил ;), например про ограничение на кол-во символов в алиасах ;) |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 34 Всего: 317 |
Марат, а ты чего так редко сюда заглядываешь ?
ты такую статью хорошую написал... я ее уже в FAQ мечу.... ( правда FAQ еще не фурычит ) или уже "все что можно узнать - узнал" и вопросов нет? давай, подбрасывай вопросики хотя бы иногда.. а то тут люди чего-то интересные вопросы редко спрашивают. удачи. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Linux/UNIX: Администрирование" | |
|
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Администрирование *NIX систем | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |