Эта реализация считается устаревшей и не поддерживается с релиза 0.4.3

Использование Mikrotik в роли NAS

Одним из популярных способов терминации пользователей на Mikrotik является использование последнего как DHCP-Relay с последующим шейпингом и ассоциацией IP+MAC там же. Ubilling начиная с версии 0.2.6 умеет напрямую общаться с Mikrotik с целью контроля вышеуказанных задач налету.

Подготовка

1. Генерируем ключ без пароля для пользователя ubilling

# cd docs/mikrotik/
# sh ssh_keygen.sh ubilling
# cp dsakey.ubilling /etc/stargazer/

2. Добавляем пользователя ubilling на Mikrotik

[admin@MikroTik] > user add name=ubilling group=write

3. Заливаем публичный файл ключей на Mikrotik

# ftp 172.17.0.5
# Connected to 172.17.0.5.
220 MikroTik FTP server (MikroTik 4.5) ready
Name (172.17.0.5:nightfly): admin
331 Password required for admin
Password:
230 User admin logged in
Remote system type is UNIX.
ftp> put dsakey.ubilling.pub
local: dsakey.ubilling.pub remote: dsakey.ubilling.pub
500 'EPSV': command not understood
227 Entering Passive Mode (172,17,0,5,220,47).
150 Opening ASCII mode data connection for '/dsakey.ubilling.pub'
226 ASCII transfer complete
599 bytes sent in 00:00 (70.39 KB/s)
ftp> quit 
221 Closing

4. Вешаем только что залитый ключ на пользователя Mikrotik

[admin@MikroTik] > user ssh-keys import file=dsakey.ubilling.pub user=ubilling

5. Убеждаемся что все прошло нормально и ключ импортнулся

  ssh -l ubilling  -i /etc/stargazer/dsakey.ubilling  172.17.0.5  "/system resource print"

Настройка Ubilling

1. Утаскиваем обработчик для Mikrotik-direct куда нужно:

# cp mk_push /etc/stargazer/
# chmod a+x /etc/stargazer/mk_push

2. Уносим определялку сервера доступа куда бы вы думали?:

# cp presets/stargazer/GetNasIP /etc/stargazer/
# chmod a+x /etc/stargazer/GetNasIP
# cp presets/stargazer/GetNasType /etc/stargazer/
# chmod a+x /etc/stargazer/GetNasType

правильно, тоже куда нужно.

3. Засовываем следующие заготовки в OnConnect и OnDisconnect

/etc/stargazer/OnConnect

# detect correct NAS ip by user login
NASIP=`/etc/stargazer/GetNasIP ${LOGIN}`

#arp fix
/etc/stargazer/mk_push ${NASIP} "/ip arp add address=${IP} disabled=no interface=[интерфейс_абонентской_сети] mac-address=${MAC} comment=${LOGIN}"
#second way
#/etc/stargazer/mk_push ${NASIP} "/ip arp set static ${IP} ${MAC} comment=${LOGIN}"

#allow 
/etc/stargazer/mk_push ${NASIP} "/ip firewall address-list add address=${IP} disabled=no list=ALLOW comment=${LOGIN}"

#adding shaper queue
/etc/stargazer/mk_push ${NASIP} "/queue simple add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s direction=both disabled=no interface=all limit-at=${UPSPEED}k/${SPEED}k max-limit=${UPSPEED}k/${SPEED}k name=${LOGIN} parent=none priority=8 queue=default-small/default-small target-addresses=${IP} total-queue=default-small"


/etc/stargazer/OnDisconnect

# detect correct NAS ip by user login
NASIP=`/etc/stargazer/GetNasIP ${LOGIN}`

#arp cleanup
/etc/stargazer/mk_push ${NASIP} "/ip arp remove [find comment=${LOGIN}]"
#second way: /ip arp set static ${IP} 00:00:00:00:00:00 comment=${LOGIN}

