Инструменты пользователя

Инструменты сайта


microtik

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
microtik [2013/04/30 13:36]
nightfly
microtik [2013/06/24 13:17] (текущий)
nightfly
Строка 1: Строка 1:
 +====== Эта реализация считается устаревшей и не поддерживается с релиза 0.4.3 ====== ​
 +**используйте [[mikrotikapi|Управление MikroTik через API]]**
 +
 +====== Использование 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**
 +<​code>​
 +# 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"​
 +</​code>​
 +\\
 +**/​etc/​stargazer/​OnDisconnect**
 +<​code>​
 +# 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}]"​
 +</​code>​
 +
 +===== Настройка сенсора 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 пользователям со стороны сервера.\\
 +{{ :​mtdhcprelay.png?​ |}}
 +
 +===== Управление 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):\\
 +
 +<​code>​
 +NASTYPE=`/​etc/​stargazer/​GetNasType ${LOGIN}`
 +if [ "​$NASTYPE"​ = "​mtdirect"​ ]
 +then
 +# здесь обработка событий OnConnect/​OnDisconnect на Mikrotik ​ (см. Выше)
 +fi
 +
 +</​code>​
 +
 +===== Редирект на страницу пользователя =====
 +
 +<​code>​
 +/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
 +</​code>​
 +
 +на дефолтном виртуалхосте сервера на которй происходит перенаправление пользователя из Mikrotik, должен висеть JS редирект вида:
 +<code php>
 +<script type="​text/​javascript">​
 +<!--
 +window.location = "​http://​статистика_пользователя"​
 +//-->
 +</​script>​
 +</​code>​
  
microtik.txt · Последние изменения: 2013/06/24 13:17 — nightfly