Пример. Разрешен доступ к определённым хостам в Интернет MikroTik-Simple

Skip to end of metadata
Go to start of metadata

Пример описывает возможность разрешить доступ группы абонентов к заданным хостам в Интернет. Это может быть полезно, если Вы устанавливаете IPTV приставку у абонента с возможностью просмотра youtube и подобных сервисов, но при этом остальные сайты абоненту не нужны.

1.Создание списка разрешенных хостов:

Список разрешенных хостов будет называться crb_trust_custom_list, разрешаем доступ к хосту 10.20.30.40:

/ip firewall address-list
add address=10.20.30.40 list=crb_trust_custom_list
2. Модифицируем схему прохождения трафика в цепочке forward:

Создадим правила разрешающие хождение трафика между адресами в листах crb_trust_custom_list и crb_custom_auth_list:

/ip firewall filter add chain=crb_forward comment=trust_custom_accept_dst dst-address-list=crb_trust_custom_list src-address-list=crb_custom_auth_list action=accept
/ip firewall filter add chain=crb_forward comment=trust_custom_accept_src src-address-list=crb_trust_custom_list dst-address-list=crb_custom_auth_list action=accept
/ip firewall filter add chain=crb_forward comment=trust_custom_drop_dst dst-address-list=!crb_trust_custom_list src-address-list=crb_custom_auth_list action=drop
/ip firewall filter add chain=crb_forward comment=trust_custom_drop_src src-address-list=!crb_trust_custom_list dst-address-list=crb_custom_auth_list action=drop

Необходимо разместить данные правила перед правилом блокировки неавторизованных абонентов с помощью команды move RouteOS:

/ip firewall filter move numbers=[find comment=trust_custom_accept_src] destination=[[find comment=drop_no_auth] -1 ]
/ip firewall filter move numbers=[find comment=trust_custom_accept_dst] destination=[[find comment=drop_no_auth] -2 ]
/ip firewall filter move numbers=[find comment=trust_custom_drop_dst] destination=[[find comment=drop_no_auth] -3 ]
/ip firewall filter move numbers=[find comment=trust_custom_drop_src] destination=[[find comment=drop_no_auth] -4 ]
3. Модифицируем скрипт событий:

Для заполнения адрес листа crb_custom_auth_list ip адресами абонентов нужно модифицировать скрипт session. Переопределим две функции user_add и user_del Так же обратите внимание, что в примере используется переменная tarif_id равная 1136. Это значит, что адреса в список crb_custom_auth_list будут добавляться только, для абоенентов с id тарифа 1136.

#!/bin/bash
. $(dirname $BASH_SOURCE)/../bin/session

user_add(){
        if [ "$auth_type" == "1" ]; then
            while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_auth; do :; done
            send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_auth_list address=$ip comment=${ip}_crb_auth
        fi
        if  [ "$tarif_id" == "1136" ]; then
            while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_custom_auth; do :; done
            send_mikrotik_cmd "$nas_ip" "${telnet_login}" "${telnet_password}" /ip firewall address-list add list=crb_custom_auth_list address=$ip comment=${ip}_crb_custom_auth
        fi
}

user_del(){
        while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_auth; do :; done
        while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_negbal; do :; done
        while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_blocked; do :; done        
        while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_custom_auth; do :; done
        while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /queue simple remove numbers=crb_${ip}; do :; done
}
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.