0

Mikrotik — несколько ip на внешнем интерфейсе

Рассмотрим ситуацию, когда провайдер выдал нам один шнурок и несколько ip в нем (например, /29 подсеть). И за нашим роутером находится несколько разных подсетей, которые надо выпускать наружу с разными src-ip; также среди них есть сервер, к которому необходимо сделать прозрачный проброс всех портов, будто белый ip настроен на нём, а не на роутере.

Вводные данные:

Провайдерский шнурок приходит в ether1, в нем подсеть 1.1.1.0/29 (где 1.1.1.6 — провайдерский шлюз).

На Микротике уже настроен один внешний ip и выход в интернет (маршрут и маскарадинг), а также внутренние подсети:

br0 — с сетью 192.168.1.0/24

br1 — c сетью 10.0.0.0/24

br2 — с сетью 172.16.0.0/25

Все внутренние подсети уже имеют выход в интернет и их src-ip при этом — 1.1.1.1, единственный настроенный ip на внешнем интерфейсе:

Задача:

Подсеть 192.168.1.0/24 (br0) продолжает выходить наружу с src-ip 1.1.1.1

Подсеть 10.0.0.0/24 (br1) должна выходить наружу с src-ip 1.1.1.2

Хост 172.16.0.2 (br2) должен выходить наружу с src-ip 1.1.1.3

Сначала добавим на внешний интерфейс адреса 1.1.1.2 и 1.1.1.3 (IP — Adresses):

В IP — Firewall — NAT сделаем проброс с внешнего 1.1.1.3 на 172.16.0.2:

Теперь займемся маркировкой исходящих пакетов. Нам нужно, чтобы через mark-routing присваивалась метка маршрута на основе src-ip (кроме случаев, когда трафик идет к не-локальным сетям). Меток понадобится две (для 10.0.0.0/24 и 172.16.0.2), т.к. остальной трафик по умолчанию пойдет через существующий маршрут с src-ip 1.1.1.1. Поэтому сначала добавим в ip — firewall — adress list локальные подсети, а затем создадим два правила в ip — firewall — mangle:

Далее — создаем в ip — routes маршруты для этих routing mark, в pref.source не забываем указывать необходимый src-ip адрес.

И последний штрих: в ip — firewall — nat создадим два правила с action=src-nat для подстановки нужного белого адреса на основании метки.

Созданные правила следует поставить выше остальных.

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:398 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(845): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(418): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 398