Jump to content
Калькуляторы

Базовая настройка сервера для внутреннего пользования и гостей, с двумя провайдарами обсуждение и правка моего скрипта

Доброго времени суток!!

Я новичок, так что правьте если что не так!!!!!

 

Этот скрипт проверен! Работает на версии Firmware 6,28, на других версиях, более старых, он немного изменяется, так что будем говорить только о 6,28

 

 

Я расписал его для доступности понимания всех людей, независимо от их подготовки и знаний unix

Как-то я столкнулся с проблемой - нужно было сделать роутер на 100 одновременных пользователей. При этом было два канала одного провайдера по 30 мб/с. Денег на покупку дорогого железа не было, и я открыл яндех. После приобретения RB2011UiAS я понял всю прелесть unix или RouterOS, это вещььььььььь

Вот пример моей наработки за пару недель!

 

После покупки и подключения к компу через первый порт качаем winbox

Находим свой микротик по адресу 192,168,88,1

 

Я ВСЕ КОМАНДЫ ВЫПОЛНЯЮ ЧЕРЕЗ НЬЮ ТЕРМИНАЛ, ЕСЛИ ВЫ НОВИЧОК, ТО И ВАМ СОВЕТУЮ К НЕМУ ПРИВЫКАТЬ!!!!!

 

 

Обновление software

выполняем в New Terminal следующую команду

system reset-configuration

 

Скачать прошивку, следующую за Вашей с http://www.mikrotik.com/download. Например, если у вас 3,ххх то качаем 4,ххх и обновляем, потом качаем 5,ххх и обновляем, и т.д.

после закачки файла открываем WINBOX-files и туда перетаскиваем мышкой скачанный файл, затем выполняем в New Terminal следующие команды,

system routerboard upgrade

system reboot

подтверждая их "Y"

 

Скрипт начальной настройки сервера

 

Замечание, знак } после него микротык не читает скрипт (Описание команды)

 

Настройка роутера на два суммируемых канала от разных провайдеров, или одного, зависит от вас:

Перед настройкой сбросить все в дефаулт!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

system reset-configuration

y

 

 

} Изменяем пользователей

 

/user

add group=full name=root password=654321

set admin group=read password=1234 comment=""

 

 

} Изменяем дату время, Europe/Samara это +4GMT

 

/system clock

set time-zone-autodetect=no time-zone-name=Europe/Samara date=may/11/2015

set time=00:20:00

 

} Изменяем комментарии на интерфейсах, чтобы не забыть их назначение

 

/interface ethernet

comment ether1 comment="LAN-SERVICE" } Сервисная сеть на 1 порту

comment ether2 comment="Sunnet1" } 1 провайдер порт 2

comment ether3 comment="Sunnet2" } 2 провайдер порт 3

comment ether4 comment="WAN3" } 3 провайдер порт 4 я не использую, далее это будет Komstar

comment ether5 comment="WAN4" } 4 провайдер порт 5 я не использую

comment ether6 comment="LAN-LOCAL1" } офисная локалка 1 порт 6 основной порт (для внутри сервисного свитча офисной сети)

comment ether7 comment="LAN-LOCAL2" } офисная локалка 2 порт 7 резервный порт (для теста офисной сети)

comment ether8 comment="LAN-GUEST1" } гостевая локалка 1 порт 8 основной порт (для внутри сервисного свитча гостевой сети)

comment ether9 comment="LAN-GUEST2" } гостевая локалка 2 порт 9 резервный порт (для теста гостевой сети)

 

} привязка второго (дублирующего) интерфейса к домашней, гостевой сетям

 

/interface ethernet

set ether7 master-port=ether6 } порт 6 + порт 7 офисная

set ether9 master-port=ether8 } порт 8 + порт 9 гостевая

 

} назначение ip адресов для наших интерфейсов

 

/ip address

comment numbers=0 comment="LAN-SERVICE" } Срвисная сеть на 1 порту

add address=192.168.13.62/24 interface=ether2 comment="Sunnet1" } 1 провайдер порт 2

add address=192.168.14.63/24 interface=ether3 comment="Sunnet2" } 2 провайдер порт 3

add address=192.168.0.1/24 interface=ether6 comment="LAN-LOCAL" } офисная локалка 1 порт 6+7

add address=192.168.1.1/24 interface=ether8 comment="LAN-GUEST" } гостевая локалка 2 порт 8+9

 

} Базовая защита маршрутизатора (входящие соединения на сам маршрутизатор)

 

/ip firewall filter

add chain=input connection-state=invalid action=drop comment="Drop invalid connection packets"

add chain=input connection-state=established action=accept comment="Allow established connections"

add chain=input connection-state=related action=accept comment="Allow related connections"