#deny
/etc/stargazer/mk_push ${NASIP} "/ip firewall address-list remove [find comment=${LOGIN}]"

#delete shape queue
/etc/stargazer/mk_push ${NASIP} "/queue simple remove [find name=${LOGIN}]"

Настройка сенсора NetFlow на Mikrotik

Если мы желаем вести учет трафика на NAS делаем следующее:
1. Убеждаемся что stargazer использует cap_nf для подсчета трафика (он является умолчальным при установке Ubilling)
2. Настраиваем сенсор netflow:

[admin@MikroTik] > ip traffic-flow set enabled=yes
[admin@MikroTik] > ip traffic-flow target add address=[айпишка_сервера_ubilling]:42111 version=5
[admin@MikroTik] > ip traffic-flow set interfaces=[интерфейс_на_котором_считать] active-flow-timeout=20m inactive-flow-timeout=15s cache-entries=4k enabled=yes

Обеспечение привязки IP+MAC

В норме для обеспечения резервирования IP абонента его MAC адресом используется конструкция

"/ip arp add address=[IP_абонента] disabled=no interface=[интерфейс_абонентской_сети] mac-address=[MAC_абонента] comment=[логин_абонента]"

Для обеспечения единообразия имен интерфейсов указываемых в скриптах OnConnect/OnDisconnect рекомендуется объединить эти интерфейсы в одинаково именованый бридж следующим способом:

[admin@MikroTik] > /interface bridge add 
[admin@MikroTik] > /interface bridge port add interface=ether1 bridge=bridge1

делать это следует единоразово

Контроль доступа

В норме, если не производиться дополнительного контроля доступа на сервере c FreeBSD/Linux, следует объявить запрет доступа по умолчанию для всех пользователей на Mikrotik

[admin@MikroTik] >  /ip firewall filter add action=drop chain=forward disabled=no src-address-list=!ALLOW 

DHCP-Relay

Настраиваем перенаправление всех DHCP запросов на сервер с Ubilling для интерфейсов, смотрящих в сторону пользователей на Mikrotik приблизительно так как показано на рисунке ниже. Это нужно для того, чтобы гибко управлять опциями выдаваемыми DHCP пользователям со стороны сервера.

Управление DHCP сервером Mikrotik

Если протащить DHCP трафик до пользователей находящихся за NAS Mikrotik является затруднительным, вы можете попробовать управлять DHCP сервером на Mikrotik напрямую из OnConnect

/etc/stargazer/mk_push ${NASIP}  "/ip dhcp-server lease remove [find address=${IP}]"
/etc/stargazer/mk_push ${NASIP}  "/ip dhcp-server lease add address=${IP} disabled=no mac-address=${MAC} server=server1"

Сервера доступа разных типов

Если вы желаете использовать в своей сети сервера доступа разных типов(rscriptd, Mikrotik итд) , вы можете использовать определение типа сервера доступа при помощи GetNasType для обертки разных обработчиков.

Пример использования для Mikrotik Direct (доступ к Mikrotik по ssh):

NASTYPE=`/etc/stargazer/GetNasType ${LOGIN}`
if [ "$NASTYPE" = "mtdirect" ]
then
# здесь обработка событий OnConnect/OnDisconnect на Mikrotik  (см. Выше)
fi

Редирект на страницу пользователя

/ip firewall nat chain=srcnat action=masquerade protocol=tcp src-address-list=deny dst-port=80 
/ip firewall nat chain=dstnat action=dst-nat to-addresses=IP-билинга to-ports=80 protocol=tcp src-address-list=deny dst-port=80

на дефолтном виртуалхосте сервера на которй происходит перенаправление пользователя из Mikrotik, должен висеть JS редирект вида:

<script type="text/javascript">
<!--
window.location = "http://статистика_пользователя"
//-->
</script>
microtik.txt · Последние изменения: 2013/06/24 13:17 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki