В дальнейшем используя интернет страницу cloudhosting.lv, вы соглашаетесь с правилами пользования Куки. Узнай больше. Согласен
MikroTik, Настройка и установка оборудования , Практика и программирование
Ситуация, когда доступны несколько провайдеров не нова, Mikrotik Router OS позволяет настроить доступ сразу по нескольким сетевым интерфейсам, а так же настроить балансировку нагрузки в зависимости от ограничений, которые выставляет провайдер.
Первым шагом настроим дополнительный интерфейс. Инициализируем сам интерфейс.
[mkt@MikroTik] /interface> print Flags: D - dynamic, X - disabled, R - running, S - slave # NAME TYPE MTU 0 R ether1 ether 1500 1 R ether2 ether 1500 2 X ether3 ether 1500 [mkt@MikroTik] /interface> enable 2 [mkt@MikroTik] /interface> print Flags: D - dynamic, X - disabled, R - running, S - slave # NAME TYPE MTU 0 R ether1 ether 1500 1 R ether2 ether 1500 2 R ether3 ether 1500
Для удобства задаем более понятные имена интерфейсам.
[mkt@MikroTik] /interface> set ether1 name="ISP1" [mkt@MikroTik] /interface> set ether2 name="LOCAL" [mkt@MikroTik] /interface> set ether3 name="ISP2" [mkt@MikroTik] /interface> print Flags: D - dynamic, X - disabled, R - running, S - slave # NAME TYPE MTU 0 R ISP1 ether 1500 1 R LOCAL ether 1500 2 R ISP2 ether 1500
Теперь назначим IP адрес новому интерфейсу.
[mkt@MikroTik] > ip address add address=192.168.222.100/24 interface=ISP2 [mkt@MikroTik] > ip address print Flags: X - disabled, I - invalid, D - dynamic # ADDRESS NETWORK BROADCAST INTERFACE 0 192.168.1.116/24 192.168.1.0 192.168.1.255 ISP1 1 192.168.0.1/24 192.168.0.0 192.168.0.255 LOCAL 2 192.168.222.100/24 192.168.222.0 192.168.222.255 ISP2
Настало время изменить маршрутизацию по умолчанию. Для начала, допустим, что оба провайдера предоставляют одинаковую скорость доступа к сети Internet, значит настроим балансировку (это когда для исходящих соединений каналы чередуются), так что бы запросы распеределялись равномерно, т.е. 50/50. Прежде всего удалим старый шлюз по умолчанию.
[mkt@MikroTik] > ip route print Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit # DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 A S 0.0.0.0/0 192.168.1.249 r... 1 1 ADC 192.168.0.0/24 192.168.0.1 LOCAL 0 2 ADC 192.168.1.0/24 192.168.1.116 ISP1 0 3 ADC 192.168.222.0/24 192.168.222.100 ISP2 0 [mkt@MikroTik] > ip route remove 0 [mkt@MikroTik] > ip route print Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit # DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 ADC 192.168.0.0/24 192.168.0.1 LOCAL 0 1 ADC 192.168.1.0/24 192.168.1.116 ISP1 0 2 ADC 192.168.222.0/24 192.168.222.100 ISP2 0
И добавим новые.
[mkt@MikroTik] > ip route add dst-address=0.0.0.0/0 gateway=192.168.1.249,192.168.222.1 [mkt@MikroTik] > ip route print Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit # DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 A S 0.0.0.0/0 192.168.1.249 r... 1 192.168.222.1 r... 1 ADC 192.168.0.0/24 192.168.0.1 LOCAL 0 2 ADC 192.168.1.0/24 192.168.1.116 ISP1 0 3 ADC 192.168.222.0/24 192.168.222.100 ISP2 0
Допустим,что у первого провайдера скорость доступа в два раза выше чем у второго, тогда 2/3 исходящих запросов надо направить на первого, а оставшиеся 1/3 на второго.
[mkt@MikroTik] > ip route add dst-address=0.0.0.0/0 gateway=192.168.1.249,192.168.1.249,192.168.222.1 [mkt@MikroTik] > ip route print Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit # DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 A S 0.0.0.0/0 192.168.222.1 r... 1 192.168.1.249 r... 192.168.1.249 r... 1 ADC 192.168.0.0/24 192.168.0.1 LOCAL 0 2 ADC 192.168.1.0/24 192.168.1.116 ISP1 0 3 ADC 192.168.222.0/24 192.168.222.100 ISP2 0
Это самый простой вариант конфигурации, в котором мы получаем доступ к Интернету с балансировкой нагрузки, но у этого подхода есть ряд недостатков, например, доступ через локальный NAT к локальному серверу (web, smtp, pop services, которые были настроены ранее) не работа, но не такая большая проблема, но об этом в следующий раз. После добавления второго провайдера в нашу тестовую конфигурацию возникла проблема с ответом определенных служб на желаемом канале, если вы обращаетесь к ним извне через NAT. Например, веб-сервер, выведенный через NAT на IP-адрес первого провайдера, получает запрос, но вероятность того, что ответ пройдет по нужному каналу, больше не равна 100%. Что это за веб-сервер после этого? Механизм маркировки пакетов поможет нам решить эту проблему. Таблица MANGLE предназначена для классификации и маркировки пакетов и соединений, а также для изменения заголовков пакетов. В частности, нас интересует цепочка PREROUTING, которая позволяет пометить пакет перед маршрутизацией. Попробуем разобраться с веб-сервером.
Допустим, мы настроили порт NAT 80 с внешнего IP-адреса 192.168.1.116 (ISP1, первый поставщик) на порт 80 веб-сервера в локальной сети, и нам нужно убедиться, что все ответы, которые будут отправляться с веб-сервера, будут проходить до шлюза первого провайдера. Вот правило для таблицы NAT.
[mkt@MikroTik] > ip firewall nat add chain=dstnat dst-address=192.168.1.116 protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.0.2 to-ports=80 comment="NAT 80 port from ISP1 to local web server" [mkt@MikroTik] > ip firewall nat print Flags: X - disabled, I - invalid, D - dynamic 0 chain=srcnat action=masquerade out-interface=!LOCAL 1 ;;; NAT 80 port from ISP1 to local web server chain=dstnat action=dst-nat to-addresses=192.168.0.2 to-ports=80 protocol=tcp dst-address=192.168.1.116 dst-port=80
Первым делом создадим правило в таблице MANGLE.
[mkt@MikroTik] > ip firewall mangle add chain=prerouting src-address=192.168.0.2 protocol=tcp src-port=80 action=mark-routing new-routing-mark=to-isp1 [mkt@MikroTik] > ip firewall mangle print Flags: X - disabled, I - invalid, D - dynamic 0 chain=prerouting action=add-src-to-address-list protocol=tcp address-list=test_list address-list-timeout=0s dst-port=23 1 chain=prerouting action=mark-routing new-routing-mark=to-isp1 passthrough=yes protocol=tcp src-address=192.168.0.2 src-port=80
Пакеты с локального адреса 192.168.0.2 с 80 порта буду маркироваться как to-isp1. Затем добавим правило в таблицу маршрутизации.
[mkt@MikroTik] > ip route add gateway=192.168.1.249 routing-mark=to-isp1 [mkt@MikroTik] > ip route print Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit # DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 A S 0.0.0.0/0 192.168.1.249 r... 1 1 A S 0.0.0.0/0 192.168.1.249 r... 1 192.168.1.249 r... 192.168.222.1 r... 2 ADC 192.168.0.0/24 192.168.0.1 LOCAL 0 3 ADC 192.168.1.0/24 192.168.1.116 ISP1 0 4 ADC 192.168.222.0/24 192.168.222.100 ISP2 0
Все, что идет с токеном to-isp1, отправляется на шлюз первого провайдера. Теперь давайте усложним ситуацию, скажем, второй провайдер предоставит на выгодных условиях большую локальную сеть по всему городу, и через эту сеть все 10 филиалов вашей компании объединятся. Все филиалы и офисы используют один и тот же сайт, но какой смысл обращаться к нему через первого провайдера, когда вы можете настроить доступ к нему почти локально. Прежде всего, мы добавляем правило к таблице NAT, согласно которому все запросы, поступившие на внешний IP-адрес, предоставленный вторым провайдером, будут перенаправлены на порт 80 локального порта веб-сервера.
[mkt@MikroTik] > ip firewall nat add chain=dstnat dst-address=192.168.222.100 protocol=tcp dst-port=80 action=dst-nat to-addresses=192.168.0.2 to-ports=80 comment="NAT 80 port from ISP2 to local web server" [mkt@MikroTik] > ip firewall nat print Flags: X - disabled, I - invalid, D - dynamic 0 chain=srcnat action=masquerade out-interface=!LOCAL 1 ;;; NAT 80 port from ISP1 to local web server chain=dstnat action=dst-nat to-addresses=192.168.0.2 to-ports=80 protocol=tcp dst-address=192.168.1.116 dst-port=80 2 ;;; NAT 80 port from ISP2 to local web server chain=dstnat action=dst-nat to-addresses=192.168.0.2 to-ports=80 protocol=tcp dst-address=192.168.222.100 dst-port=80
Следующим шагом добавим в таблицу MANGLE еще одно правило:
[mkt@MikroTik] > ip firewall mangle add chain=prerouting src-address=192.168.0.2 protocol=tcp src-port=80 dst-address=192.168.222.0/24 action=mark-routing new-routing-mark=to-isp2 [mkt@MikroTik] > ip firewall mangle print Flags: X - disabled, I - invalid, D - dynamic 0 chain=prerouting action=add-src-to-address-list protocol=tcp address-list=test_list address-list-timeout=0s dst-port=23 1 chain=prerouting action=mark-routing new-routing-mark=to-isp2 passthrough=yes protocol=tcp src-address=192.168.0.2 dst-address=192.168.222.0/24 src-port=80 2 chain=prerouting action=mark-routing new-routing-mark=to-isp1 passthrough=yes protocol=tcp src-address=192.168.0.2 src-port=80
Пакеты с локального адреса 192.168.0.2 из порта 80 будут помечены как to-isp2, если они предназначены для подсети второго провайдера. Ну и в заключение, правило в таблице маршрутизации:
[mkt@MikroTik] > ip route add gateway=192.168.222.1 routing-mark=to-isp2 [mkt@MikroTik] > ip route print Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit # DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 A S 0.0.0.0/0 192.168.1.249 r... 1 1 A S 0.0.0.0/0 192.168.222.1 r... 1 2 A S 0.0.0.0/0 192.168.1.249 r... 1 192.168.1.249 r... 192.168.222.1 r... 3 ADC 192.168.0.0/24 192.168.0.1 LOCAL 0 4 ADC 192.168.1.0/24 192.168.1.116 ISP1 0 5 ADC 192.168.222.0/24 192.168.222.100 ISP2 0
Теперь на запросы, полученные от первого провайдера, будет отвечать шлюз первого провайдера, а на запросы от второго провайдера и из подсети второго провайдера будет отвечать шлюз второго провайдера.