add chain=input protocol=udp action=accept comment="Allow UDP"

add chain=input protocol=icmp action=accept comment="Allow ICMP Ping"

add chain=input src-address=192.168.0.0/24 action=accept comment="Access to router only from LAN-LOCAL network" } (офисная)

add chain=input src-address=192.168.1.0/24 action=accept comment="Access to router only from LAN-GUEST network" } (Гостевая)

add chain=input src-address=192.168.88.0/24 action=accept comment="Access to router only from LAN-SERVICE network" } (Сервисная)

add chain=input action=drop comment="All other forward drop" } блокировка для входящих лишних пакетов (защита)

 

} Разрешаем маршрутизацию служебных пакетов через сам маршрутизатор

 

/ip firewall filter

add chain=forward connection-state=invalid action=drop comment="Drop invalid connection packets"

add chain=forward connection-state=established action=accept comment="Allow established connections"

add chain=forward connection-state=related action=accept comment="Allow related connections"

add chain=forward protocol=udp action=accept comment="Allow UDP"

add chain=forward protocol=icmp action=accept comment="Allow ICMP Ping"

 

} Разрешаем выход в интернет для всех адресов из локальной сети

 

add chain=forward in-interface=ether6 src-address=192.168.0.0/24 action=accept comment="Access to internet from LAN-LOCAL network" } для офиса

add chain=forward in-interface=ether8 src-address=192.168.1.0/24 action=accept comment="Access to internet from LAN-GUEST network" } для гостей

add chain=forward in-interface=ether1 src-address=192.168.88.0/24 action=accept comment="Access to internet from LAN-SERVICE network" } для сервиса

 

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

 

/ip firewall nat

add chain=srcnat action=masquerade src-address=192.168.0.0/24 out-interface=ether2 comment="LAN-LOCAL" } 1 провайдер для офиса через канал 1

add chain=srcnat action=masquerade src-address=192.168.0.0/24 out-interface=ether3 comment="LAN-LOCAL" } 2 провайдер для офиса через канал 2

add chain=srcnat action=masquerade src-address=192.168.1.0/24 out-interface=ether2 comment="LAN-GUEST" } 1 провайдер для гостей через канал 1

add chain=srcnat action=masquerade src-address=192.168.1.0/24 out-interface=ether3 comment="LAN-GUEST" } 2 провайдер для гостей через канал 2

add chain=srcnat action=masquerade src-address=192.168.88.0/24 out-interface=ether2 comment="LAN-SERVICE" } 1 провайдер для сервиса через канал 1

add chain=srcnat action=masquerade src-address=192.168.88.0/24 out-interface=ether3 comment="LAN-SERVICE" } 2 провайдер для сервиса через канал 2

 

} Как видите, я суммирую оба канала для повышения скорости абонентов

 

} Все остальные пакеты, проходящие через маршрутизатор, блокируем (не обязательно)

 

/ip firewall filter

add chain=forward action=drop comment="All other forward drop" } блокировка для исходящих лишних пакетов (защита)

 

} А теперь, чтобы пользователи действительно могли выйти в интернет, необходимо добавить правило маршрутизации(Равномерное деление двух провайдеров)

} "как настроить два "шлюза" (провайдера) с не равными скоростями я напишу ниже"

 

/ip route

add dst-address=0.0.0.0/0 gateway=192.168.13.31,192.168.14.31 distance=1 comment="all-WAN" } Правило для спаренного канала

add dst-address=0.0.0.0/0 gateway=192.168.13.31 distance=1 comment="Sunnet1-WAN" } Правило для первого канала

add dst-address=0.0.0.0/0 gateway=192.168.14.31 distance=1 comment="Sunnet2-WAN" } Правило для второго канала

 

} DNS настраиваем на обоих провайдеров, либо берем независимые от google и.т.д. (в моем случае я смешал, основной от провайдера 1, запасной от googlе)

 

/

ip dns set servers=10.168.0.1,8.8.8.8 allow-remote-requests=yes max-udp-packet-size=4096 cache-size=2048

 

} DHCP SERVER

 

} Для Сервиса

/

ip pool add name=DHCP-LAN-SERVICE1 next-pool=none ranges=192.168.88.1-192.168.88.254

ip dhcp-server add name=DHCP-LAN-SERVICE interface=ether1 lease-time=1d address-pool=DHCP-LAN-SERVICE1 authoritative=after-2sec-delay bootp-support=static disabled=no

ip dhcp-server network add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=192.168.88.1 comment="LAN-SERVICE"

 

} Для офиса

ip pool add name=DHCP-LAN-LOCAL2 next-pool=none ranges=192.168.0.1-192.168.0.254

