четверг, 28 февраля 2008 г.

Как включить и настроить Routed в BSD-системах

Тема эта - больше классика, чем практически полезная, потому что routed морально устарел. Но мне очень хотелось попробовать. )

Итак, чтобы включить routed в BSD-системе, необходимо в случае FreeBSD добавить вот такие строки в /etc/rc.conf:
router_flags=""
router="/sbin/routed"
router_enable="YES"

Либо, в случае OpenBSD - достаточно просто исправить "routed_flags="NO"" на что-то другое, например просто убрать "NO" в том же /etc/rc.conf:
router_flags=""

Можно, конечно, в соответстии с man routed, задать все опции в этих самых кавычках, но так как нам нужен RIP-демон, мы оставим конфигурацию по-умолчанию без ключей и будем пользоваться /etc/gateways для для его настройки. Routed сам определит, что он запущен на маршрутизаторе и начнет распространять маршруты. (Условия для этого - gateway="yes" и наличие более одного сетевого интерфейса).
Кроме RIP этот демон поддерживает и другие методы настройки маршрутизации, например, протокол ICMP, а точнее - сообщения, которые отвечают за анонс/поиск/объявление маршрутизатора. Но так как эти функции пока выходят за пределы рассказа про RIP, рассматривать их я не буду. Да и они, опять же - мало применимы практически и больше относятся к старой доброй классике...
Итак, судя по топологии из предыдущих постов, у нас есть по крайней мере один интерфейс, на котором мы RIP использовать не должны.
Поэтому наш /etc/gateways у нас будет выглядеть вот так:

if=lnc4 no_rip passive
no_rdisc

Он в первую очередь отключает рассылку обновлений через интерфейс lnc4, во вторых - отключает ICMP-функции по работе с маршрутами.

Но на OpenBSD такой метод запрета рассылки анонсов почему-то не прокатил. Поэтому в hostname.pcn3 к настойкам интерфейса я просто добавил метрику 16, что сделало маршрут в сеть на этом интерфейсе недоступным для RIP.:
# cat /etc/hostname.pcn3
inet 10.0.0.5 255.0.0.0 NONE description "Control Interface" metric 16

Да, и надо не забыть запустить routed:
# routed

Для отладки полезно использовать ключи -d и -t:
# routed -d -t 
-- 08:25:51 --
Tracing actions started
Add interface lo0 -->/32 <loopback> <passive>
RCVBUF=61440
Add interface pcn0 127.0.0.1 -->/24
turn on RIP
Add interface pcn1 192.168.1.0 -->/24
Add interface pcn2 192.168.249.0 -->/24
Add interface pcn3 192.168.255.0 -->/8 metric=16 <passive>
start suppying routes
Add 127.0.0.1 -->10.0.0.0 metric=16 <if> pcn3 08:25:51
Add 192.168.1.1 -->192.168.255.0 metric=0 <if> pcn2 08:25:51
Add 192.168.249.1 -->192.168.249.0 metric=0 <if> pcn1 08:25:51
Add 10.0.0.0 -->192.168.1.0 metric=0 <if> pcn0 08:25:51
Add 10.0.0.5/32 -->127.0.0.1 metric=0 <if> lo0 08:25:51

Еще один метод отладки - это использование tcpdump:
# tcpdump -s 512 -i pcn1 -n udp port 520
tcpdump: listening on pcn1, link-type EN10MB
08:29:45.192544 192.168.249.2.520 > 192.168.249.255.520: RIPv1-resp [items 9]:
{192.168.2.0}(3) {192.168.3.0}(4) {192.168.4.0}(2) {192.168.6.0}(1)
{192.168.250.0}(1) {192.168.251.0}(2) {192.168.252.0}(2) {192.168.253.0}(2)
{192.168.254.0}(3) (DF)

Все это позволяет увидеть и то, что рассылает routed, и то, что он получает от соседей. В tcpdump мы видим как раз один из пакетов, которые выслала Quagga на linux-роутере, с маршрутами в известные ей сети.

Иными словами, настройка routed практически тривиальна и не сулит ничего сложного. Кроме RIPv1 он поддерживает и RIPv2. Кроме того, в нем отстутвуют настройки поведения протокола. И почему-то он ведет себя иногда довольно-таки странно. В общем, я так и не понял его местами. Например, в openbsd он почему-то не хочет делать ращепление горизонта, хотя в мануале написано - что он просто не умеет не делать этого.

