Различия

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

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

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
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki