вторник, 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";
}

суббота, 27 июня 2009 г.

PPPoE сервер на Cisco с авторизацией через Radius

Оригинальный пост от 2004 года:


Помимо предоставления фиктивных адресов через Radius, создан VLAN с реальными адресами для тех клиентов, которым в силу определенных причин необходимы реальные адреса.

Первым делом разрешите на cisco Radius:

aaa authentication login default local
aaa authentication ppp default group radius
aaa authorization exec default local !запрет использования Radius для exec
aaa authorization network default group radius
aaa accounting network default start-stop group radius

Разрешите VPN:

vpdn enable

Создайте группу:

vpdn-group 1
accept-dialin
protocol pppoe
virtual-template 1

Создайте сабинтерфейсы для VLAN на внутреннем Ethernet интерфейсе:

interface FastEthernet0/0.1
description PPTP clients
encapsulation dot1Q 2
ip address 192.168.0.1 255.255.255.0
no ip redirects
ip nat inside
pppoe enable

interface FastEthernet0/0.2
encapsulation dot1Q 2
ip address 81.ххх.ххх.ххх 255.255.255.240

Добавьте ip nat outside на Internet интерфейсе

Создайте Virtual-Template1

interface Virtual-Template1
ip unnumbered FastEthernet0/0.1
ip nat inside
ppp authentication chap pap callin

Добавьте использование функции NAT overload на Internet интерфейсе для адресов из access-list 1

ip nat inside source list 1 interface FastEthernet1/0 overload
access-list 1 permit 192.168.2.0 0.0.0.255 !для этих адресов разрешить NAT

На этом интерфейсе живет Radius сервер:

ip radius source-interface FastEthernet0/0.2

Это его настройки:

radius-server configure-nas
radius-server host 81.ххх.ххх.ххх auth-port 1812 acct-port 1813
radius-server retransmit 3
radius-server timeout 30
radius-server key xxxxxxxxxxxxxxxxx

P.S. Radius у меня сам выдает IP вида 192.168.2.ххх по имени пользователя. Если вам это не подходит то сделайте:
ip local pool PPPoE 192.168.2.2 192.168.2.254

Вот собственно и все комментарии приветствуются :-)