ip dhcp-server add name=DHCP-LAN-LOCAL interface=ether6 lease-time=12h address-pool=DHCP-LAN-LOCAL2 authoritative=after-2sec-delay bootp-support=static disabled=no

ip dhcp-server network add address=192.168.0.0/24 gateway=192.168.0.1 dns-server=192.168.0.1 comment="LAN-LOCAL"

 

 

} Для гостей

ip pool add name=DHCP-LAN-GUEST3 next-pool=none ranges=192.168.1.1-192.168.1.254

ip dhcp-server add name=DHCP-LAN-GUEST interface=ether8 lease-time=1h address-pool=DHCP-LAN-GUEST3 authoritative=after-2sec-delay bootp-support=static disabled=no

ip dhcp-server network add address=192.168.1.0/24 gateway=192.168.1.1 dns-server=192.168.1.1 comment="LAN-GUEST"

 

} И последнее, в смешивании каналов, это пинг гугла через каждый канал!!! Ели один из каналов падает - система переходит на единственный рабочий канал

 

/ip route

add dst-address=8.8.8.8 gateway=192.168.13.31 scope=10 comment="ping Sunnet1" } Пинг на гугл первого канала

add dst-address=8.8.4.4 gateway=192.168.14.31 scope=10 comment="ping Sunnet2" } Пинг на гугл второго канала

 

} правило 1 при потере пинга свыше 1000мс на первом канале (Sunnet1-WAN) отключает доступ по двум каналам, и переходит на второй (Sunnet2-WAN)

 

/tool netwatch

add host=8.8.8.8 interval=1s timeout=1 comment=connections_Sunnet2 down-script="ip route set [find comment=all-WAN] disabled=yes\r\nip route set [find comment=Sunnet1-WAN] disabled=yes\r\nip route set [find comment=Sunnet2-WAN] disabled=no" up-script="ip route set [find comment=all-WAN] disabled=no\r\nip route set [find comment=Sunnet1-WAN] disabled=yes\r\nip route set [find comment=Sunnet2-WAN] disabled=yes"

 

} правило 2 при потере пинга вше 1s на втором канале (Sunnet2-WAN) отключает доступ по двум каналам, и переходит на первый (Sunnet1-WAN)

 

add host=8.8.4.4 interval=1s timeout=1 comment=connections_Sunnet1 down-script="ip route set [find comment=all-WAN] disabled=yes\r\nip route set [find comment=Sunnet1-WAN] disabled=no\r\nip route set [find comment=Sunnet2-WAN] disabled=yes" up-script="ip route set [find comment=all-WAN] disabled=no\r\nip route set [find comment=Sunnet1-WAN] disabled=yes\r\nip route set [find comment=Sunnet2-WAN] disabled=yes"

 

} при восстановлении пинга по каналам восстанавливает правило спаренного канала

 

 

} готово

 

} Динамический шейпер (вариант 1)

 

} Итак, создадим правило, которое позволит получить клиентам локальной 192.168.1.0/24 сети максимальную скорость при обращении к интернет,

} однако разделим скорость между всеми поровну.

 

} Создаем адрес лист этой подсети и даем название guest1.

} Можно создать лист и по одному айпи, но в данном случае получится 253 строчки. У меня все клиенты одинаковы, поэтому я делаю так:

 

 

/ip firewall address-list

add address=192.168.1.0/24 disabled=no list=guest1

 

} Маркируем пакеты для guest1, это нужно для шейпера, чтобы он распознал клиентов из адрес-листа

 

/ip firewall mangle

add action=mark-packet chain=forward disabled=no dst-address-list=guest1 new-packet-mark=guest1-down passthrough=yes

add action=mark-packet chain=forward disabled=no src-address-list=guest1 new-packet-mark=guest1-up passthrough=yes

 

 

} Шейпер.

} 1. Создадим два типа PCQ очереди, подключения в одной из которых мы будем классифицировать по входящему, а в другой по исходящему трафику.

} Самое важное здесь - это параметр pcq-rate=? Например: pcq-rate=7m, он означает, что любой пользователь, даже если он остался 1, не сможет получить больше 7m трафика

 

/queue type

add kind=pcq name=down-7m pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=500 pcq-rate=7M pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=100000

