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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.