суббота, 23 февраля 2008 г.

Настройка RIP в Cisco IOS и Quagga.

Так как в Debian просто нет routed, я использую другой демон динамической маршрутизации - Quagga. Это форк другого демона - Zebra. Основной идеей в нем проглядывается попытка во всем быть похожей на Cisco IOS, поэтому настраиваются они в плане RIP одинаково. Ну почти. )


Итак, чтобы включить RIPv1 в Cisco IOS, достаточно такой последовательности команд:
router rip
network 192.168.251.0
network 192.168.252.0
network 192.168.4.0
network 192.168.253.0
network 192.168.250.0



Мы просто включаем rip для перечисленного нами списка сетей. Характерная особенность конфигурации RIP - что любой введенный номер сети автоматически обрезается до классового номера сети.
Сама команда network включает указанную сеть в обновления RIP и одновременно активирует рассылку и прием обновлений RIP на интерфейсах, адреса которых попали в эти сети.


Я пока не удаляю вообще ничего из статических маршрутов, потому что сеть просто перестанет нормально работать, пока все маршрутизаторы не станут понимать RIP.


Чтобы проверить конфигурацию протоколов динамической маршрутизации в IOS, достаточно команды "show ip protocols"
c3745-center#sh ip proto
Routing Protocol is "rip"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Sending updates every 30 seconds, next due in 24 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Redistributing: rip
Default version control: send version 1, receive any version
Interface Send Recv Triggered RIP Key-chain
FastEthernet0/0 1 1 2
FastEthernet0/1 1 1 2
FastEthernet1/0 1 1 2
FastEthernet2/0 1 1 2
FastEthernet3/0 1 1 2
Automatic network summarization is in effect
Maximum path: 4
Routing for Networks:
192.168.4.0
192.168.250.0
192.168.251.0
192.168.252.0
192.168.253.0
Routing Information Sources:
Gateway Distance Last Update



Вывод перечислит нам списки фильтров рассылки/приема обновлений для сетей, установки таймеров RIP, типы маршрутов, которые распространяются RIP, какие версии обновлений рассылаются и принимаются интерфейсами и какими. Включена ли суммаризация - об этом подробнее в RIPv2, а также список сетей, для которыx RIP включен. Кроме того, мы могли увидеть список соседей, от которых мы получали обновления - но пока он пуст. )


Теперь установим на linux-роуетере демон Quagga и настроим его:
stasikos@linux-router:~$ sudo aptitude install quagga 



после установки необходимо активировать zebra и ripd в /etc/quagga/daemons:
zebra=yes
ripd=yes



И создадим пустой конфиг для zebra и ripd:
touch /etc/quagga/zebra.conf
touch /etc/quagga/ripd.conf

Теперь рестартуем quagga:
root@linux-router:/etc/quagga# /etc/init.d/quagga restart



После этого, можно подсоединиться к "консоли" Quagga с помощью vtysh:
root@linux-router:/etc/quagga# vtysh

Hello, this is Quagga (version 0.99.5).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

linux-router#



Не пугаемся. Мы оказались в режиме, который в IOS называется "Privelegied EXEC Mode". Теперь мы можем перейти в режим глобальной конфигурации маршрутизатора и настроить себе rip )


linux-router# conf t
linux-router(config)# router rip
linux-router(config-router)# network 192.168.6.0/24
linux-router(config-router)# network 192.168.249.0/24
linux-router(config-router)# network 192.168.250.0/24



Уже заметна разница между Quagga и IOS - во-первых, Quagga требует ввода маски сети. Во-вторых, она поддерживает указание маски через ее длину. )


Аналог show ip protocols rip в Quagga - это show ip rip status:

Routing Protocol is "rip"
Sending updates every 30 seconds with +/-50%, next due in -1203234300 seconds
Timeout after 180 seconds, garbage collect after 120 seconds
Outgoing update filter list for all interface is not set
Incoming update filter list for all interface is not set
Default redistribution metric is 1
Redistributing:
Default version control: send version 2, receive any version
Interface Send Recv Key-chain
eth0 2 1 2
eth1 2 1 2
eth2 2 1 2
Routing for Networks:
192.168.6.0/24
192.168.249.0/24
192.168.250.0/24
Routing Information Sources:
Gateway BadPackets BadRoutes Distance Last Update
192.168.250.2 0 0 120 00:00:03
Distance: (default is 120)


