Сега ще се постараем да изградим рутер с най-често използвани варианти. За целта ни е необходима връзка към доставчик на Internet и връзка от рутера към някой от клиентите/вътрешната мрежа. Схемата която ще проиграем е следната:
Като за начало изграждаме достъпа до Интернет. Връзката ще се осъществи на порт 1. Връзката може да бъде най-различна, като вариантите са: - IPoE (статично или чрез DHCP) - PPPoE - L2TP - PPTP - комбинация от гореспоменатите, L2TP и PPTP не могат да работят без настроено IP. Преименуваме интерфейса ether1 в eth1-wan. Interfaces / Ether1 / Name: eth1-wan / OK
Ако пък ползвахме конзола, то командата щеше да изглежда така:
/interface ethernet set [find default-name=ether1] name=eth1-wan
Убеждаваме се, че кабела е включен към провайдера и към порт 1. Следва един много тънък момент. Провайдерите имат навика да си защитават мрежата, като свързват MAC адреса на клиента с IP адреса който му се дава. За целта избираме си MAC който ще го помним и дори да се налижи да сменим рутера пак ще може да ползваме достъпа до провайдера защото си знаем MAC-a.
Избираме MAC-a да ни е:
/interface ethernet set eth1-wan mac-address=00:11:22:33:44:55
Най-простия вариант е доставчика на Интернет да Ви даде настройките посредством DHCP. IP / DHCP Client / + / Interface: eth1-wan / OK
А ако трябваше да се пише през конзола то:
/ip dhcp-client add interface eth1-wan disabled=no
Също не сложен вариант, който се ползва много често. За примера, доставчика ни казва следното: - IP: 192.0.2.10; - mask: 255.255.255.0 или /24; - gataway: 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;
Добавяме шлюз по подразбиране: 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
А ако трябваше от команден ред трите неща да се опишат наведнъж то:
/ip address add address=192.0.2.10/255.255.255.0 interface=eth1-wan /ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 check-gateway=ping distance=1 /ip dns set servers=192.0.2.2,192.0.2.3
За целта се използва тунелен протокол PPPoE неизискващ предварителна настройка на IP. За конфигурацията на PPPoE трябват име за свързване и парола, които обикновено се дават от провайдера. Добавяме тунелен интерфейс: PPP / + / PPPoE Clinet
В отдела General указваме името на интерфейса Name: tap1-wan и интерфейса свързан с поровайдера Interfaces: eth1-wan. В отдела Dial Out указваме името и паролата.
А ако ползвахме теминал то:
/interface pppoe-client add interface=eth1-wan name=tap1-wan disabled=no user=логин password=пароль use-peer-dns=yes add-default-route=yes default-route-distance=0
Важно: При използване на PPPoE реално интерфейса е tap1-wan, а не eth1-wan
Това е начина с най-много подводни камъни. Примерно имате IP обвързано с име от DNS-a. To mikrotik разпознава името само един път и получава адреса. И сега ако адреса се промени или провайдера ползва RoundRobin DNS и сървъра се претовари, то има голяма вероятност да останем без Интернет. Като цяло всичко е много забавно и от страна на провайдера, но да считаме, че имаме стабилен IP адрес, знаем името, паролата и VPN сървъра. Настройката става по следния начин. - добавяме интерфейс PPTP/L2TP: PPP / + / PPTP Client или L2TP Client
В отдела General дефинираме името Name: tun1-wan
В отдела Dial Out указваме сървъра PPTP или
Ако пък трябваше да се дефинира през конзола то щеше да изглежда така:
/interface pptp-client add name=tun1-wan disabled=no connect-to=сервер_vpn user=логин password=пароль add-default-route=yes default-route-distance=1 profile=default
Важно: Ако се използва L2TP или PPTP в бъдеще, вместо eth1-wan да се използва tun1-wan
Ако се използват 3G/4G модеми най-често се появяват като ethernet интерфейси. Могат са се проверят в: Interfaces / LTE. Обаче, ако не се определя като мрежова карта то тогава пробваме да го видим в: System / Resources / USB. Приемаме, че е на usb1. Пробваме да създадем PPP връзка за интерфейса usb1. Като цяло вариации много, това са най-честите случаи просто.
До сега всеки интерфейс беше отделен. Дефинирахме единия, който е свързан към доставчика на Интерне. Остават още 4 ether и един wlan. Ако приемем, че имаме не сложна мрежа от типа Интернет <=> Рутер <=> Локална мрежа, то единия интерфейс от рутера сочи към Интернет, а останалите ще се ползват във вътрешната мрежа. Ethernet интерфейсите могат да се обединят на апаратно ниво, за да се повиши скоростта на предаване на данни и да се намали натоварването на процесора/процесорите. Обединението можеше да се извърши и на ниво бридж но тогава натоварването е по-голямо. И така избираме ether5 да е водещ интерфейс. Преименуваме ether5 в eth5-lan: Interfaces / ether5 / Name: eth5-lan / OK
Портовете ether2-ether4 ги преименуваме на eth2-lan, eht3-lan и eth4-lan. За портовете ether2-ether4 казваме водещия порт да е eth5-lan Interfaces / ether2-ether4 / Master Port: eth5-lan
Внимание: това се прави на портове ether2, ether3 и ether4
Резултата е:
Ако ползвахме терминални команди то те щяха да са:
/interface ethernet set [find default-name=ether5] name=eth5-lan /interface ethernet set [find default-name=ether2] name=eth2-lan master-port=eth5-lan /interface ethernet set [find default-name=ether3] name=eth3-lan master-port=eth5-lan /interface ethernet set [find default-name=ether4] name=eth4-lan master-port=eth5-lan
Интересен момент: посредством master port може да се обединят няколко интерфейса които са собственост на един чипсет. На по-горни класове рутери с портове примерно 10 броя интерфейсите са разделени на 2 switch-a с 2 чипсета. Тогава имаме 2 мастер порта с 2 групи switch. 2-те групи се обединяват в бридж и така става един суич с много портове. Но това не е предмет на нашето занятие, само за информация.
Получаването на swithc посредством bridg е другия вариант. Създаваме мост: Bridge / + / Name: br1-lan / OK
Добавяме интерфейс: Bridge / Ports / + / Interface: eth5-lan, eth4-lan, eth3-lan и eth2-lan;
Това се повтаря за 4-те ethernet интерфейса.
Добавяме и интерфейса на wlan1 (wifi интерфейс)
Така в локалната мрежа ще се намират както ethernet интерфейси така и wifi.
В конзолен вариант командата ще изглежда така:
/interface bridge add name=br1-lan /interface bridge port add interface=eth5-lan bridge=br1-lan /interface bridge port add interface=wlan1 bridge=br1-lan
Особено внимание трябва да се отдели на безжичната мрежа, защото през нея много лесно се хаква локалната мрежа. Добавяме профил за безопасност и указваме парола за безжично включване: Wireless / Security Profiles / +
Name: wpa2-protect - име на профила WPA/WPA2 Pre-Shared Key - типа на ключа за защита на паролата за wifi
В конзолен вариант командата щеше да е:
/interface wireless security-profiles add name=wpa2-protected mode=dynamic-keys authentication-types=wpa-psk,wpa2-psk unicast-chiphers=aes-ccm group-chiphers=aes-ccm wpa-pre-shared-key=ключ_wpa wpa2-pre-shared-key=ключ_wpa2
Активираме и настройваме безжичния интерфейс: Wireless / wlan1 / Enable
В отдела Wireless
В отдела Nstreme изключваме всичко
И отново командите в конзолен режим:
/interface wireless set wlan1 disabled=no ssid=MyRouter mode=ap-bridge band=2ghz-b/g/n frequency=2412 bridge-mode=enabled wireless-protocol=802.11 security-profile=wpa2-protect default-authentication=yes default-forwarding=yes hide-ssid=no /interface wireless nstreme set wlan1 enable-nstreme=no enable-polling=no disable-csma=no
До тука създадохме възможност да клиента да се върже към локалната мрежа, обаче за админисгтратора е голяма досада всеки път да го питат какво трябва да ми е IP-то, маската, шлюза и куп още неща. За тази цел се грижи DHCP сървъра. Той ще раздаде всички необходими настройки на клиента, така че да може да работи в локалната мрежа безпроблемно. Даваме IP на интерфейса br1-lan: IP / Addresses / + / Address: 193.168.10.1/24; Interface: br1-lan / OK
Конзолен вариант на командата:
/ip address add address=192.168.10.1/24 interface=br1-lan
Създаваме масив от IP адреси които ще се раздават от DHCP сървъра: IP / Pool / + / Name: dhcp-pc; Addresses: 192.168.10.100-192.168.10.200 / OK
Конзолен вариант на комндата:
/ip pool add name=dhcp-pc ranges=192.168.10.100-192.168.10.200
Казваме 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 - рутера ще играе ролята на DNS сървър за клиентите.
И отново конзолен вариант на командата:
/ip dhcp-server add name=dhcp-pc interface=br1-lan lease-time=08:00:00 address-pool=dhcp-pc /ip dhcp-server network add address=192.168.10.0/24 dns-server=192.168.10.1 gateway=192.168.10.1 netmask=24/ip dhcp-server print Flags: D - dynamic, X - disabled, I - invalid # NAME INTERFACE RELAY ADDRESS-POOL LEASE-TIME ADD-ARP 0 X dhcp-pc br1-lan dhcp-pc 8h
DHCP сървъра е деактивиран, да го активираме:
/ip dhcp-server enable 0
enable 0 - защото когато проверихме дали е активен видяхме, че DHCP сървъра се подвизава под номер 0.
При настройката на DHCP указахме нашия рутер да играе ролята на DNS сървър. Това няма да е пълноправен DNS сървър с дефиниране на зони, А, МХ и т.н. записи, а ще е обикновен прокси DNS. За целта: IP / DNS / Allow Remote Requests: yes / OK
И както винаги терминална команда:
/ip dns set allow-remote-requests=yes
На практика клиентските машини вече могат да се свързват с локалната мрежа, получавайки IP, шлюз, DNS. Проблема е, че те могат да оперират само в локалната мрежа, ако искат да излезнат в Интернет или от там да се достпи някоя машина в локалната мрежа, това е невъзможно. За целта е необходимо да се дефинират филтриращи правила.
RouterOS е разновидност на Linux, използващ пакетния филтър netfilter. Синтаксиса който използва Mikrotik е много интуитивен. Самия пакетен филтър се настройва от: IP / Firewall. Вътре има много таблици но нас ни интерисуват: Filter, Nat и Mangle. Във всяка таблица може да се добавят правила, като обработката им става отгоре надолу последователно. Доста объркващо но ще се постараем с няколко примера да поясним работата. Ще използваме терминални команди, като ще се постараем да опишем всяка какво прави. В общи линии идеята е: - потребителите да ползват Интернет; - достъпа на микторик в локалната мрежа се ограничава до услугите (web, winbox, ssh, dns, ntp); - от външната мрежа се допуска само до услугата web но с изменение на порта на 9999. И така започваме с таблицата Filter.
/ip firewall filter add chain=input protocol=icmp add chain=input connection-state=new dst-port=80,8291,22 in-interface=br1-lan protocol=tcp src-address=192.168.10.0/24 add chain=input connection-mark=allow_in connection-state=new dst-port=80 in-interface=eth1-wan protocol=tcp add chain=input connection-state=new dst-port=53,123 protocol=udp src-address=192.168.10.0/24 add chain=input connection-state=established,related add chain=output connection-state=!invalid add chain=forward connection-state=established,new in-interface=br1-lan out-interface=eth1-wan src-address=192.168.10.0/24 add chain=forward connection-state=established,related in-interface=eth1-wan out-interface=br1-lan add action=drop chain=input add action=drop chain=output add action=drop chain=forward
Дефинирахме правилата за вътрешната мрежа, сега да разрешим ползването на Интернет и да пренасочим WEB трафика от порт 80 към 9999
/ip firewall nat add action=masquerade chain=srcnat out-interface=eth1-wan src-address=192.168.10.0/24 add action=redirect chain=dstnat dst-port=9999 protocol=tcp to-ports=80
И накрая да дефенираме таблицата Mangle:
/ip firewall mangle add action=mark-connection chain=prerouting dst-port=9999 new-connection-mark=allow_in protocol=tcp connection-state=new
Пакетния филтър е много мощен инструмент но за повече подробности, а и да се изпълняват повече функции ще се наложи да се прочете допълнителна литература.
Описваме ги тука, защото до сега някои от услугите не бяха пуснати или дефинирани, като DNS и т.н. Ще започнем със смяна на името на устройството: System / Identify / Name: MikRouter / OK. Описваме хоста после и в DNS-a: IP / DNS / Static / + / Name: mikrouter; Address: 192.168.10.1 / OK. В терминален режим щеше да изглежда командата така:
/system identity set name=MikRouter /ip dns static add name=mikrouter address=192.168.12.10
Вече ако потърсим рутера в мрежата по име то ще се подвизава като mikrouter.
Ползването на winbox е нещо много практично, обаче то има възможност да сканира мрежата и да показва всички налични рутери. Какъв е смисъла да показва рутера при условие, че е създаден и настроен от нас. По-добрия вариант е да указваме как да се влиза в него без да се вижда в мрежата. За целта трябва да спрем услугата mactelnet: IP / Neighbor Discovery Interfaces. Сега може да оставите интерфейса br1-lan или да го изтриете, лично аз го трия.
Както винаги командата в конзолен вид:
/ip neighbor discovery :foreach i in=[find] do={ set $i discovery=no }
Сега да ограничихме достъпа по mac-адреси (windbox и mactelnet): Tools / MAC Server / Telnet Interfaces. Махаме всички и добавяме br1-lan. Преминаваме в Winbox Interfaces и повтаряме същите стъпки.
Отново в конзолен вид командата:
/tool mac-server set [ find default=yes ] disabled=yes add interface=br1-lan /tool mac-server mac-winbox set [ find default=yes ] disabled=yes add interface=br1-lan
На практика позволяваме достъпа за управление до рутера само от локалната мрежа.
Много от приложенията като p2p а и online игрите изискват UPnP (служба за динамично откриване на портовете). Това се разрешава от: IP / UPnP / Enabled: yes Добавяме интерфейса: Interfaces / + / External: eth1-wan; Internal: br1-lan.
Командата в конзолен вид:
/ip upnp set enabled=yes /ip upnp interfaces add interface=eth1-wan type=external add interface=br1-lan type=internal
На пръв поглед маловажно нещо но животоспасяващо за администраторите. Не знам дали сте се сблискавали със следната ситуация. Работите нещо и оправяте даден проблем. На пръв поглед всичко върви нормално. Извършвате много операции и точно сте решили, че нещата са готови виждате, че нещо друго се е омазало. Решението е да върнете първоначалното състояние, но това са също толкова операции извършвани наново. Или друг случай: Идва нова версия на RouterOS. Слагате я и се чупи рутера. Какво е решението? Резервно копие на системата и настройките. Самия архив се прави от: Files / Backup В новоотворения прозорец се въвежда: Name: име на файла без разширението; Password: парола за архива; Don't Encrypt: ако няма необходимост от засекретяване на архива.
А в конзолен вид командата е:
/system backup save name=router6.30.2 dont-encrypt=yes
За възстановяване командата е:
/system backup load name=router6.30.2.backup
Или през графичната среда от: Files / Restore
Всичко това е един базисен вариант на изграждане на рутер. За в бъдеще ще разгледаме връзка между няколко рутера, динамични рутиращи протоколи и т.н.
Едно от важните условия да не бъдете хакнати е постоянното обновяване на рутера. На практика човек улисан в проблемите си не се грижи за това, а когато някой навреди вече е късно. В случая има оприя рутера сам да се обновява. За целта:
/system script add dont-require-permissions=no name=AutoUpdate owner=CCCP policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ system package update\r\ \ncheck-for-updates once\r\ \n:delay 1s;\r\ \n:if ( [get status] = \"New version is available\") do={ install }"
И в графичен режим: System / Scripts
Скрипта ще се погрижи да се изпълнят команди за обновяване на рутера, обаче трябва някой да каже кога да се изпълнят тези команди.
/system scheduler add interval=1d name=AutoUpdateShedule on-event=AutoUpdate policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ start-date=dec/05/2018 start-time=04:00:00
Съответно в графичен режим: System / Scheduler