Tuesday, March 28, 2017

Практика настройки Mikrotik для чайников

Подготовка


Все описанное тестировалось на RouterBOARD RB 951G-2HnD, но может служить инструкцией по конфигурации любого устройства на базе RouterOS 6.25 и выше. Для конфигурации устройства вам потребуется фирменная утилита winbox (для windows), либо mactelnet-client (для linux), конечно у RouterOS есть telnet/http/ssh, но пока про них забываем.

Подключаем ПК к пятому порту Mikrotik(вообще можно использовать любой, кроме первого), переворачиваем устройство и видим на наклейке со штрих-кодом диапазон mac адресов, последний относится к пятому порту, вводим его в окно подключения winbox, либо используем как аргумент mactelnet. Пользователь admin, пароль отсутсвует.

Появится предложение: сохранить базовую конфигурацию, либо обнулить устройство. Выбираем [Remove Configuration]. Устройство перезагрузится.



Добавление пользователя


Первым делом создаем нового пользователя и удаляем admin'а, да об этом все забывают.

Переходим: [System]➙[Users]➙[+].
Name: логин;
Group: full(полный доступ);
Password: пароль;
Confirm Password: пароль еще раз.
Подтверждаем нажатием на [Ok].
В таблице с пользователями выделяем admin и нажимаем [].




Консольная версия

Отключаемся и заходим на устройство под новым пользователем.

Настройка провайдера


Провайдер будет подключаться в первый порт RouterBOARD, остальные четыре и беспроводной интерфейс отданы под домашнюю подсеть 192.168.10.0/24, адрес роутера в домашней подсети: 192.168.10.1, клиентам сети будут раздаваться адреса из диапазона 192.168.10.100-192.168.10.200.

Способы соединения с провайдером бывают различные, и если на физическом уровне у нас Ethernet (даже если он идет от xDLS-модема), то в качестве сетевых протоколов может быть IPoE (Static или DHCP), PPPoE, L2TP, PPTP или их комбинации (вообще PPTP, L2TP без настроенного IP работать не смогут), в добавок ко всему может быть привязка по mac адресу. Постараюсь рассмотреть наиболее частые случаи.

Но для начала переименовываем интерфейс ether1 в eth1-wan, для удобства: [Interfaces]➙[Ether1]➙[Name: eth1-wan]➙[OK].



Консольный вариант

Подключаем кабель провайдера в первый порт устройства.

Подмена mac-адреса


Не скажу, что все провайдеры используют привязку по mac, но встречаются такие довольно часто, особенно если используется IPoE для привязки IP и защиты от халявщиков.

Подмену можно совершить только через командный режим, так что нажимаем [New Terminal] и вводим:
/interface ethernet set eth1-wan mac-address=00:11:22:33:44:55

где 00:11:22:33:44:55 — mac зарезервированный у провайдера.

Автоматическое получение настроек средствами DHCP.


Наиболее простой вараиант: [IP]➙[DHCP Client]➙[+]➙[Interface: eth1-wan]➙[OK].



Консольный вариант


Статическая настройка IP


Тоже простой вариант, но потребуется уточнить у провайдера следующие параметры (значение указаны в качестве примера):
IP (ip адрес): 192.0.2.10;
mask (маска): 255.255.255.0(или /24);
gateway (шлюз): 192.0.2.1;
DNS1: 192.0.2.2;
DNS2: 192.0.2.3.
Добавляем IP на интерфейс: [IP]➙[Addresses]➙[+]➙[Address: 192.0.2.10/255.255.255.0; Interface: eth1-wan]➙[OK];
Добавляем default route: [IP]➙[Routes]➙[+]➙[Dst.Address:0.0.0.0/0; Gateway:192.0.2.1; Check gateway: ping; Distance: 1]➙[OK];
Добавляем DNS: [IP]➙[DNS]➙[Servers: 192.0.2.2; 192.0.2.3]➙[OK].







Консольный вариант


Настройка PPPoE


PPPoE — туннельный протокол для которого не требуется предварительная настройка IP. Конечно, у провайдера может быть пиринг с другими сетями или доступ в свою сеть без ограничения по скорости, которые работают вне PPPoE интерфейса и требуют добавления отдельного маршрута (DualAccess или Russian PPPoE в SOHO роутерах), но подобная конфигурация выходит за рамки HOWTO для начинающих.

Для конфигурации PPPoE потребуется узнать логин и пароль для подключения к сети (обычно выдаются при заключении договора).

