вторник, 30 июня 2009 г.

NOC for ISP

Остаются же еще великие люди в нашем государстве...
Открыл для себя проект http://www.nocproject.org/. Для ISP вещь которую очень сложно переоценить, незначительные проблемы списываются на версию 0.2.5.
На ubuntu 9.04 стала в пол пинка, вникаю...

воскресенье, 28 июня 2009 г.

Коротко

Как посмотреть количество МАК в arp таблице коммутатора Cisco -

snmpwalk -v 2c -c [community] [ip] ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaPhysAddress | wc -l

Как снять показания с карты сетевого мониторинга ИБП N-Power -

snmpwalk [ip] -c [community] -v 1 iso.3.6.1.2.1.33.1.3.3.1.3.1 текущее входное напряжение
snmpwalk [ip] -c [community] -v 1 iso.3.6.1.2.1.33.1.2.4.0 процент заряда акб
snmpwalk [ip] -c [community] -v 1 iso.3.6.1.2.1.33.1.2.5.0 нагрузка в %

О написанном

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

Vyatta и OpenSBC

Установка OpenSBC на Vyatta 5.02, по мотивам http://sipxecs.blogspot.com/2009/01/opensbc-on-vyatta-firewall-how-to.html
Цель - получить нетронутую систему после всех действий.