Кстати, внизу мы видим соседнюю циску. Это не может не радовать. Но она нас не видит. Очевидно, Quagga по-умолчанию рассылает обновления версии 2, что из вышепоказанного вывода мы и видим. ) Исправим это:

linux-router(config)# router rip
linux-router(config-router)# version 1



Вот теперь с3745-center нас увидит. Проверим, какие маршруты мы получили от него через RIP:


linux-router# sh ip ro rip

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

R 192.168.4.0/24 [120/2] via 192.168.250.2, eth0, 00:05:46
R 192.168.251.0/24 [120/2] via 192.168.250.2, eth0, 00:05:46
R 192.168.252.0/24 [120/2] via 192.168.250.2, eth0, 00:05:46
R 192.168.253.0/24 [120/2] via 192.168.250.2, eth0, 00:05:46



Можно сказать "все работает" и перейти к конфигурации какого-нибудь еще маршрутизатора из оставшихся.

пятница, 22 февраля 2008 г.

10 советов, на случай если вам в голову пришла идея пересобрать ядро linux

Я вообще никогда не рекомендовал собирать ядра самостоятельно, если это явно не требуется. Сам всегда пользуюсь дистрибутивным ядром и если когда его и собирал - так это ради накладывания патчей. Не понимаю, почему каждый новичок норовит сделать это, не зная совершенно, чем это грозит?
Поэтому у меня сложилось несколько мыслей относительно сборки ядра:
1. Если вы не знаете точно, зачем вы хотите собрать собственное ядро - не собирайте его.
2. Если ваше текущее ядро работает и поддерживает все необходимое оборудование и технологии, и не имеет критических уязвимостей - не собирайте свое ядро и не обновляйте старое.
3. Если вы не в состоянии решить проблемы с новой версией ядра (например, поправить часть исходного кода модуля от сторонних производителей для сборки на новом ядре) самостоятельно - не обновляйте ядро.
4. Если нужное ядро уже есть в виде пакета для вашего дистрибутива (особенно в репозитариях дистрибутива) - не собирайте свое ядро.
5. Если вы все-таки решились - прочитайте не только Kernel HOWTO, но руководство для сборки ядра именно для своего дистрибутива. Поищите в поисковике информацию о проблемах со сторонними модулями и программным обеспечением, которое использует свои собственные модули в ядре для работы.
6. Не трогайте конфиг ядра больше, чем нужно. Особенно, если не знаете, что делаете.
7. Если часть модулей для оборудования вы добавили как модули - не забудьте собрать и initrd для ядра перед тем, как делать reboot.
8. Не забудьте оставить и старое рабочее ядро в системе и в загрузчике, чтобы можно было откатиться, если что-то пойдет не так.
9. Если что-то не получилось - не паникуйте - поищите в google по полученному сообщению об ошибке - скорее всего ответ вы найдете сразу же (обычно обжигаются еще тысячи пользователей).
10. Простая пересборка ядра скорее всего не даст прироста производительности и не сильно освободит оперативную память. А установка недистрибутивных ядер вынудит вас собирать проприетарные драйверы самостоятельно и хранить все дерево исходных текстов ядра на винчестере. Подумайте об этом.

четверг, 21 февраля 2008 г.

Протокол динамической маршрутизации RIP версии 1

Нет, RIPv1, конечно, R.I.P в каком-то смысле, но это фактически первый и самый простой протокол динамической маршрутизации, который был стандартизован, открыт и реализован практически в любой операционной системе.

Если мы наберем в поисковике фразу "RFC RIP", мы тут же найдем RFC 1058, в котором полностью описана история, работа и реализация такого протокола.

Этот документ описывает работу RIP в routed, стандартном юниксовом демоне динамической маршрутизации - самой первой практической реализации этого протокола. )

RIP является протоколом внутренней маршрутизации, основанном на дистанционно-векторном протоколе Беллмана-Форда.