Добавляем туннельный интерфейс: [PPP]➙[+]➙[PPPoE Client].

На вкладке [Genaral] указываем имя интерфейса Name=tap1-wan и интерфейс провайдера Interface=eth1-wan.

На вкладке [Dial Out] указываем логин и пароль для подключения, остальные опции по скриншотам.





Консольный вариант

Важно: Если вы используете PPPoE, то в дальнейшем используйте вместо eth1-wan интерфейс tap1-wan.

Настройка L2TP/PPTP


Вот мы и подошли к самому богатому на подводные камни способу подключения. Оба протокола настраиваются схожим образом, но требуют предварительной настройки IP (средствами DHCP, либо статически). Проблема mikrotik в том, что задав адрес сервера доменным именем, он распознает его в адрес один раз и будет использовать только данный адрес, если адрес поменяется (либо провайдер использует RoundRobin DNS и сервер будет перегружен), то велика вероятность остаться без интернета. Со стороны провайдера тоже могут быть забавные вещи, например DNS сервера доступные только из локальной сети, либо необходимость заранее прописать статический маршрут до сервера PPTP/L2TP, если вам посчастливилось стать клиентом желто-полосатого провайдера, можете смело скачивать и изучать соответствующую инструкцию. Вариант с DualAccess L2TP/PPTP тоже возможен.

Но будем считать, что у вас все хорошо, IP адрес получили средствами DHCP, узнать у провайдера: логин, пароль и сервер vpn, можно приступать к настройке.

Добавляем интерфейс PPTP/L2TP: [PPP]➙[+]➙[PPTP Client или L2TP Client].
На вкладке [General] указываем имя подключения: Name=tun1-wan.
На вкладке [Dial out] указываем сервер PPTP или L2TP, логин и пароль.


Консольный вариант

Важно: Если вы используете L2TP/PPTP, то в дальнейшем используйте вместо eth1-wan интерфейс tun1-wan.

А как-же Yota?


А просто. Если вам попался USB модем, то скорее всего он будет определяться как ethernet интерфейс в [Interfaces]➙[LTE] и достаточно забирать с него IP средствами DHCP. Но для первичной активации модем придется подключить к ПК. Не знаю со всеми моделями модемов так или мне попался неудачный, но без предварительной активации на ПК работать он отказывался.

Другие 3G/4G модемы


Если модем не определяется как сетевая карта, но Mikrotik его видит в [System]➙[Resources]➙[USB], то потребуется создать PPP подключение для интерфейса usb1, в некоторых ситуациях устройство необходимо прежде перевести в режим модема AT командой(ищите на соответствующих форумах). В любом случае вариантов великое множество, один из них описан здесь.

Подготовка интерфейсов для локальной сети


На данный момент интерфейсы ether2-ether5 и wlan1 работают независимо друг от друга, их необходимо объединить в единую среду передачи данных.

Ethernet интерфейсы можно объединить на аппаратном уровне, что повысит скорость передачи данных и снизит нагрузку на CPU (по сравнению с программным мостом). В качестве master port будет использоваться ether5, можно назначить любой, но если появится еще один провайдер, то логично будет подключить его во второй порт (и отключить на нем master port).

Переименовываем ether5 в eth5-lan: [Interfaces]➙[ether5]➙[Name: eth5-lan]➙[OK];
Переименовываем ether2-ether4 и устанавливаем для них master port: [Interfaces]➙[ether2-4]➙[Name: eth2-4-lan; Master Port=eth5-lan]➙[OK].




Консольный вариант

Интересный момент. Средствами master port можно объединить интерфейсы принадлежащее одному чипсету, на старших моделях чипсетов может быть несколько (колонка switch), интерфейсы с разных чипсетов объединяются через программный Bridge, ну или пачкордом.

Теперь все локальные Ethernet интерфейсы объединены под именем eth5-lan.

Wireless интерфейс существует отдельно от Ethernet, для объединения потребуется прибегнуть к программному мосту (bridge).

Создаем интерфейс моста: [Bridge]➙[+]➙[Name: br1-lan]➙[OK];
Добавляем интерфейсы: [Bridge]➙[Ports]➙[+]➙[Interface: eth5-lan; Bridge: br1-lan]➙[OK]
[Bridge]➙[Ports]➙[+]➙[Interface: wlan1; Bridge: br1-lan]➙[OK]







Консольный вариант

Теперь все локальные Ethernet и wlan интерфейсы объединены под именем br1-lan.

Безопасность беспроводной сети


Вещь муторная(точнее муторно ее описывать), но необходимая.

Добавляем профиль безопасности и указываем пароль для беспроводного подключения: [Wireless]➙[Security Profiles]➙[+]
Name — название профиля;
WPA/WPA2 Pre-Shared Key — ключи для WPA/WPA2(пароль от wi-fi);
Остальное по скриншоту, в завершении [OK].


Консольный вариант


Активируем и настраиваем беспроводной интерфейс: [Wireless]➙[wlan1]➙[Enable].
На вкладке [Wireless]:
Mode: ap bridge;
Band: 2gHz-B/G/N. Если ваши беспроводные девайсы выпущены несколько лет назад, то логичнее выбрать 2gHz-B/G.;
Frequency: auto. В SOHO устройствах этот параметр называется Канал соответствие можно посмотреть по ссылке. Если не уверены что выбрать, оставляйте auto.;
SSID: Название точки доступа;
Wireless Protocol: 802.11;
Securiity Profile: wpa2-protect. Профиль созданный на предыдущем шаге.;
Bridge Mode: enabled;
Default Authenticate: yes;
Default Forward: yes;
Hide SSID: no. Можно скрыть точку доступа. Но не стоит считать это панацеей.;
Далее вкладка [Nstreme].
Отключаем все.

Как закончили, нажимаем [Ok] и пробуем подключиться (ip телефон не получит, но подключение должно установиться). 







Консольный вариант


Настройка ip, dhcp-server


Добавляем ip на интерфейса br1-lan: [IP]➙[Addresses]➙[+]➙[Address: 192.168.10.1/24; Interface: br1-lan]➙[OK]



Консольный вариант


Создаем пул адресов для dhcp: [IP]➙[Pool]➙[+]➙[Name: dhcp-pc; Addresses:192.168.10.100-192.168.10.200]➙[OK]



Консольный вариант


Включаем прослушку dhcp-запросов на интерфейсе br1-lan: [IP]➙[DHCP Server]➙[+]➙[Name: dhcp-pc; Interface: br1-lan; Lease Time: 08:00:00; Address Pool: dhcp-pc]➙[OK]



Теперь надо определиться какие параметры будут отдаваться по dhcp: [IP]➙[DHCP Server]➙[Networks]➙[+]
Address: 192.168.10.0/24;
Gateway: 192.168.10.1;
Netmask: 24;
DNS Servers: 192.168.10.1.
По окончанию [Ok].



На скриншоте в качестве NTP сервера указан адрес роутера, но в базовой поставке раздавать точное время Mikrotik не умеет, можно указать любой другой сервер из сети, либо добавить и настроить пакет ntp(описано в конце HOWTO).

Консольный вариант


Настройка сервера доменных имен


Если вас не устраивают DNS от провайдера можно добавить в список свои (можно полностью убрать провайдерские DNS выключив опцию Use peer DNS в соответствующих подключениях).

Включаем прослушку DNS запросов: [IP]➙[DNS]➙[Allow Remote Requests: yes]➙[OK]



Консольный вариант

Теперь локальная сеть работает, перезапускам сетевой интерфейс (или dhcp-клиент) для получения ip от роутера и можно использовать для подключения по winbox/http/ssh/telnet/ftp/scp ip:192.168.10.1.

Между устройствами в локальной сети появилось связь, при попытке сделать ping до любого ресурса распознается его адрес, но доступ в интернет все еще отсутствует. Пришло время для последнего крупного пункта: настройки пакетного фильтра.

Пакетный фильтр


RouterOS является разновидностью ОС GNU/Linux, в качестве пакетного фильтра применяется netfilter, не могу сказать работает интерфейс напрямую с модулем ядра или с с использованием iptables, но разработчики постарались сделать синтаксис максимально приближенный к последнему.

Дабы не описывать каждую команду отдельно давайте немного разберемся. Пакетный фильтр настраивается в [IP]➙[Firewall], нас будут интересовать вкладки (таблицы в терминологии iptables) [Filter],[Nat] и [Mangle]. В каждую таблицу можно добавить ряд правил (как и везде кнопкой [+]), правила обрабатываются поочередно сверху вниз, поэтому порядок важен. Каждое правило состоит из Условий, разнесенных по трем вкладкам: General, Advanced, Extra и Действия, вкладка Action, есть еще статистика работы правила, но она нам не интересна. Правило может содержать множество условий, главное не делать их противоречивыми. Если проходя по правилам пакет подходит под все условия, он обрабатывается соответствующим действием и дальше не идет (на самом деле некоторые действия пропускают пакет дальше, просто запомните этот факт если планируете в будущем глубже разобраться с netfilter). В варианте для новичков нам будет достаточно условий из Вкладки General.



Какие будут настройки? У пользователей из локальной сети появится доступ в интернет. Доступ на mikrotik из локальной сети будет ограничен используемыми службами(web, winbox, ssh, dns, ntp), из внешней сети будет открыт доступ по web, но с измененным адресом порта на 9999.

Все необходимые правила описаны в виде таблиц, если боитесь ошибиться или просто лень, открывайте [New terminal] и копируйте в него строки из консольного варианта в конце раздела.

Вкладка [Filter]


УсловияДействие
#ChainSrc. AddressDst. AddressProtocolDst.PortIn. IterfaceOut. InterfaceConnection MarkConnection State
0Inputicmpaccept
1Input192.168.10.0/24tcp80,8291,22br1-lannewaccept
2Inputtcp80eth1-wanallow_innewaccept
3Input192.168.10.0/24udp53,123br1-lannewaccept
4Inputestablished,relatedaccept
5Output[!]Invalidaccept
6Forward192.168.10.0/24br1-laneth1-wannew, establishedaccept
7Forward192.168.10.0/24eth1-wanbr1-lanestablished,relatedaccept
8Inputreject
9Outputreject
10Forwardreject

Вкладка [NAT]

УсловияДействие
#ChainSrc. AddressProtocolDst.PortIn. IterfaceOut. Interface
0srcnat192.168.10.0/24eth1-wanmasquerade
1dstnattcp9999eth1-wanredirect
To ports: 80

Вкладка [Mangle]

УсловияДействие
#ChainProtocolDst.PortIn. IterfaceConnection State
0preroutingtcp9999eth1-wannewmark connection
New Connection Mark: allow_in

Консольный вариант

Теперь интернет должен быть доступен, если вам этого достаточно то закрывайте HOWTO и пользуйтесь, если хотите узнать больше дальше пойдет рад дополнений.

Дополнение 1. Имя устройства


Даем устройству имя: [System]➙[Identity]➙[Name: MikRouter]➙[OK]
И задаем его в dns: [IP]➙[DNS]➙[Static]➙[+]➙[Name: mikrouter; Address:192.168.10.1]➙[OK]
Теперь к устройству можно обращаться по доменному имени mikrouter, но только из локальной подсети.
Консольный вариант


Дополнение 2. Настройка времени


Настраиваем часы: [System]➙[Clock]➙[Time]➙[Time Zone Name: Часовой пояс; Time: Текущее время; Date: Текущая дата]➙[OK]

Дополнение 3. Обновление


Обновляем устройство и добавляем пакеты.

Заходим на сайт Mikrotik и загружаем архив с обновлениями (Extra Packages) для своего роутера. Распаковываем и оставляем следующие (6.30.2 — актуальная версия на момент написания, обновления выходят достаточно часто):
advanced-tools-6.30.2-mipsbe.npk
dhcp-6.30.2-mipsbe.npk
multicast-6.30.2-mipsbe.npk
ntp-6.30.2-mipsbe.npk
ppp-6.30.2-mipsbe.npk
routing-6.30.2-mipsbe.npk
security-6.30.2-mipsbe.npk
system-6.30.2-mipsbe.npk
user-manager-6.30.2-mipsbe.npk
wireless-6.30.2-mipsbe.npk

В Winbox открываем [Files] и перетаскиваем средствами drag'n'drop указанные выбранные пакеты(в качестве альтернативы можно загрузить через web-интерфейс, либо по ssh средствами scp).

Для обновления достаточно перезагрузить устройство: [System]➙[Reboot]➙[Yes]
Консольный вариант перезагрузки

В дальнейшем для обновления не обязательно загружать пакеты:[System]➙[Packages]➙[Check for updates]➙[Channel: current]➙[Download&Install]
Консольный вариант


Дополнение 4. Настройка ntp


В предыдущих дополнениях мы настроили часы и добавили пакет NTP, теперь его необходимо настроить.

Включаем ntp-client и задаем адреса серверов (можно задать свои любимые) точного времени: [System]➙[NTP Client]➙[Enabled: yes; Primary: 48.8.40.31; Secondary:91.206.16.4]➙[OK]
Включаем прослушку ntp запросов: [System]➙[NTP Server]➙[Enabled: yes]➙[OK]



Консольный вариант


Дополнение 5. Отключаем лишние службы


Оставим winbox/http/ssh, остальные можно будет включить при необходимости: [IP]➙[Services] выделяем как на скриншоте и нажимаем [x].



Консольный вариант


Дополнение 6. Отключаем обнаружение и ограничиваем доступ по mactelnet


В winbox есть средства обнаружения устройств находящихся в одной физической сети с ПК, это удобно, но зачем соседям знать что у нас за устройство?

Отключаем: [IP]➙[Neighbor]➙[Discovery Interfaces]. Можно оставить обнаружение для br1-lan (локальная сеть), можно убрать на ваш выбор. Для новых интерфейсов обнаружение включено по умолчанию, не стоит от этом забывать.
Консольный вариант


Теперь ограничим доступ по mac-адресу(winbox и mactelnet): [Tools]➙[MAC Server]➙[Telnet Interfaces]
Отключаем([x]all и добавляем br1-lan.
Переходим в [Winbox Interfaces] и повторяем.

Консольный вариант


Дополнение 7. Включаем UPnP


Многие p2p приложения и online игры требуют UPnP (служба динамического открытия портов) для нормальной работы.

Включаем: [IP]➙[UPnP]➙[Enabled: yes]
Добавляем интерфейсы: [Interfaces]➙[+]
External: eth1-wan;
Internal: br1-lan.
Консольный вариант


Дополнение 8. Оверклокинг


Если число устройств в сети возросло настолько, что роутер перестал справляться, можно немного разогнать процессор: [System]➙[RouterBOARD]➙[Settings]➙[CPU Frequency: 750 MHz]

Для RB 951G — это максимальная частота работы CPU.

Консольный вариант

Дополнение 9. Резервная копия настроек


Бекап настроек никогда не будет лишним: [Files]➙[Backup]
Name: имя файла (без расширения);
Password: пароль (если не указывать будет использован пароль от пользователя);
Don't Encrypt: если нет необходимости шифровать бекап.
Консольный вариант
/system backup save name=router6.30.2 dont-encrypt=yes


Для восстановления достаточно скопировать файл на другое устройство(желательно той-же серии и с той-же версией RouterOS).
Зайти в [Files]➙[Restore] и выбрать файл.
Консольный вариант
/system backup load name=router6.30.2.backup


P.S. Если примут, напишу продолжение HOWTO про практику настройки резервирования и прочие хитрости с RouterOS.

Friday, January 13, 2017

Mikrotik OpenVPN in 90 seconds

In my case I wanted to use a Mikrotik RB750 with the PPP package installed and the OpenVPN client for MacOS, Tunnelblick.  My RouterOS software version is 6.34.3, current at the time of writing.  My OpenVPN client software is Tunnelblick, 3.5.8 (which incorporates OpenVPN 2.3.6).
The idea is to create a VPN into my home network, accessed from the Internet.  I started by reading the Mikrotik OpenVPN documentation:
Then I looked at the easy_rsa scripts that come with OpenVPN, on my Mac (this would be an alternate source for key pairs and certificate artifact generation):
Between the two I managed to gain an understanding and get it running using the Mikrotik for key and certificate generation.  I captured my implementation steps, complete with an OpenVPN template configuration you can reuse.
There are three main tasks:
  • Create encryption artifacts (files) used to establish SSL / TLS connections
  • Configure a OpenVPN / PPP profile in the VPN server 
  • Configure an OpenVPN profile on the client

Encryption Artifacts

First we ssh into the Mikrotik router and create our own Certification Authority (CA) named "myCa".  
I used my Mikrotik router's inside LAN IP address for the ca-crl-host.  I'm not planning a CRL server for this use case.
[admin@MikroTik-gw] >/certificate
[admin@MikroTik-gw] /certificate> add name=myCa common-name=myCa key-usage=key-cert-sign,crl-sign
[admin@MikroTik-gw] /certificate> sign myCa ca-crl-host=192.168.1.1 name=myCa
Now export the CA certificate, download and save the .crt file.
You will use this file and two others later when creating the .ovpn (OpenVPN) client configuration.
[admin@MikroTik-gw] /certificate> export-certificate myCa
Now we create a private and public key pair for the VPN Server followed by another key pair for the VPN Client:
[admin@MikroTik-gw] /certificate> add name=VPNserver common-name=server
[admin@MikroTik-gw] /certificate> add name=VPNclient1 common-name=client1
We need to sign both public keys with our new CA:
[admin@MikroTik-gw] /certificate> sign VPNserver ca=myCa name=server
[admin@MikroTik-gw] /certificate> sign VPNclient1 ca=myCa name=client1
Export the VPN Client's private key and public key+certificate files.
The following command creates two files which you need to download and save for use later (when creating the .ovpn OpenVPN client configuration file).
[admin@MikroTik-gw] /certificate> export-certificate export-passphrase=mysecret client1
To check your work, first check your Mikrotik certificates and look for the "KLAT" on the CA certificate and "KA" flags on the client and server entries.  These entries represent a tuple of Private Key, Public Key and CA-signed Certificate.  Yes, the "myCa" CA certificate is "self-signed".
[admin@MikroTik-gw] /certificate> print
Flags: K - private-key, D - dsa, L - crl, C - smart-card-key, A - authority, I - issued, R - revoked, E - expired, T - trusted
#          NAME                            COMMON-NAME                         SUBJECT-ALT-NAME                                                      FINGERPRINT 0 K L A  T myCa                            myCa                                                                                                      c9c129cb1b7...
 1 K   A    server                          server                                                                                                    03883a34bdc...
 2 K   A    client1                         client1                                                                                                   a67a988df5e...
Now go to the Files section of the Mikrotik Web GUI, or sftp to your Mikrotik.
You should see:
cert_export_client1.crt
cert_export_client1.key
cert_export_myCa.crt

VPN Server Configuration

Adding a PPP profile to the Mikrotik enables a VPN Server endpoint for one or more VPN Clients.
The OpenVPN solution appears to be a PPP connection over an encrypted TLS (SSL) connection.
In this case I will choose AES256 for my session encryption, SHA1 for session message authentication and I will use 2048 bit RSA private keys as the basis for the client and server certificates.
This use case assumes a simple home network where the 192.168.1.0/24 TCP/IP network exists and the Mikrotik router is the gateway to the Internet.  We will add a second network number for use by the VPN clients, since this is an IP-based VPN.
On this network we will assign IP addresses for an IP address pool to be used by VPN Clients; it is a small range of addresses from 192.168.2.10 to 192.168.2.19.  This synthetic network will exist virtually, inside the Mikrotik router and appears to be defined via the /PPP Profile and the /interface openvpn-server server commands.
Our Mikrotik router is the default route to the WAN (Internet) and on 192.168.1.1 for its internal LAN interface.  For the VPN Client's synthetic network (192.168.2.0/24) our VPN Server will present itself as 192.168.2.1 to the VPN Client.
First create the PPP profile and IP address pool:
[admin@MikroTik-gw] > /ip pool add name=ovpn-pool range=192.168.2.10-192.168.2.19
[admin@MikroTik-gw] > /ppp profile add name=ovpn local-address=192.168.2.1 remote-address=ovpn-pool
Add our "client1" user with "second factor secret" (the certificate embedded in the .ovpn file will be the other factor):
[admin@MikroTik-gw] > /ppp secret add name=client1 password=mysecret profile=ovpn
Create a synthetic interface in the Mikrotik representing the VPN Server endpoint on the synthetic VPN Client network, then associate it with the VPN Client IP pool:
[admin@MikroTik-gw] > /interface ovpn-server server set enabled=yes certificate=server auth=sha1 cipher=aes256 port=1194 netmask=24 require-client-certificate=yes mode=ip
OpenVPN Client Configuration
Each OpenVPN user (VPN Client) needs their own distinct .ovpn configuration file.
In this use case we will configure only a single client.
The client1.ovpn file follows.  Make four substitutions in your version of this template.
  • Change 11.12.13.14 to your public IP address (or maybe hostname) for your Mikrotik router.
  • In the <ca> section below, replace with your CA certificate text. 
  • In the <cert> section, replace with your VPN Client Certificate text. 
  • In the <key> section, replace with your unprotected VPN Client Private Key text.
Optionally, if you run your own DNS server on your home network, you may want to make an additional substitution.
  • Change 8.8.8.8 to the IP address for your home network DNS server, somewhere on 192.168.1.0/24 in this example.
    Potentially, this could be your Mikrotik router (192.168.1.1 in this example), if you enabled the DNS service there.
To get the unprotected (non-encrypted) Private Key text from the password-protected VPN Client Private Key file you downloaded earlier, run the following from a UNIX shell prompt where you have access to openssl:
openssl rsa -in cert_export_client1.key -text
You can copy/paste the following to create an initial .ovpn file for the four substitutions/edits above:
cat > client1.ovpn << _END_
client

# this is a layer 3 (IP) VPN
dev tun

# Mikrotik only supports TCP at the moment
proto tcp

# put your VPN Server's routable (WAN or Internet-accessible) IP address here
remote 11.12.13.14 1194

resolv-retry infinite
nobind

# Mikrotik does not support link compression at the moment
#comp-lzo

persist-key
persist-tun
#mute-replay-warnings

# OpenVPN client debug log verbosity
verb 1
#verb 3
#verb 6

#cipher BF-CBC
#cipher AES-128-CBC
#cipher AES-192-CBC
cipher AES-256-CBC

#auth MD5
auth SHA1

# Mikrotik's PPP server requires username/password authentication
# at the moment and it uses this in conjunction with both client and
# server-side x.509v3 certificate authentication
auth-user-pass

# domain name for home LAN
dhcp-option DOMAIN your.home.domain.name

# DNS server (replace with your own)
dhcp-option DNS 8.8.8.8

# SMB WINS name server if you have one
#dhcp-option WINS 192.168.1.1

# route to multiple networks
route 192.168.0.0 255.255.0.0


# Mikrotik accepts a CA cert
<ca>
-----BEGIN CERTIFICATE-----
BAMMBG15Q2GgAwIBAgIIfp+KAYv5zqIwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE
...
urKNm8k8KGt9ur15zL22C0YeYfef4H0BTAvuwOMgIOWzw5k0By==
-----END CERTIFICATE-----
</ca>

# Mikrotik expects a VPN Client Certificate
<cert>
-----BEGIN CERTIFICATE-----
G6kUxIYCx9cGbwAZMv8OtHnu2R+pk0A/cxg1ReYcp161Wed0bir0MIIDTTCCAjWg
...
c7OYas3x1DE2kJYQ8Z8ZakSXVBq8WScUa
-----END CERTIFICATE-----
</cert>

# OpenVPN Client needs the VPN Client Private Key to decrypt
# info sent by the server during the SSL/TLS handshake
<key>
-----BEGIN RSA PRIVATE KEY-----
PF85doECgYEA8b1fuDTh17NLzXPxDG9O4LilGzQX7AEPiY8gOfk1iQrrlcvvFeS7
...
F8nyWXTcXD74Ygj/CXxirR+Q3w==
-----END RSA PRIVATE KEY-----
</key>

_END_

Как заблокировать сайт микротиком

Популярная серия бюджетных маршрутизаторов из Латвии на базе RouterOS предоставляет пользователям широкие возможности по настройке. Сегодня я подробно рассмотрю возможности mikrotik по блокировке сайтов, рекламы, социальных сетей, по созданию списка запретов на доступ. Все эти средства присутствуют в роутерах из коробки и не требуют специальных знаний для настройки, кроме стандартных средств управления.
mikrotik блокировка сайтовНачнем с самого простого. У нас есть роутер Mikrotik, утилита winbox и желание конкретному пользователю установить запрет на посещение определенного сайта. Подключаемся к роутеру и идем в раздел IP -> Firewall, открываем закладку Filter Rules:
Нажимаем на + и добавляем новое правило блокировки сайта:
добавление правила запрета
На первой вкладке General заполняем:
  1. Указываем цепочку Forward.
  2. Указываем адрес пользователя, которому будет закрыт доступ к сайту.
  3. Выбираем протокол TCP.
Дальше переходим на вкладку Advanced:
правило для vk.com
В поле Content указываем адрес сайта, который нужно заблокировать, например vk.com. Переходим на вкладку Action:
mikrotik заблокировать сайт
Здесь выполняем следующие действия:
  1. В поле Action выбираем reject.
  2. В пункте Reject With указываем tcp reset.
  3. Нажимаем OK.
На этом основная настройка закончена. В данный момент правило по фильтрации сайта уже работает. Мы с помощью стандартных средств mikrotik смогли заблокировать vk.com. Это нетрудно проверить на клиенте. При попытке открыть адрес сайта популярной соц. сети он получит следующее сообщение в браузере chrome:
не открывается заблокированный сайт
В данном случае мы в ручном режиме сделали блокировку сайта конкретному пользователю. Если у вас таких сайтов и пользователей много, процесс надо по-возможности автоматизировать.

Черный список сайтов для фильтрации

Давайте создадим отдельно список сайтов и укажем его в правиле, чтобы не создавать запрет для каждого имени отдельно. Сделать это не сложно. Для этого опять идем в раздел IP -> Firewall, открываем вкладку Layer7 Protocols и нажимаем «+» для добавления списка:
добавление layer7 правила
В поле regexp необходимо ввести регулярное выражение для организации списка сайтов. Я сам лично не умею составлять правильно регулярные выражения, поэтому приходится их искать в интернете. Подавляющее большинство регулярок, которые я нашел, у меня не заработали. Привожу вам список видеохостинга для блокировки в виде регулярного выражения, которое заработало лично у меня:
^.+(youtube|rutube|smotri).*$
Список можно расширить, добавляя значения в скобках через знак вертикальной палки, что означает логическое «или».
После составления списка, включаем его в правило. Как создать правило я уже рассказал в первой части статьи. В данном случае отличие будет только в одном пункте:
подключение списка layer7

Вместо поля Content выбираем название нашего списка для блокировки video в поле Layer7 Protocol.
Если у вас настроен firewall на микротике и в нем присутствуют какие-то правила, то текущее правило блокировки нужно правильно разместить в списке, чтобы оно работало. Например, у меня есть материал на тему настройки firewall. Там есть правила:
Разрешаем установленные подключения
add chain=input action=accept connection-state=established
add chain=forward action=accept connection-state=established
Текущее правило блокировки списка сайта на основе Layer7 Protocol должно стоять выше этого правила, иначе оно не будет работать. Я не до конца понял, почему, но я провел достаточно много тестов, чтобы убедиться, что его реально надо ставить выше. Ну и, разумеется, оно должно стоять выше правила, разрешающего соединения forward из локальной сети.
В этом правиле блокировки в поле Src.Address вы можете указать конкретный ip пользователя, можете указать всю подсеть, либо вообще оставить поле пустым для запрета выхода на закрытые сайты всему транзитному трафику маршрутизатора, в независимости от его источника.
Вот как у меня выглядит список моих правил на фаерволе с учетом добавленного правила блокировки:
Список правил фаервола в микротике
Тут я блокирую доступ c тестового ip адреса. Все остальные правила похожи на те, что я описывал в своей статье по настройке простого фаервола на микротике, ссылку на которую я приводил выше.
Вы можете включить логирование заблокированных соединений с сайтами из списка на вкладке Action самого правила:
включение логов в правилах микротика
Mikrotik будет генерировать подобные логи:
текст логов запрета в mikrotik
Эти записи вы можете перенаправить на удаленный сервер для логов, чтобы потом анализировать статистику срабатывания правила. Для удобства, эти правила можно разделить по сайтам, по пользователям и т.д. В общем, поле для контроля работы правила обширное.

Запретить социальные сети в mikrotik

Так как мы научились составлять списки для блокировки сайтов, на основе этой информации легко закрыть доступ в социальные сети одним правилом. Для этого как и ранее добавляем регулярное выражение со списком соц сетей:
закрытие социальных сетей
Текст регулярки:
^.+(vk.com|vkontakte|odnoklassniki|odnoklasniki|facebook|ok.ru).*$
Дальше создаем правило, как мы это делали выше и выбираем список, который только что добавили:
regexp правило для социальных сетей
Выбираем как и ранее адреса источников для блокировки и добавляем правило. Все, этого достаточно для того, чтобы заблокировать социальные сети у пользователей. А включив логи, сможете еще и следить за тем, кто время от времени пытается в них зайти.

Блокировка рекламы средствами mikrotik

С помощью изученного средства по ограничению доступа к сайтам достаточно просто блокировать рекламу. Для примера рассмотрим вариант по блокировке рекламы в Skype. Так как я знаю адреса серверов, куда скайп лезет за рекламой, я могу его заблокировать в mikrotik. У меня есть список:
rad.msn.com
apps.skype.com
vortex-win.data.microsoft.com
settings-win.data.microsoft.com
Это адреса, откуда загружается реклама. Списки эти могут меняться время от времени, нужно периодически проверять и обновлять. Самому подготовить список рекламных адресов для конкретного сервиса можно, к примеру, с помощью настройки собственного dns сервера и включения логирования запросов.
Дальше как обычно создаем regexp выражение для списка адресов:
^.+(rad.msn.com|apps.skype.com|vortex-win.data.microsoft.com|settings-win.data.microsoft.com).*$
Добавляем новое правило, подключаем к нему список, созданный ранее и наслаждаемся работой скайпа без рекламы.