Перейти к содержимому
Калькуляторы

Mikrotik перенаправление на другой шлюз

Здравствуйте!

Возникла необходимость пустить всех клиентов локальной сети через другой шлюз (а конкретно через прозрачный squid);

И так имеем:

1) Mikrotik:

Eth1 - смотрит в сеть провайдера, DHCP Client;

Eth2(10.0.0.1) - смотрит в локальную сеть, DHCP Server - 10.0.0.0/20; (Lease time 3d)

Всё прекрасно работает, клиенты получают ip из своего диапазона с DNS 10.0.0.1 и шлюзом 10.0.0.1;

 

Далее был настроен комп, на ubuntu 14.04, прозрачный squid, завёрнут трафик с 80 на 3128 порт сквида, 443 на 3129 порт сквида.

Eth0 - DHCP client, смотрит в сеть интернет провайдера;

Eth1 - Смотрит в локальную сеть, адрес 10.0.9.1;

 

Требуется: всех клиентов локальной сети пропустить через шлюз 10.0.9.1;

проблемы: клиентам уже выдан шлюз 10.0.0.1, и время жизни настроек 3 дня. Менять это не хочется, т.к. новый шлюз будет использоваться всего 1 день.

Что испробавано: пробовал настроить ip->firewall->Mangle - mark routing ("onsquid") и IP->Routes - Dst.address:0.0.0.0/0 Distance:1 Gateway: 10.0.9.1 Routing mark: "onsquid". Но на клиенте ничего не открывается, страница "висит".

Если же на самом клиенте поменять шлюз 10.0.9.1 вместо 10.0.0.1 то всё отрабатывает отлично.

Так же пробовал через netmap перекинуть всех с 80 порта на 10.0.9.1:3128 и 443 на 10.0.9.1:3129 - но тоже тишина;

 

Как правильно перенаправить всех клиентов локальной сети на новый шлюз(или завернуть трафик через squid на 10.0.9.1)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Через терминал сделайте экспорт или принт правил и выложите, у меня такая подобная схема одна локальная сеть и пять каналов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возникла необходимость пустить всех клиентов локальной сети через другой шлюз (а конкретно через прозрачный squid);

И так имеем:

Eth2(10.0.0.1) - смотрит в локальную сеть, DHCP Server - 10.0.0.0/20; (Lease time 3d)

Что испробавано: пробовал настроить ip->firewall->Mangle - mark routing ("onsquid") и IP->Routes - Dst.address:0.0.0.0/0 Distance:1 Gateway: 10.0.9.1 Routing mark: "onsquid". Но на клиенте ничего не открывается, страница "висит".

Если же на самом клиенте поменять шлюз 10.0.9.1 вместо 10.0.0.1 то всё отрабатывает отлично.

 

Важное выделено жирным. То, что страница висит - это скорее всего циклическая переадресация, т.к. нужно создать исключение, что запрос не идет на 10.0.9.1.

 

Как правильно перенаправить всех клиентов локальной сети на новый шлюз(или завернуть трафик через squid на 10.0.9.1)?

 

Другой вариант развития событий:

 

Повесьте на один из интерфейсов микротика (можно туда же где и 10.0.0.1) сеть вида 10.0.20.1/24, на ваш сквид повесьте адрес 10.0.20.2 и в указанном вами правиле перенаправления, в качестве шлюза установите вместо 10.0.9.1 адрес 10.0.20.2.

 

Сейчас у вас получается, что вы создали перенаправление маршрута, а абонентский трафик туда не попадает, потому что находится в одной L2 сети с ним, т.к. маска /20 перекрывает сеть 10.0.9.х

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Важное выделено жирным. То, что страница висит - это скорее всего циклическая переадресация, т.к. нужно создать исключение, что запрос не идет на 10.0.9.1.

 

Как создать это исключение?

 

потом попробую перекинуть уже в 10.0.20.0/24

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как создать это исключение?

 

Вы же когда правило в манглах создаете, что-то указываете? Нужно указать src.address = вашей подсети, из которой абонентов перенаправлять, dst.address = ! вашей подсети - то есть на любой запрос не на адрес локалки выполнять перенаправление. Если вы просто делаете перенаправление всех, то сменив маршрут данные опять вернуться в локалку, ведь прокси находится в ней, и правило по новой отработает и так по кругу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы же когда правило в манглах создаете, что-то указываете? Нужно указать src.address = вашей подсети, из которой абонентов перенаправлять, dst.address = ! вашей подсети - то есть на любой запрос не на адрес локалки выполнять перенаправление. Если вы просто делаете перенаправление всех, то сменив маршрут данные опять вернуться в локалку, ведь прокси находится в ней, и правило по новой отработает и так по кругу.

 

 

Я пока пробую перекинуть не всю подсеть, а свой локальный ip для теста.

Создаю правило Mangle:

chain: prerouting

src: 10.0.2.2

dst: !10.0.2.2 (пробовал и 10.0.0.0/20)

protocol: tcp

dst.port: 80,8080

Action: mark routing

New mark: testsquid

Passthrough: enable

 

И сам маршрут

IP -> Routes

Dst: 0.0.0.0/0

type: unicast

Gateway: 10.0.9.1

Distance: 1

Scope: 30

Target scope: 10

Routing mark: testsquid

 

И не работает :(

Это идея первоапрельской шутки, на squid настроен splash page(показать пользователю страницу-шутку, после чего он спокойно работает в интернете дальше) потому что именно он хорошо работает с компами которые ещё за NAT'ом в локальной сети(политика компании).

 

Так же пробовал принудительно в DHCP сервере выдавать шлюз 10.0.9.1 - и если подключить новое устройство, то всё отрабатывает хорошо.

Но текущие клиенты уже получили шлюз 10.0.0.1 :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.