1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
1. OGLNIE
Braa suy do odpytywania hostw po SNMP - w odrnieniu jednak od snmpget
z pakietu net-snmp, braa moe odpytywa dziesitki czy nawet setki i tysice
hostw jednoczenie, i to w dodatku pracujc jako jeden proces. Dziki temu
zuywana jest niewielka ilo zasobw systemowych a samo odpytywanie (czy w
zasadzie, skanowanie) przebiega BARDZO szybko.
Braa jest wyposaony w wasny stos SNMP, nie wymaga wic adnych bibliotek
SNMP takich jak net-snmp. Sama implementacja jest bardzo prowizoryczna,
obsuguje tylko kilka typw danych i z pewnoci nie moe by okrelona
jako 'zgodna ze standardami'. Zostaa zaprojektowana tak aby bya szybka -
i jest szybka. Z tego powodu (i oczywicie z powodu mojego lenistwa), nie
ma analizatora jzyka ASN.1 w braa - MUSISZ zna numeryczne wartoci OID'w
o ktre chcesz odpytywa. (np. .1.3.6.1.2.1.1.5.0, a nie system.sysName.0).
2. WYMAGANIA
* system z rodziny *IX w ktrym dziaaj gniazda BSD i kilka istotnych
syscalli z POSIX'a
* dua tablica ARP - jeli chcesz odpytywa tysice hostw, potrzebujesz
systemu ktry bdzie w stanie pomieci tysice wpisw ARP... na przykad
zainteresuj si gc_thresh w linuksie...
* dobrze jest mie te zainstalowany gdzie (niekoniecznie na tej samej
maszynie) peny pakiet SNMP - braa przyjmuje tylko numeryczne OIDy,
wic czasem moe si okaza, e snmptranslate to cakiem przydatne
narzdzie...
Braa nie do koca jest 'portable' - w kadym razie, zostao przetestowane pod
systemami:
* Linux (shaerrawedd 2.4.19-xfs #7 Fri Oct 4 18:18:38 CEST 2002 i686 unknown)
* FreeBSD (venom 4.6.2-RELEASE-p10 FreeBSD 4.6.2-RELEASE-p10 #0: Tue Mar 25
12:59:45 CET 2003 root@venom:/usr/src/sys/compile/VENOM-3 i386)
* OpenBSD (pantera 3.3 PANTERA#0 i386)
* SunOS (atlantis 5.9 Generic_112233-04 sun4u sparc SUNW,Ultra-5_10)
3. INSTALACJA
* przyjrzyj si Makefile i odkomentuj ustawienia dla Twojego systemu
* zrb 'make'
* skopiuj binark 'braa' w Twoje ulubione miejsce
4. UYCIE
Braa potrzebuje listy zapyta, okrelonych w poniszej skadni:
[community@]host[:port]:oid[/id]
Gdzie: host to adres IP hosta z ktrym si poczy
oid to OID o ktry spyta
port port UDP z ktrym si poczy (domylnie: 161)
community to community jakim si zidentyfikowa, domylnie
public
id identyfikator zapytania (przydatny przy uywaniu
braa w skryptach; sam w sobie nie wpywa na proces
zapytania)
Przykady:
192.168.12.30:.1.3.6.1.2.1.1.5.0
private@192.168.31.1:.1.3.6.1.2.1.1.6.0
Mona poda take cay zakres hostw, powiedzmy:
10.253.100.1-10.253.105.254:.1.3.6.1.2.1.2.2.1.10.1
to to samo co:
10.253.100.1:.1.3.6.1.2.1.2.2.1.10.1
10.253.100.2:.1.3.6.1.2.1.2.2.1.10.1
10.253.100.3:.1.3.6.1.2.1.2.2.1.10.1
...
...
Jeli potrzebujesz odpyta hosta (lub zakres hostw) o wicej ni jedn
warto SNMP, musisz po prostu wpisa kilka osobnych zapyta:
10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.1.2.1.1.4
10.253.101.1-10.253.106.1:.1.3.6.1.2.1.2.2.1.10.1
10.253.101.1-10.253.106.1:.1.3.6.1.2.1.2.2.1.16.1
10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.1.1.1.6.3
10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.2.2.1.3.2
10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.1.4.1.5.3
Naturalnie braa wykorzystuje moliwo wysania kilku zapyta SNMP
w jednym pakiecie i nigdy nie wyle wicej ni jeden pakiet (poza
sytuacjami retransmisji jeli nie ma odpowiedzi) do jednego hosta -
swoj drog, zobacz OGRANICZENIA.
No, tak jak zostao to wspomniane, pierwszy etap to przygotowanie listy
zapyta. List mona przekaza braa na dwa sposoby. Albo zapisa j do pliku
tekstowego, w ktrym jedno zapytanie == jedna linijka, albo poda seri
opcji -q. Mona take miesza obydwie te metody, zaadowa kilka zestaww
zapyta z kilku rnych plikw, itd.
A oto waciwa skadnia:
braa [-a] [-s N] [-r R] [-t T] [-q query [-q query [-q query ...]]] [-f file
[-f file [-f file ...]]]
WYMAGANE OPCJE:
-q i -f to opcje do podawania zapyta. -q pozwala na dosowne podanie
zapytania, -f pozwala na podanie pliku z ktrego zapytania
zaadowa.
OPCJE ZMIENIAJCE SZYBKOC DZIAANIA:
-s N okrela ile hostw pyta w jednej turze, domylnie 50, patrz niej
-r R okrela ilo retransmisji na host, domylnie 3, patrz niej
-t T okrela timeout w milisekundach, patrz niej
OPCJE ZMIENIAJCE FORMAT WYJCIA
-a alternatywny format wyjcia
Wic jak to dziaa?
Tworzona jest kolejka N hostw i wysyane s do niej zapytania. Braa
czeka do 200 ms na jakie odpowiedzi. Jeli co przyjdzie, hosty ktre
odpowiedziay s usuwane z kolejki i kolejne hosty wchodz w ich miejsce.
Ilo retransmisji dla kadego hosta ktry nie odpowiedzia jest nastpnie
zwikszana - jeli ta ilos osignie R, host jest rwnie usuwany
z kolejki, zwalniajc miejsce dla nastpnego. Host usunity z kolejki
nadal moe wysa odpowied i ZOSTANIE ona przyjta, std opnienia
pakietw s bez znaczenia, kopot jedynie w stratach. Cay proces
jest powtarzany dopki nie skocz si hosty do zapeniania nowych
miejsc w kolejce (tzn. wszyscy zostali ju odpytani lub s w trakcie
odpytywania). Kiedy tak nastpi, kolejka jest stopniowo zmniejszana,
i kiedy ju osignie dugo 0, braa zamyka wszystkie poczenia,
sortuje wyniki, wywietla je, wychodzi.
Po T milisekundach od startu, braa pokazuje wyniki i wychodzi
natychmiast, niezalenie od tego ile hostw zostao ju odpytanych,
a do ilu nie poszo nawet p pakietu...
Jak wida, algorytm nie jest doskonay. Jak wspomniaem, chodzio o to,
eby by jak najszybszy. Domylne wartoci dla -s i -r s cakiem w porzdku,
ale oczywicie zawsze moesz je 'podkrci' tak, aby braa chodzio jeszcze
szybciej (ale mniej dokadnie). Jeli odpytujesz bardzo du ilo hostw, nie
zapomnij zwikszy znaczco -t.
Wyniki s wypisywane na stdout, jeden-na-lini:
192.168.1.2:.1.3.6.1.2.1.1.5.0:do-wan.elsat.net.pl
192.168.1.1:.1.3.6.1.2.1.1.4.0:"Mateusz Golicz MG452-RIPE <mtg@elsat.net.pl>"
192.168.1.1:.1.3.6.1.2.1.1.5.0:ergsun
Lub jeli podasz -a, host-na-lini z wynikami oddzielonymi spacj, w kolejnoci
w ktrej zostay podane zapytania o nie:
10.253.105.245 358 410 -137 276783656 16315982 4
10.253.105.244 387 480 -105 6611527 391938 1
10.253.105.242 371 282 182 0 0 2
10.253.105.239 373 430 34 0 0 6
10.253.105.238 354 510 -163 262523537 12319047 4
Przy standardowym trybie wypisywania wynikw braa moe przed kadym rezultatem
zapytania wypisa jego podany przez uytkownika identyfikator; ta opcja moe
by przydatna do przetwarzania wyjcia z braa w skryptach. Przykadowo, zapytanie o:
192.168.1.2:.1.3.6.1.2.1.1.5.0/Test
zwrci co w rodzaju:
Test/192.168.1.2:.1.3.6.1.2.1.1.5.0:do-wan.elsat.net.pl
5. PRZYKADY
braa -f queries.lst \
-q 192.168.1.1:.1.3.6.1.2.1.1.5.0 \
-q 192.168.1.1:.1.3.6.1.2.1.1.4.0 \
-q 192.168.1.2:.1.3.6.1.2.1.1.4.0
braa -s 50 -ar 3 -t 250000 -q 10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.1.2.1.1.4 \
-q 10.253.101.1-10.253.106.1:.1.3.6.1.2.1.2.2.1.10.1 \
-q 10.253.101.1-10.253.106.1:.1.3.6.1.2.1.2.2.1.16.1 \
-q 10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.1.1.1.6.3 \
-q 10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.2.2.1.3.2 \
-q 10.253.101.1-10.253.106.1:.1.3.6.1.2.1.10.127.1.1.4.1.5.3
5. BEDY I OGRANICZENIA
* jedynymi obsugiwanymi typami danych s: integer (gauge, counter, timeticks,
etc.), string and OID. Oczywicie zawsze moesz poprawi braaasn.c/braaasn.h.
* braa nigdy nie wyle wicej ni 1500 bajtw (lub pojedynczy pakiet) do hosta
w pojedynczej prbie. Std ilo zapyta jakie moesz zada jednemu hostowi
jest ograniczona. Dodatkowo, kiedy osigniesz ten limit podajc zbyt
wiele zapyta, braa przerwie cay proces skanowania. Nie potrafi okreli
ile dokadnie wynosi ten limit, po prostu zaley to od wielu czynnmikw
(gwnie, dugoci OID'w), w kadym razie, 15 zapyta na hosta brzmi
do niebezpiecznie i lepiej nie przekraczaj tej liczby.
* nie da si uywa nazw domenowych hostw - zawsze musisz podawa IP.
c, to drobiazg, myl e w nastpnej wersji (o ile bdzie) zostanie
to poprawione.
* braa prawdopodobnie nie ruszy w rodowiskach 64-bitowych
6. AUTORZY, PODZIEKOWANIA
Mateusz 'mteg' Golicz <mtg@elsat.net.pl>
7. LICENCJA
Pakiet rozpowszechniany jest na zasadach licencji GNU GPL, wersja 2.
Mateusz 'mteg' Golicz <mtg@elsat.net.pl>
|