Короче почувствуй себя провайдером - вот смысл данной статьи. ;-))
Итак, понеслась.
Для реализации нашего замысла понадобятся:
- Прямые и правильно установленные /dev/hands;
- Небольшой старенький комп (напр. PIII+128 Mb RAM+20 Gb HDD)
- Свежий стабильный дистрибутив pfSense (на момент написания статьи стабильной была версия 1.2).
pfSense - это liveCD/embedded firewall-дистрибутив на базе FreeBSD, который весит всего 60 Mb (24 Mb - embedded). Управление происходит как через web-интерфейс, так и через консоль или telnet. Конфигурационный файл хранится в XML и может подгружаться с любого носителя без установки операционки на жесткий диск.
Изначально pfSense создавался как ответвление от m0n0wall и примечателен еще тем, что использует фильтр пакетов OpenBSD pf. Описывать все фичи данного дистрибутива нет никаго смысла, зайдите на оффсайт и почитайте сами. Единственное чего там пока нету - это биллинга NetAMS, хотя знающие люди вроде как смогли его туда прикрутить. :-) Существует еще проект firewall-дистрибутива smoothwall, но я его пока что не юзал, так что сказать чтолибо не могу.
Итак, я буду исходить из того, что дистрибутив уже проинсталлирован на жесткий диск и готов к работе. Если вас пугает процесс инсталляции, то зайдите на оффсайт и посмотрите интерактивный скринкаст о том как ставить pfSense на жесткий диск.
Прежде чем заняться настройкой дистра, необходимо пропатчить ему пакет dnsmasq, иначе при наличии в локалке уже поднятого днс-сервера фряха будет фигачить днс-запросы в локалку, и у юзеров на компах под виндой будут вылазить ошибки типа "в сети обнаружены совпадающие имена".
Как пропатчить pfSense хорошо написано здесь и вот здесь. Проблем с этим возникнуть не должно.
Итак, мы установили pfSense на жесткий диск, подключили комп к локалке, и зашли в админку через веб-интерфейс на http://192.168.100.242 (в вашем случае скорее всего http://192.168.0.1 или http://192.168.1.1), введя дефолтные логин и пасс (admin/pfsense)
У меня на компе стоит 4 сетевухи (одна запасная), хотя при их дефиците можно обойтись и двумя: 1 лановская, а вторая - интернетовская, а остальные сетевухи делаем при помощи VLAN, типа виртуальные сетевухи будут. Но у меня сетевух было в достатке, поэтому мудрить с VLAN я не стал. Итак, вот мои сетевые интерфейсы на серваке: fxp0, vr0, rl0 и запасной vr1. У pfSense есть свои логические интерфейсы по количеству физических (LAN, WAN, OPT1, OPT2, ...). И на страничке Assign мы задаем между ними соответствие. Прежде чем закрутить корпус сервака желательно переписать MAC-адреса сетевушек и пометить их расположение внутри сервака гденить на бумажке, чтобы не путаться на данном этапе.
Теперь приступаем к настройке интерфейсов LAN (смотрит в локалку), и WAN, OPT1 - смотрят в инет. В вашем случае лановский интерфейс может иметь другой адрес и другую маску (маска 24 означает 255.255.255.0, маска 30 = 255.255.255.252).
ВАЖНО! Обращаю ваше внимание на то, что PPPoE дозвон до инета можно использовать только на интерфейсе WAN. Данная недоработка будет устранена в версии pfSense 1.3. То есть, если хотим использовать два pppoe инета, то один из них придется пропустить через маршрутизатор типа d-link dir-100. У меня как раз домру инет именно так и приходит на интерфейс OPT1.
На WAN приходит инет от Полярной Звезды уже в нормальном виде, то есть ip, маска, шлюз.
На интерфейс OPT1 приходит дом.ру инет как раз с маршрутизатора д-линк, где сам маршрутизатор имеет адрес 192.168.100.200 и маску 255.255.255.0 (24), что я и отразил в настройках. А 192.168.100.243 - это просто свободный адрес, который присваивается интерфейсу OPT1.
Теперь переходим к интересному- PPPoE Server (находится в разделе Services).
Ставим следующие настройки:
Enable PPPoE Server
Interface = LAN
Subnet netmask = 24 (можете поставить свою маску, там например 16 или 8 или еще какую)
No. pppoe user = 100 (у меня на работе просто больше 100 компов всеравно пока нету)
Server address = 10.1.100.254 (адрес PPPoE сервака, естессно можно присвоить любой другой)
Remote address range = 10.1.100.0 (диапазон адресов клиентов, здесь 0 на конце означает диапазон 10.1.100.1 - 10.1.100.255)
Здесь же можно вбить настройки RADIUS сервака как уже установленного так и внутреннего сервака pfSense - freeradius, который можно скачать и установить в разделе System - Packeges.
Лично я человек ленивый, поэтому меня вполне устроила внутренняя база pfSense без всяких там RADIUS'ов :-)
На соседней вкладке Users заводим собственно аккаунты пользователей, то есть прописываем для каждого логин, пасс и ip. Все очень просто.
Теперь настраиваем еще один интересный сервис LoadBalancer (находится в разделе Services)
Вдаваться в технологию функционирования данного сервиса я не буду, если интересно почитайте офф форум или документацию. Я расскажу лишь как сделать так, чтобы при падении одного инет канала, тут же поднимался другой (отмечу, что резервный канал поднимается примерно через 1 сукунду). Стоит отметить что количество интернет каналов ограничено лишь вашими финансовыми возможностями, то есть на резерве может быть хоть 10 интернет каналов. :-)
Итак настройки:
Name = loadbalans (в общем то че хотим здесь то и пишем)
Type = Gateway
Behaviour = Failover (то есть один канал упал - второй канал поднялся)
Затем проделываем 2 раза аналогичную операцию:
- Monitor IP = WAN's Gateway
- Intarface name = WAN
- жмем на кнопку Add to pool
- Monitor IP = OPT1's Gateway
- Intarface name = OPT1
- жмем на кнопку Add to pool
В результете мы получим на вкладке Status - Load Balanser окрашенные в зеленый цвет интерфейсы шлюзов. Если какойто шлюз имеет желтый или красный цвет, то возможно нету связи через данный интерфейс, или не подключен кабель к соотв интерфейсу или настройки интерфейса заданы неверно или чтонить в таком же духе. Короче когда оба шлюза норм пингуются, то они окрашены в зеленый цвет.
Теперь осталось настроить только встроенный фаерволл.
Первым делом удаляем дефолтное правило на вкладке LAN, мы ведь условились, что интернет будут получать только PPPoE клиенты. :-) Либо можно оставить это дефолтное правило, но заменить в нем Distanation с *(any) на LAN Subnet.
В итоге у нас будет одно правило (макс два - если не удалять дефолтное) и находиться оно будет в разделе PPPoE VPN.
Правило будет таким:
Pass PPPoE Users * * * loadbalans
То есть мы разрешаем любой исходящий трафик только от PPPoE клиентов.
Если нужно будет кому то еще чтонить запретить или разрешить, то делаем это. Однако здесь я не буду описывать настройку фаервола pfSense. Читайте документацию, офф форум.
Теперь осталось только настроить PPPoE соединения на стороне клиентов. Я рекомендую использовать последнюю стабильную версию драйверов RASPPPOE by Robert Schlabbach, т к они более функциональны чем встроенные драйверы Windows.
3 комментария:
Хорошая штука Pfsense, чем то походит на аппаратный роутер типа Dlink, но естественно с обалденными возможностями. Отличная статья, правда на момент прочтения я уже разобрался во всём, единственное не понял как траффик по клиентам билинговать, а то в статье об этом упомянулось в начале?.. Через что это делается? Через радиус, или ещё как можно клиентов билинговать?
Клево написано, буду побывать, надеюсь все заработает! Спасибо!
Ошибка 734 при попытке подключения
Отправить комментарий