add kind=pcq name=up-7m pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=src-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=500 pcq-rate=7M pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=100000

 

} 2. Теперь создадим само дерево загрузки канала. Первая строка name=Global, у нее мы создаем суммарный канал для этих пользователей max-limit=15M. И обязательно parent=global

} Вторая и третья строки - это конкретные ограничения для загрузки и отправки по max-limit=7500k. Отсюда и на строке выше max-limit=15M.

} Здесь же указываем packet-mark и queue соответственно для загрузки и отправки из ранее написанных правил:

} name=Download packet-mark=guest1-down parent=Global queue=down-7m, и name=Upload packet-mark=guest1-up parent=Global queue=up-7m

} То есть в такой конфигурации 1 пользователь сможет работать на 7m, например, качать торрент. Вот если появится второй пользователь, то скорость будет делится на двоих!!!

} Но делится не пропорционально, а по запросу!!! Т.Е. клиент 1 при закачки торрента логично будет выбирать максимум, ему доступный, а клиент 2, открывая онлайн-игру,

} не будет нуждаться более чем в 1-2m. Поэтому у первого закачка будет 5-6m, а у второго нормально, без лагов, работать игра на 1-2m

} Появится третий - то по запросам от всех поделится на всех, и т.д. по нарастающей.

 

/queue tree

add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=15M name=Global packet-mark="" parent=global priority=1

add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=7500k name=Download packet-mark=guest1-down parent=Global priority=8 queue=down-7m

add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=7500k name=Upload packet-mark=guest1-up parent=Global priority=8 queue=up-7m

 

 

} Главное помнить, что нельзя превышать лимиты от вышестоящего провайдера!!!!!!!!!! Иначе пинг будет сумасшедший, в следствии чего хттп будет кривой (дооооолгий)

} max-limit должен быть ниже гарантированного для Вас, от вышестоящего провайдера, лимита от 5% до 15%. Это очень важно!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

} Следующее правило даст нам при потере пинга на одном из каналов изменение общего канала загрузки для не превышения лимита вышестоящего провайдера

} Редактируем нетвач, птем удаления сторых правил и добавления новых

 

/tool netwatch

remove numbers=0

remove numbers=1

add host=8.8.8.8 interval=1s timeout=1 comment=connections_Sunnet2 down-script="ip route set [find comment=all-WAN] disabled=yes\r\nip route set [find comment=Sunnet1-WAN] disabled=yes\r\nip route set [find comment=Sunnet2-WAN] disabled=no\r\nqueue tree set Download max-limit=3700k\r\nqueue tree set Upload max-limit=3700k" up-script="ip route set [find comment=all-WAN] disabled=no\r\nip route set [find comment=Sunnet1-WAN] disabled=yes\r\nip route set [find comment=Sunnet2-WAN] disabled=yes\r\nqueue tree set Download max-limit=7500k\r\nqueue tree set Upload max-limit=7500k"

add host=8.8.4.4 interval=1s timeout=1 comment=connections_Sunnet1 down-script="ip route set [find comment=all-WAN] disabled=yes\r\nip route set [find comment=Sunnet1-WAN] disabled=no\r\nip route set [find comment=Sunnet2-WAN] disabled=yes\r\nqueue tree set Download max-limit=3700k\r\nqueue tree set Upload max-limit=3700k" up-script="ip route set [find comment=all-WAN] disabled=no\r\nip route set [find comment=Sunnet1-WAN] disabled=yes\r\nip route set [find comment=Sunnet2-WAN] disabled=yes\r\nqueue tree set Download max-limit=7500k\r\nqueue tree set Upload max-limit=7500k"

 

 

} готово

 

 

} Проброска порта, я думаю не нужны комменты

/

ip firewall nat add chain=dstnat action=dst-nat in-interface=WAN1 protocol=tcp dst-port=80 to-address=192.168.0.3 to-ports=80

ip firewall filter add chain forward in-interface=WAN1 protocol=tcp dst-port=80 dst-address=192.168.0.3 action=accept comment="WAN1 to online booking"

ip firewall mangle add chain=forward in-interface=WAN1 action=mark-connection new-connection-mark=WAN1_c passthrough=yes

ip firewall mangle add chain=prerouting src-address=192.168.0.0/24 connection-mark=WAN1_c action=mark-routing new-routing-mark=WAN1_r passthrough=yes

ip route add routing-mark=WAN1_r gateway=192.168.13.31 comment="WAN1 to online booking"

 

 

 

Если у кого есть вопросы, поправки!!!!! ТОЛЬКО ПРИВЕТСТВУЮ!

Edited by saimon83

Share this post


Link to post
Share on other sites

Если у кого есть вопросы, поправки!!!!! ТОЛЬКО ПРИВЕТСТВУЮ!

а толку разговаривать с копипастой????

 

вы же не понимаете того что выложили,

 

а про спаренный канал в таком виде я бы убил, хотя клиенты убьют за полный разрыв раз в 10 минут ))))

Share this post


Link to post
Share on other sites

а про спаренный канал в таком виде я бы убил, хотя клиенты убьют за полный разрыв раз в 10 минут ))))

 

Поясните, желательно с комментами к скриптам

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this