Протокол ограничен максимальным расстоянием в 15 хопов (маршрутизаторов) между конечными сетями и не распространяет в своих обновлениях маски сети, то есть не поддерживает такие технологии как VLSM и CIDR. Кроме того, его использование может приводить к "маршрутным петлям", эффект от которых уменьшается только наличием поля TTL в заголовках IP-пакетов. Кроме того, мерой стоимости маршрута (и основанием для выбора между несколькими маршрутами в одну сеть) является только число хопов. RIP не может учитывать ни загрузку каналов, ни их пропускную способность.
В своей работе RIP использует udp-дейтаграммы, рассылаемые широковещательно с порта 520 на порт 520. Дейтаграмма имеет очень простой формат, в котором, к тому же, заложены возможности развития протокола. Фиксированная часть заголовка содержит только поле версии и тип дейтаграммы - запрос или ответ. Остальную часть занимают записи маршрутов, которые состоят из типа протокола, чья информация переносится (для IP это 2), адреса сети назначения, пары забитых нулями зарезервированных полей и поля метрики маршрута. Максимальный размер сообщения составляет 512 байт, что означает, что переносить в нем можно только 25 маршрутных записей (но это не значит, что больше 25 маршрутов вообще переносить нельзя - вполне себе можно делать это в отдельных сообщениях).

Как работает маршрутизатор с протоколом RIP.
Сразу после включения маршрутизатор рассылает широковещательно пакеты, содержащие его таблицу маршрутизации, в которой будут находиться только маршруты в подключенные сети. При этом для каждой записи он будет указывать метрику 1. То же самое делают и его соседи. Кроме того, он прослушивает сеть на предмет появления таких же сообщений от других маршрутизаторов и анализирует их.
Если в сообщении встречается маршрут в неизвестную до этого сеть, маршрутизатор добавляет ее в собственную таблицу маршрутизации.
Если в сообщении встречается маршрут в уже известную сеть, и его метрика меньше метрики уже имеющегося маршрута - он заменяет запись в своей таблице на новую. Если метрика больше - считается, что этот маршрут хуже и добавлять его не стоит. ) Поэтому он просто проигнорирует такую запись.
После того, как пройдет 30 секунд после первого обновления, маршрутизаторы повторяют эту процедуру снова, рассылая свои таблицы маршрутизации широковещательно. При этом стоит заметить, что полученные от соседей маршруты в подключенные к ним сети они будут рассылать уже с метрикой, большей на единицу, то есть равной двум. Это будет продолжаться, пока все маршрутизаторы в сети не будут иметь маршруты во все известные сети.
Время, которое будет затрачено на полное построение всех таблиц маршрутизации на всех маршрутизаторах в сети называется временем сходимости сети (convergence), и, с учетом 30-секундного интервала обмена маршрутами, для сети из трех маршрутизаторов, это время будет равно максимум 30 секундам, в случае если все маршрутизаторы просто включили одновременно. Для сети, в которой между двумя максимально удаленными сетями находится 16 маршрутизаторов (предел для RIP) это время составит уже 7 минут. Это также худшее время сходимости при добавлении новой сети.

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

Нам необходимо не только отслеживать появление новых сетей, но и исчезновение старых. Механизм для этого есть - для каждого маршрута, полученного через протокол RIP, в маршрутизаторе создается отдельный таймер, по истечении которого маршрут удаляется. Это время по-умолчанию установлено в 180 секунд, чтобы не считать маршруты недоступными в случае, если какие-то 1-4 пакета с обновлениями просто потеряются в сети.
Но стоит только промоделировать ситуацию с "отвалившейся" сетью на бумаге или на реальном железе, мы увидим, что в классическом варианте RIP она разрешается очень плохо. )
Дело в том, что маршрутизатор, сеть на котором была удалена из таблицы маршрутизации, тут же получит ее от соседа, хотя и с большей метрикой. И завернет весь траффик в нее - на соседа, и тут же образуется маршрутная петля. В течение 180 секунд, пока его сосед будет считать этот маршрут еще действительным, он будет пересылать пакеты в нее нашему роутеру, а он будет отсылать их обратно соседу - ведь маршрут в эту сеть он получил именно от него! ).
Но дальше ситуация становится еще более печальной. Как только маршрут удалится из таблицы второго маршрутизатора, он снова появится там с метрикой, выросшей на единицу - так как получит его сразу от соседей, образовав новые маршрутные петли. Ситуация будет развиваться в худшую сторону, образуя петли во всей сети, пока, наконец, метрика маршрута не станет равна 16. Это пометит маршрут как недоступный, и приведет к удалению его из таблицы маршрутизации (конечно, только если этот маршрут добавлен RIP). Таким образом, сеть все-таки сойдется, в самом плохом случае - через 48 минут. Это уже не такое приемлемое время, как 7 минут на "холодный старт" сети, с учетом того что все каналы связи будут заняты пересылкой пакетов в маршрутных петлях, вместо передачи полезных данных. Как раз тот случай, когда в математике все хорошо (сеть сошлась), но на практике неприемлемо (слишком долго сходилась).

