среда, 12 марта 2008 г.

VLSM, CIDR и опять про маски сетей и адресацию.

Итак, мир давно отказался от классовой адресации. Сейчас классы сетей в основном используются только для назначения "умолчательной" классовой маски при настройке интерфейсов хостов. Вот, скажем, введете вы у себя в Windows в настройках tcp/ip адрес 10.0.0.1 - а он автоматически предложит маску 255.0.0.0. В остальном важность понятия класса сети уже утрачена.
Взамен пришли две технологии - VLSM, о которой я уже немножко писал и CIDR. Это две разные технологии, которые замечательно работают вместе и сетевым администраторам могут облегчать жизнь, если использовать их с умом (т.е. там где это реально нужно). Естественно, если у вас в конторе всего один офис из 7 компьютеров, вы можете вообще не изучать ничего из сетевых технологий - вам на этом месте это даже не пригодится. )

Итак, как я уже говорил - VLSM позволяет разделять сети на меньшие по размеру подсети, что позволяет экономить адреса (реальный денежный эквивалент этой экономии получается, если речь идет о покупке подсетей зарегистрированных публичных IP у провайдера)
Забавно, что вместо ручного подсчета есть онлайн и оффлайн-калькуляторы для разбиения адресного пространства. Например, http://www.vlsm-calc.net. ) Но для понимания механизма, полезно все-таки иногда посчитать вручную.
Так как про разбиение диапазонов адресов на подсети я уже писал, пришло время рассказать и об обратной процедуре.
Эта процедура как раз и является частью технологии CIDR и позволяет экономить:
1. На количестве забиваемых руками в таблицу маршрутизации записей.
2. На количестве передаваемых маршрутов в обновлениях протоколов динамической маршрутизации.
3. На числе записей, которые нужно обрабатывать маршрутизатору при поиске маршрутов для каждого пакета.
А называется это "суммирование маршрутов".

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

CIDR расшифровывается как "Бесклассовая междоменная маршрутизация" (Classless interdomain routing).
CIDR привносит новую и очень краткую форму записей масок - это запись маски в виде количества установленных в "1" бит маски.
Например - 10.0.0.0/8 - означает маску 255.0.0.0 - т.к. 8 бит маски установлены в "1". 192.2.0.0/30 - это 255.255.255.252 - т.к. 30 бит маски установлены в "1", и это просто можно посчитать, переведя маску в двоичный вид.
Для ленивых в Википедии есть табличка, которая поможет перевести такую маску в обычный десятичный вид и наоборот.
Итак, а что же есть суммирование маршрутов?



Ну, возьмем такой пример - допустим у нас есть маршрутизатор, у которого есть "аплинк" в виде другого маршрутизатора, с одной стороны, и две сети - например, 192.168.0.0/24 и 192.168.1.0/24 - с другой. Ну вот прямо как на рисунке. Если перевести оба этих числа в двоичный вид и отсчитать слева совпадающую часть и закрыть ее маской - мы получим суммарную маску для этих двух сетей. :
11000000.10101000.00000000.00000000
11000000.10101000.00000001.00000000
11111111.11111111.11111110.00000000

Наложив ее на любую нашу сеть, мы должны получить также суммарный номер сети.

И добавив один этот маршрут - 192.168.0.0/23 - на аплинк, мы вполне нормально обеспечим маршрутизацию пакетов в эти обе сети через наш роутер.

Экономия в числе записей может быть еще чувствительнее, если у нас за маршрутизатором не 2 сети, а много больше.

воскресенье, 9 марта 2008 г.

Перезагрузка Cisco )

Русаковский подсказал достаточно полезную вещь.
Итак, Cisco не сохраняет startup-config сразу. Поэтому если мы что-то настроили не так и не успели сохранить конфигурацию, нас выручит перезагрузка. Но чтобы не делать ее вручную, есть команда reload. Но я вот не знал, что у нее есть еще и параметры )
Итак - reload in [время] - позволяет перезагрузить роутер через указанное количество минут или указанное время. Есть еще reload at - в определенное время. Иными словами, сказав железке перезагрузиться через 5 минут и уже после этого конфигурируя ее, мы автоматически избавляем себя от проблем, связанных с неправильной настройкой.

