четверг, 11 декабря 2008 г.

PPPoE сервер на cisco

Как сделать из циски клиента PPPoE я вкратце рассказывал в этом сообщении. Сегодня у нас задача создать PPPoE-концентратор на cisco, который будет терминировать сессии. Делать это будем через механизм bba-group по-новому, а не по-старому с использованием vpdn-group.
Разница состоит в том, что при новом механизме у нас есть возможность использовать несколько профилей PPPoE. Обычно хватает одного, но всё-же vpdn-group уже считается legacy. И в моем примере рассматривается простой случай. Поэтому профиль будет один для роутера (default).
Итак, пусть у нас есть некий роутер с, например, двумя интерфейсами:
FastEthernet0/0
ip address 72.14.205.100 255.255.255.252
!
FastEthernet0/1
ip address 10.10.10.1 255.255.255.0
!
Из них fa0/0 смотрит в одну сеть (например, внешнюю), а fa0/1 - в другую (внутреннюю). Мы хотим пускать клиентов, присоединившихся по PPPoE в первую сеть через NAT. Пусть у них будет сеть 10.10.100.0/24. Раздавать будем через механизм DHCP:
ip dhcp pool PPPoEpool
network 10.10.100.0 255.255.255.0
domain-name google.com
dns-server 216.239.32.10 216.239.34.10
default-router 10.10.100.1
!
Создаём для клиентов вот такой виртуальный интерфейс:
interface Virtual-Template1
ip address 10.10.100.1 255.255.255.0
ip nat inside
ip virtual-reassembly
peer default ip address dhcp-pool PPPoEpool
ppp authentication chap ms-chap # чтобы работало также с клиентами MS Windows
!

Включаем поддержку PPPoE на роутере (тут как раз пресловутое bba-group):
bba-group pppoe global
virtual-template 1 # (см.выше)
sessions max limit 100 # у меня в примере клиентов не больше сотни
sessions per-mac limit 1 # на всякий случай ;-)
sessions auto cleanup
!

Не забываем включить концентратор PPPoE на интерфейсе:
FastEthernet0/1
ip address 10.10.10.1 255.255.255.0
pppoe enable group global
!

А теперь лирическое отступление. Посмотрим, как аутентифицироваться и учитывать подключившихся. Вот пара вариантов для размышлений:

1) Локальная аутентификация. То есть пользователи хранятся в конфиге. Тут всё просто:
aaa new-model
!
aaa authentication ppp default local
aaa authorization network default local

...

username pppoeuser privilege 0 password 7 pppoepassword

2) Внешняя аутентификация. В данном случае циска не знает пользователей в логин всегда сверяется с внешним сервером по протоколу TACACS или RADIUS (более распространено). Минусы очевидны: есть необходимость в дополнительной органицации и поддержке RADIUS-сервера, а при его недоступности доступ в сеть будет запрещён. Однако при масштабировании системы, добавлении новых серверов доcтупа или резервных серверов RADIUS..
Как поднять и настроить сервер с пользователями и паролями поговорим в следующий раз, на циске это делается следующим образом (используется дефолтный профиль):
aaa new-model
!
aaa authentication ppp default group radius
aaa authorization exec default local # чтообы на exec заходили только локальные пользователи
aaa authorization network default group radius
aaa accounting network default start-stop group radius # если предполагается учет трафика средствами RADIUS
...

ip radius source-interface FastEthernet0/1 # У меня RADIUS-сервер внутри сети
!
radius-server host 10.10.10.2 auth-port 1812 acct-port 1813 key 7 radiussecret

Раздавать определённые IP-адреса клиентам по логину можно также через RADIUS.

Ну вот и всё! Мой пример осталось завершить NAT-ом для клиентов PPPoE:
ip nat inside source list 1 interface FastEthernet0/0 overload
access-list 1 permit 10.10.100.0 0.0.0.255