С целью разрешить проблему сходимости сети для случаев, когда ранее доступные сети становятся недоступными, в RIP было добавлено два механизма.
1. Расщепление горизонта. Маршрутизатор анализирует маршруты перед отправкой и не рассылает через свои интерфейсы те маршруты, которые он получил через них же. Иными словами, если сеть отваливается, маршрутизатор не получит от соседа обновление через 180 секунд о маршруте, который он сам же ему отослал и петля образовываться не будет.
2. Отравление маршрутов или poisoned reverse. ) Маршрутизатор использует технику расщепления горизонта, но вместо того чтобы совсем не рассылать маршруты, полученные от соседей, им же - рассылает их с метрикой 16, сразу сообщая им о недоступности сети.

На самом деле в RIP может быть и больше таймеров - но особенности реализации все-таки присутствуют, как и умолчательные значения. Например, Cisco IOS после падения маршрута в первые 180 секунд считает его рабочим, далее - деактивирует, но все еще держит в таблице - причем, как "possibly down", с метрикой 16, пока не истечет еще один таймер - таймер захоронения. Опять же, чтобы не дай боже кто-нибудь не прислал его снова и не создал новую петлю )

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

Ну и так как практически в любой ОС есть поддержка RIP - встроенная или нет - есть, что показывать в плане настроек.

вторник, 19 февраля 2008 г.

Лытдыбр натуральный

Так что если вы ходите сюда за записями с тегом "computer-academy-step", можете просто не читать то что под катом...

А началось все с фразы "если мы будем жить вместе"...

Я никогда не задумывался об этом. Но, может кому-то покажется бредом сумасшедшего, а мне так не кажется. Все это, имхо, грань между детством и чем-то более ответственным и осмысленным. Действительно, где-то там, за этой гранью - отношение к противоположному полу, как к сиськам, попе, поцелуйчикам, сексу, в конце концов. Но если только задуматься, насколько все на самом деле глубже, и что на самом деле значит это "быть вместе" - я сначала просто ужаснулся. Во-первых, это значит, что привычный уклад жизни может совершенно меняться, особенно для такого гика и одиночки как я - дома появится человек, который будет требовать к себе море внимания. О ней надо будет заботиться, ее нужно будет даже обеспечивать, кроме того - заботиться и о ее родителях тоже, не так ли? Нет, можно сразу отказаться от этих обязанностей, но это уже будет не "вместе", это будет только "вместе в постели". Да, придется терпеть выходки. Да, у нее будут ПМС и все последствия тоже будут отражаться на тебе - изволь заботиться о ней в эти дни. Да, еще тебе придется понимать, что с работы она может прийти усталой и грустной и дело не в тебе, и не стоит заострять на этом внимание, и скандалить по поводу того, что она сегодня не хочет тебя ублажать и вообще кажется неласковой. Угу, еще у нее есть свои тараканы и бзики - и либо ты к ним привыкнешь, либо перевоспитаешь ее, либо ты уйдешь. Или она уйдет. Да, от нее, конечно, тоже много зависит. Есть ли у нее терпение? А у тебя?
Решения принимать только для себя тоже уже не получится. Нет, может это я так демократичен сам по себе, но мне кажется, что учитывать и ее интересы придется тоже. Да, не стоит забывать и про финансовую сторону дела. Все кажется таким простым, но тоже придется делать выбор не в пользу себя. Забудь про новые гаджеты. )
А доверие?
Нет, только взвесив все "за" и "против", можно вообще думать о каком-то сверхромантичном "вместе до гроба". Все что лезет в голову до этого момента, не имеет даже права на жизнь, только самообман и бред - потому что на самом деле все намного серьезнее, если твоя цель - это не только секс и приятное времяпровождение. И выбор этот непростой.

воскресенье, 17 февраля 2008 г.

USBMount

Сегодня понял, что совершенно надоевшим для меня стал процесс "фтыкнул сменный носитель, так пропиши...". В общем, задался мыслью, как без навороченного DE в своем fluxbox получить автоматическое монтирование любых съемных накопителей, втыкаемых в USB.

На #linux@Rusnet посоветовали попробовать usbmount.

С дефолтными настройками она вряд-ли кому подойдет, поэтому приведу то, что нужно поменять для получения счастливой улыбки на лице.

И сразу же испорчу настроение испытывающим радость. )