А если все прошло удачно - нужно просто сказать "reload cancel".

суббота, 8 марта 2008 г.

Немножко про access-lists в цисках

Вот, открыл для себя то, что лежит за пределами CCNA - а именно поведение сиськовского пакетного фильтра.
Итак,
1. access-list это список правил
2. access-list работает как любой другой пакетный фильтр - правила применяются по очереди, и если уж подходят к пакету, больше не применяются.
3. В конце любого access-list неявно добавляется правило, которое запрещает все.

Поэтому если хочется прибить только входящий RIP на уровне пакетов, то нужно написать:
access-list 100 deny udp 192.168.4.0 0.0.0.255 any eq rip
access-list 100 permit ip any any

Отредактировать строку списка никак нельзя. Можно только удалить список полностью:
no access-list 100

И потом добавить его заново.
Правила добавляются в порядке ввода. )

access-list необходимо назначать на интерфейс или в других местах, где он поддерживается:
(config) int fa1/0
(config-if) ip access-group 100 in

Нужно быть очень осторожным, добавляя правила удаленно, особенно на интерфейс, чреез который подключаешься через vty - есть опасность набокопорить и потом бежать к циске с ноутбуком и консольным кабелем или тупо просить ее кого-то перезагрузить. )

пятница, 7 марта 2008 г.

Сиськочасы

Подарок нашему инструктору... В общем, он одарил нас самой большой аудиторией и в ней будут вот такие вот часы. )
Картинко под катом




четверг, 6 марта 2008 г.

Ааа! Моя корзина не очищается и я почему-то не могу удалить свои документы!

Все-таки есть одна неприятность, которая приходит с удалением winbindd-idmap.tld - слетают привязки id UNIX-юзеров к юзерам домена. В результате очень неприятно меняются права доступа юзерам к каталогам, посему... В общем, теперь я резервнокопирую этот файлик и вам рекомендую. Мало ли что. Вдруг пьяный техник перепутает шнур питания сервера с чем-то еще. )

среда, 5 марта 2008 г.

Аааа! Мы не можем открыть папку с документами!

Как-то неаккуратно вырубился файловый серевер с samba и winbind и у некоторых юзеров домена отвалился доступ к нему. )

[2008/03/05 13:23:24, 1] nsswitch/winbindd_user.c:winbindd_getpwent(729)
could not lookup domain user irina
[2008/03/05 13:23:24, 0] tdb/tdbutil.c:tdb_log(783)
tdb(/var/lib/samba/winbindd_idmap.tdb): rec_read bad magic 0x42424242 at offset=21508
[2008/03/05 13:23:24, 0] tdb/tdbutil.c:tdb_log(783)
tdb(/var/lib/samba/winbindd_idmap.tdb): rec_free_read bad magic 0x42424242 at offset=21760
[2008/03/05 13:23:24, 1] nsswitch/winbindd_user.c:winbindd_fill_pwent(85)
error getting user id for sid S-1-5-21-578002964-3223751266-3916644461-4113
[2008/03/05 13:23:24, 1] nsswitch/winbindd_user.c:winbindd_getpwent(729)
could not lookup domain user elena


Лечится, в общем-то, элементарно - rm /var/lib/samba/winbindd_idmap.tdb и /etc/init.d/winbind restart. )

суббота, 1 марта 2008 г.

О настройке RIPv1 в Windows 2003 Server

Я не знаю, как Microsoft позиционирует свою систему на маршрутизаторы и почему, потому что, имхо, это не лучший выбор по соотношению цены и возможностей. Но Windows Server поддерживает динамическую маршрутизацию и RIP в том числе. Как обычно, есть два варианта настройки - через rrasmgmt.msc и netsh

Рассмотрим первый вариант.

Пуск -> Выполнить -> rrasmgmt.msc

Получаем консоль управления маршрутизацией и удаленным доступом. Удалим оттуда маршруты, которые мы добавили ранее. Далее кликнем правой кнопкой своего грызуна на "General" и выберем пункт "New Routing Protocol".



В появившемся окне выбираем "RIPv2 for Internet Protocol".
У нас в дереве под "IP Routing" появится соответсвующая ветка, тыкая опять же на которую правой кнопкой, можно добавлять интерфейсы, которые будут участвовать в работе протокола. Добавим туда все интерфейсы, кроме Control - RIP на нем работать не должен.



При добавлении интерфейса необходимо сразу же настроить его. Это можно сделать и позже, но проще - прямо сейчас.



Итак, я задаю для интерфейса использование протокола RIPv1 для приема и отправки обновлений соседям, оставляю периодический режим для рассылки обновлений и не включаю аутентификацию. RIPv1 ее не поддерживает.
Раз уж мы в этом окне, опишу и остальные вкладки:



На вкладке "Security" можно настроить фильтры для обновлений - какие принимать и какие рассылать (или не принимать и не рассылать).



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



На вкладке "Advanced" включаются и отключаются дополнительные функции RIP - расщепление горизонта, poisoned reverse и триггерные обновления. Кроме того, можно поменять умолчательные значения таймеров и задать дополнительные условия для рассылки маршрутов на хосты или сети, а также маршрут по-умолчанию. Здесь лучше оставить все как есть. )



Ну и после активации RIP на интерфейсах и получения первых маршрутных обновлений от соседей, в таблице маршрутизации можно заметить новые маршруты, помеченные, как полученные от протокола RIP.

Как я уже и говорил, аналогичные действия можно выполнить с помощью netsh. Только этот интерфейс не назовешь особенно удобным.
Итак, если теперь снова удалить RIP из протоколов маршрутизации и пойти в netsh...
Для начала установим RIP:

C:\Documents and Settings\Administrator>netsh
netsh>routing ip rip
netsh routing ip rip>install
Ok.

Затем, то же самое что и в консоли - добавим интерфейсы с настройками:

netsh routing ip rip>add int "Stub3" announce=rip1 accept=rip1
Ok.

netsh routing ip rip>a int "n253" ann=rip1 acc=rip1
Ok.

netsh routing ip rip>a int "n254" ann=rip1 acc=rip1
Ok.

netsh routing ip rip>

Ну и напоследок - проверим таблицу маршрутизации на предмет появляющихся там маршрутов от соседей:

netsh>routing ip sh rtmr

Prefix Protocol Prf Met Gateway Vw Interface
------------------ ---------- --- --- --------------- -- ----------------
10.0.0.0/8 Local 1 10 10.0.0.7 UM Control
10.0.0.7/32 Local 1 10 127.0.0.1 U Loopback
10.255.255.255/32 Local 1 10 10.0.0.7 UM Control
127.0.0.0/8 Local 1 1 127.0.0.1 U Loopback
127.0.0.1/32 Local 1 1 127.0.0.1 U Loopback
192.168.3.0/24 Local 1 10 192.168.3.1 UM Stub3
192.168.3.1/32 Local 1 10 127.0.0.1 U Loopback
192.168.3.255/32 Local 1 10 192.168.3.1 UM Stub3
192.168.4.0/24 RIP 120 2 192.168.253.1 UM n253
192.168.250.0/24 RIP 120 2 192.168.253.1 UM n253
192.168.251.0/24 RIP 120 2 192.168.253.1 UM n253
192.168.252.0/24 RIP 120 2 192.168.253.1 UM n253
192.168.253.0/24 Local 1 10 192.168.253.2 UM n253
192.168.253.2/32 Local 1 10 127.0.0.1 U Loopback
192.168.253.255/32 Local 1 10 192.168.253.2 UM n253
192.168.254.0/24 Local 1 10 192.168.254.2 UM n254
192.168.254.2/32 Local 1 10 127.0.0.1 U Loopback
192.168.254.255/32 Local 1 10 192.168.254.2 UM n254
224.0.0.0/4 Local 1 10 10.0.0.7 UM Control
224.0.0.0/4 Local 1 10 192.168.3.1 UM Stub3
224.0.0.0/4 Local 1 10 192.168.253.2 UM n253
224.0.0.0/4 Local 1 10 192.168.254.2 UM n254
255.255.255.255/32 Local 1 1 10.0.0.7 UM Control
255.255.255.255/32 Local 1 1 192.168.3.1 UM Stub3
255.255.255.255/32 Local 1 1 192.168.253.2 UM n253

Вот, собственно, и вся настройка. )