1. Login to Firewall as user 'vyatta'
2. cd /etc/apt
3. su
4. Password: (enter root password)
5. nano -w sources.list
6. Add line: "deb ftp://ftp.us.debian.org/debian/ lenny main contrib non-free"
7. aptitude update
8. aptitude install -y cvs build-essential flex bison bison libexpat1-dev
9.
cd /usr/src
cvs -d:pserver:anonymous@opensipstack.cvs.sourceforge.net:/cvsroot/opensipstack login
cvs -z3 -d:pserver:anonymous@opensipstack.cvs.sourceforge.net:/cvsroot/opensipstack co -P opensipstack
cvs -z3 -d:pserver:anonymous@opensipstack.cvs.sourceforge.net:/cvsroot/opensipstack co -P opensbc
10.
cd /usr/src/opensipstack
chmod +x ./configure
./configure
make bothnoshared
cd ../opensbc
chmod +x ./configure
./configure
make bothnoshared
make distrib
11. cp /usr/src/opensbc/distrib/* /usr/local/bin
12.
Edit /usr/local/bin/startup.sh (i use 'nano -w /usr/local/bin/startup.sh')
Modify the startup command to: ./opensbc -d -p /var/run/opensbc.pid -H 65536 -C 1024000
Modify the shutdown command to: ./opensbc -k -p /var/run/opensbc.pid
13.
copy startup.sh to /etc/init.d (cp /usr/local/bin/startup.sh /etc/init.d/opensbc.sh
Modify opensbc.sh to make sure it runs as root and so it can find the application.
a. nano -w /etc/init.d/opensbc.sh
b. Make the line read: /usr/local/bin/opensbc -u root -d -p /var/run/opensbc.pid -H 65536
-C 1024000
ln -fs /etc/init.d/opensbc.sh /etc/rc2.d/S92opensbc
14. aptitude remove -y cvs build-essential flex bison bison libexpat1-dev
15. Remove line: "deb ftp://ftp.us.debian.org/debian/ lenny main contrib non-free"
16. aptitude update

Vyatta

Всем работающим в сфере IT стоит знать про тенденции софт-маршрутизаторов на примере проекта Vyatta ( http://www.vyatta.com ). Проект весьма интересный для начинающих администраторов, без особых знаний Linux систем можно строить весьма интересные проекты основанные на Linux :) Очень грамотно написанная обвязка сделанная как "cisco like cli". Базовое конфигурирование парой команд и богатые возможности.

Совместно с Citrix XenServer получается извращенный вариант Cisco + VRF :) Под XenServer существует готовый темплейт, существенно облегчающий развертывание.

dhcp snooping + vlan-per-client

Продолжение экспериментов в dhcp snooping.
Настройка совместной работы vlan-per-user и dhcp on vlan.
dhcp snooping работает на уровне распределения, это позволяет использовать любые дешевые коммутаторы доступа, минус повышенные требования к коммутатору распределения. Vlan-per-User на cisco работает только в global таблице маршрутизации, работа в VRF невозможна.
Первичная настрока коммутатора точна такая же как и для работать с одним dhcp snooping'ом

ip dhcp snooping vlan 1500 ( на каком вилане работать )
ip dhcp snooping information option format remote-id hostname
ip dhcp snooping database tftp://10.255.10.2/snooping_me3750.txt ( храним базу привязок на тфтп )
ip dhcp snooping database write-delay 60
ip dhcp snooping database timeout 30
no ip dhcp snooping verify mac-address ( не проверять мак адрес на порту )
ip dhcp snooping ( включаем глобально )

на интерфейсе коммутатора в сторону dhcp сервера

interface fastethernet 1/0/24 ( пример )
ip dhcp snooping trust ( доверия, залог успеха )
ip arp inspection trust ( у нас не используется, но перестрахуемся )

настройка vlan-per-user еще проще
создаем loopback

interface Loopback10 ( произвольно )
description --- 192.168.0.0/24 Vlan per customers --- ( обзовем как нибудь )
ip address 192.168.0.1 255.255.255.0 ( введем адрес сети из которой будут выдаваться адреса )

создадим требуемое количество виланов

vlan 1500-2000

и создадим сами SVI интерфейсы

interface Vlan1500
description --- 192.168.0.2 --- ( для информации указываем какой адрес будет выдаваться )
ip unnumbered Loopback10 ( ключевой момент, указываем какой лупбэк использовать )
ip helper-address 10.255.10.2 ( указываем адрес нашего dhcp сервера )

далее настраиваем dhcp сервер, обязательное условие - его работа с unicast пакетами, см. http://xgu.ru/wiki/%D0%9E%D0%BF%D1%86%D0%B8%D1%8F_82_DHCP

создаем логирование для облегчения жизни

if exists agent.circuit-id
{
log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ",
binary-to-ascii (10, 8, "/", suffix ( option agent.circuit-id, 2)), " (substract 2 for ME-C3750), VLAN ",
binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ",
binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6)), " switch IP ",
binary-to-ascii(10, 8, ".", packet(24, 4))));
}

создаем subnet и class
subnet 192.168.0.0 netmask 255.255.255.0 {
option router 192.168.0.1;
option domain-name-servers 10.255.0.2, 10.255.10.2;
class "VLAN1500" {
match if binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2))="1500"; ( ключевой момент вместо порта-коммутатора берем вилан )
}
pool {
range 192.168.0.2; ( выдаваемый адрес )
allow members of "VLAN1500";
}
}

перезапускаем dhcp и смотрим в лог

Jun 18 10:38:31 billing dhcpd: Lease for 192.168.0.2 is connected to interface 1/6 (subtract 2 for ME-C3750), VLAN 1500 on switch 77:2d:63:6f:72:65 switch IP 192.168.0.1
Jun 18 10:38:31 billing dhcpd: DHCPREQUEST for 192.168.0.2 from 00:0e:08:db:0e:30 (SipuraSPA) via 192.168.0.1
Jun 18 10:38:31 billing dhcpd: DHCPACK on 192.168.0.2 to 00:0e:08:db:0e:30 (SipuraSPA) via 192.168.0.1
Jun 18 10:38:39 billing dhcpd: Lease for 192.168.0.2 is connected to interface 1/6 (subtract 2 for ME-C3750), VLAN 1500 on switch 77:2d:63:6f:72:65 switch IP 192.168.0.1
Jun 18 10:38:39 billing dhcpd: DHCPDISCOVER from 00:0e:08:db:0e:30 (SipuraSPA) via 192.168.0.1
Jun 18 10:38:39 billing dhcpd: DHCPOFFER on 192.168.0.2 to 00:0e:08:db:0e:30 (SipuraSPA) via 192.168.0.1
Jun 18 10:38:39 billing dhcpd: Lease for 192.168.0.2 is connected to interface 1/6 (subtract 2 for ME-C3750), VLAN 1500 on switch 77:2d:63:6f:72:65 switch IP 192.168.0.1
Jun 18 10:38:39 billing dhcpd: DHCPREQUEST for 192.168.0.2 (10.255.10.2) from 00:0e:08:db:0e:30 (SipuraSPA) via 192.168.0.1
Jun 18 10:38:39 billing dhcpd: DHCPACK on 192.168.0.2 to 00:0e:08:db:0e:30 (SipuraSPA) via 192.168.0.1

проверяем что у нас на коммутаторе

gw-core#sh ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
00:0E:08:DB:0E:30 192.168.0.2 486 dhcp-snooping 1500 FastEthernet1/0/4
Total number of bindings: 1

есть ли маршрут

gw-core#sh ip route 192.168.0.2
Routing entry for 192.168.0.2/32
Known via "static", distance 1, metric 0 (connected)
Redistributing via ospf 8, bgp ХХХХ
Advertised by ospf 8 subnets
Routing Descriptor Blocks:
* directly connected, via Vlan1500
Route metric is 0, traffic share count is 1


вуаля !

dhcp snooping

Схема такая Catalyst 3750
/ | \
много Edge-core ES3528M :)

настройка DHCP Option 82
транзит Option 82 через каталисту, генерация на edge-core es3528m
настройки на catalyst:

service dhcp
ip dhcp relay information trusted
ip dhcp snooping vlan 10 ( на каком вилане работать )
ip dhcp snooping information option allow-untrusted ( если нужен транзит option 82 и нет локальных клиентов)
ip dhcp snooping information option format remote-id hostname ( под вопросом )
no ip dhcp snooping verify mac-address ( не проверять мак адрес на порту )
ip dhcp snooping ( включаем фичу )
ip arp inpection vlan 10 ( включение защиты от arp-spoofing )
ip dhcp snooping database tftp://10.255.10.2/snooping_me3750.txt ( для того чтоб не потерять базу биндингов при перезагрузе указываем место ее хранения )
ip dhcp snooping database timeout [number] ( таймаут доступа к бд )
ip dhcp snooping database write-delay [number] ( задержка записи в бд )

на порту в сторону нижестоящего коммутатора
interface fastethernet 1/0/24 ( пример )
ip dhcp relay information trusted
ip dhcp relay information policy-action keep
ip arp inspection trust ( доверяем всем )
ip dhcp snooping trust ( доверяем если глобально не включен ip dhcp snooping information option allow-untrusted )
ip arp inspection limit rate [number] ( ограничиваем количество пакетов в секунду )
ip dhcp snooping limit rate [number] ( ограничиваем количество пакетов в секунду )

на логическом интерфейсе
interface vlan 10 ( пример )
ip helper-address 10.255.10.2 ( адрес dhcp сервера )

на клиентском порту
interface fastethernet 1/0/1 ( пример )
ip verify source port-security ( включаем IP Source Guard )
no ip dhcp snooping trust ( недоверяем присылаемым option 82 )
ip arp inspection limit rate [number] ( ограничиваем количество пакетов в секунду )
ip dhcp snooping limit rate [number] ( ограничиваем количество пакетов в секунду )

на этом с кошкой все
настройки edge-core ES3528M
ip dhcp snooping ( включаем )
no ip dhcp snooping verify mac-address ( отключаем проверку мака )
ip dhcp snooping vlan 10 ( указываем с каким виланом работать )
ip dhcp snooping information option ( добавляем option 82 )
ip arp inspection vlan 10 ( включаем )
ip arp inspection ( включаем )

на порту в сторону вышестоящего коммутатора
interface ethernet 1/1
ip dhcp snooping trust ( доверяем )
ip arp inspection trust ( доверяем )

на клиентском порту
interface ethernet 1/2
ip source-guard sip ( включаем IP Source Guard )
ip arp inspection limit rate [number] ( ограничиваем количество пакетов в секунду )


настройки на стороне dhcp сервера ( сервер должен быть собран с поддержкой уникаст запросов )
в dhcpd.conf
проверка наличия option 82 и вывод полезной информации
if exists agent.circuit-id
{
log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ",
binary-to-ascii (10, 8, "/", suffix ( option agent.circuit-id, 2)), " (substract 2 for ME-C3750), VLAN ",
binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ",
binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6)), " switch IP ",
binary-to-ascii(10, 8, ".", packet(24, 4))));
}

создаем подсеть

subnet 192.168.11.0 netmask 255.255.255.0 {
option routers 192.168.11.1;
option broadcast-address 192.168.11.255;
# создаем класс где option agent.remote-id мак коммутатора ( вместо двух 00 всегда используется один 0 ) , и option agent.circuit-id порт на коммутаторе ( на некоторый кошках на два больше )
class "192.168.11.250" {
match if binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6)) = "0:12:cf:67:82:9e" and binary-to-ascii (10,
8, "", suffix( option agent.circuit-id, 1)) = "2";
}
#создаем диапазон
pool {
range 192.168.11.250;
allow members of "192.168.11.250";
}