В общем, после установки пакета, в /etc/usbmount/usbmount.conf нужно немного поменять строчки в вот такой вид:


# vfat по-дефолту отключен - читайте, почему, в комментах выше строки
FILESYSTEMS="ext2 ext3 vfat"
# async тоже по-дефолту отключен, причины там же
MOUNTOPTIONS="async,noexec,nodev,noatime"
# а вот эта строка просто жизненно нужна для вменяемого поведения с vfat.
FS_MOUNTOPTIONS="-fstype=vfat,uid=stasikos,gid=floppy"


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

Недостатки -

1. При юзании vfat нужно не забывать руками делать команду sync перед вытыканием флешки (или, как некоторые джедаи, совать sync в crontab). Потому что монтирование с записью в sync приводит к редкостным тормозам в записи на накопитель (я так понял, что проблема в vfat - плохо работает в таком режиме).

2. При юзании vfat вряд-ли удастся настроить приемлемую работу с несколькими пользователями за компьютером - в силу того что монтирует накопитель сам usbmount, делает он это с правами root, и не использует записи в fstab, так что установить uid для владельца флешки можно только один, через тот же usbmount.conf. При попытке вывернуться с помощью fmask/dmask вы будете получать "Can't change permissions: operation is not permitted" при записи каждого файла на флешку.

суббота, 16 февраля 2008 г.

Wireshark - анализатор пакетов.

Утилитка, может быть, "крекерская", но ее использование упрощает понимание процессов, которые происходят в сети и может быть полезно при изучении сетевых протоколов и даже при простом обыденном поиске проблем.

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


Скачать ее, под *nix или под Windows, можно с сайта wireshark.org. Раньше она называлась Ethereal. ) Кроме того, она включена в большинство крупных дистрибутивов Linux и *BSD.


Для начала работы с Wireshark требуется хотя-бы захватить какие-либо пакеты. Удобнее всего это делать через "Capture options", расположенное на главной панели и
нструментов или в меню Capture.

В опциях нужно задать интерфейс компьютера, на котором нужно отлавливать пакеты. Также можно задать, делать ли это в promisc режиме (т.е. слушать весь траффик) или нет (получать только пакеты для этой машины). Тут же для удобства можно выбрать опции показа захватываемых пакетов - обновлять ли список в реальном времени и прокручивать ли список автоматически. Удобно обычно поставить сразу все галки.)



После этого wireshark начинает, как правило, что-то захватывать...



... и показывать список захваченных пакетов, из которых можно выбирать пакет для более поднобного анализа. В среднем окне показывается декодированный пакет (т.е. wireshark сам раскладывает пакет по полям для известных протоколов). В нижнемокне показывается пакет или кадр в виде "как есть" (raw). Причем, выбранная в среднем окне часть будет подсвечиваться - так что даже без соответствующего RFC можно изучить формат заголовка интересного тебе протокола и т.д. )

Кроме того, в wireshark есть несколько удобных и полезных функций. Например, Analyse -> Expert Info Composite покажет список основных событий, которые произошли во время захвата - открытие новых сессий, не совсем хорошее поведение протоколов (повторные квитанции в TCP, повторные передачи сегментов и т.д.).



Там же - Follow (TCP|UDP|SSL) Stream - позволяет собрать сессию передачи воедино и посмотреть ее содержимое в целом - вплоть до восстановления переданной в течение сессии HTML-страницы. )



Statistics->Summary позволяет просмотреть некоторую статистику в целом по сессии захвата - в том числе, среднее количество пакетов в секунду и объем передава
емых данных.



Statistic -> Protocol Hierarhy - статистику по используемым протоколам, в том числе - в процентном соотношении.



Statistics -> Conversations показывает информацию об участниках связи, кто кому сколько передавал пакетов, данных и в какую сторону. )



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



Ну и для совсем уж ленивых людей, wireshark может автоматически генерировать правила для блокировки или разрешения траффика, похожего на выбранный пакет. Analyse - Firewall ACL Rules. При этом можно выбрать тип файрвола (Cisco acl, Netfilter, windows firewall и т.д.)



Кроме захвата пакетов непосредственно Wireshark, можно использовать tcpdump с опцией -w:
tcpdump -i ppp0 -w file.pcap

И затем открывать полученный файл в Wireshark для просмотра.

В общем, утилита удобная и должна быть Must Have у любого администратора. ) Единственное, чего в ней может не хватать - это генератора пакетов, но для этого есть другие, более подходящие средства.