LINUX.ORG.RU

Перенаправить трафик в Mikrotik

 , ,


0

1

Есть роутер mikrotik. (192.168.1.1) Также есть отдельный сервак со squid`ом (192.168.1.2)

Есть клиентские машины (192.168.1.10-30) Вопрос. Каким способом будет лучше перенаправить весь трафик на 80 и 8080 порты от клиентских машины на сервак со сквидом, работающим в прозрачном режиме.

Полазил по сусекам интернета и нашел 2 мануала:

http://adminnote2.blogspot.ru/2014/05/mikrotik-squida.html - этот вообще замороченный тем, что нужно маркировать определенные пакеты, а потом их перенаправлять на сервер, где обязательно должно быть правило перенаправления с 80 на 3128

http://network.24sport.info/mikrotik/howto-redirect-http-traffic-to-proxy/ - этот не рабочий. Ибо пакеты до сервака, хоть и криво но идут, но почему-то сквидом не воспринимаются.

Остальные мануалы - либо нереально заморочены, либо, рассчитаны на большую, сложную топологию, либо с нерабочими примерами.

Нужно простое, по возможности, решение. Раньше, вместо микротика стояла обычная сборная железка, которая выполняла роль маршрутизатора, так там все это дело реализовывалось одной строкой в iptables: iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.1.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.1.1:3128

И все прекрасно работало.

Есть идеи, господа?


Ответ на: комментарий от melkor217

Умеет, но я так и не разобрался, как это лучше сделать.

chiper
() автор топика
Ответ на: комментарий от melkor217

ip firewall nat add chain=dstnat action=dst-nat protocol=tcp src-address-list=clients dst-port=80 to-addresses=192.168.1.2 to-ports=3128

По какой-то непонятно штуке, пакеты доходят до сервера, но сквидом не воспринимаются. Конфиг сквида , после замены роутера, не менялся.

chiper
() автор топика
ip firewall nat add chain=dstnat action=dst-nat \ 
	protocol=tcp src-address=192.168.1.0/24 dst-port=80 \ 
	to-addresses=192.168.1.2 to-ports=3128
Turbid ★★★★★
()
Ответ на: комментарий от chiper

пакеты доходят до сервера, но сквидом не воспринимаются.

это настроько расплывчато, что просто нет никакой возможности что-то подсказать.

твои инструменты - счетчики на интерфейсах и правилах в mikrotik, логгирование правил в firewall, packet sniffer на машину с wireshark.

p.s. фаерволл в mikrotik работают в 99% также как и iptables, различия только в синтаксисе, ибо оба - надстройка над netfilter.

Turbid ★★★★★
()
Последнее исправление: Turbid (всего исправлений: 1)
Ответ на: комментарий от Turbid

Прикол в том, что пакеты на сервак со сквидом от микротика идут:

16:01:51.387486 IP 192.168.1.23.1306 > 192.168.1.2.3128: Flags , seq 3930707757, win 65535, options [mss 1460,nop,nop,sackOK], length 0 16:01:51.387521 IP 192.168.1.2.3128 > 192.168.1.23.1306: Flags [S.], seq 3954765091, ack 3930707758, win 29200, options [mss 1460,nop,nop,sackOK], length 0 16:01:51.387532 IP 192.168.1.23.1307 > 192.168.1.2.3128: Flags , seq 4259781402, win 65535, options [mss 1460,nop,nop,sackOK], length 0 16:01:51.387563 IP 192.168.1.2.3128 > 192.168.1.23.1307: Flags [S.], seq 4190714700, ack 4259781403, win 29200, options [mss 1460,nop,nop,sackOK], length 0 16:01:51.387658 IP 192.168.1.23.1306 > 192.168.1.2.3128: Flags [R], seq 3930707758, win 0, length 0 16:01:51.387667 IP 192.168.1.23.1307 > 192.168.1.2.3128: Flags [R], seq 4259781403, win 0, length 0 16:01:51.398011 IP 192.168.1.60.19668 > 192.168.1.2.3128: Flags , seq 483591446, win 8192, options [mss 1460,nop,nop,sackOK], length 0 16:01:51.398034 IP 192.168.1.2.3128 > 192.168.1.60.19668: Flags [S.], seq 

Фаервол на сервере пустой.

iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Конфиг прокси - банальный:

http_port 3128 intercept

acl localnet src 192.168.1.0/24 
acl officenet src 192.168.0.0/24

acl SSL_ports port 443 
acl Safe_ports port 80 # http 
acl Safe_ports port 8080 #http 
acl Safe_ports port 21 # ftp 
acl Safe_ports port 443 # https 
acl Safe_ports port 70 # gopher 
acl Safe_ports port 210 # wais 
acl Safe_ports port 1025-65535 # unregistered ports 
acl Safe_ports port 280 # http-mgmt 
acl Safe_ports port 488 # gss-http 
acl Safe_ports port 591 # filemaker 
acl Safe_ports port 777 # multiling http 
acl CONNECT method CONNECT

http_access deny !Safe_ports 
http_access deny CONNECT !SSL_ports

http_access allow localhost 
http_access allow localnet 
http_access allow officenet

http_access deny all 
icp_access deny all 
htcp_access deny all

cache_dir ufs /var/spool/squid3 4096 32 256 
coredump_dir /var/spool/squid3
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
refresh_pattern ^ftp: 1440 20% 10080 
refresh_pattern ^gopher: 1440 0% 1440 
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 
refresh_pattern . 0 20% 4320

Я так понимаю, что правило отрабатывает отлично. А вот по какой причине принимающая сторона не видит трафа, не понимаю в упор. Причем стоит выключить прозрачность и вбить настройки руками - все работает восхитительно.

chiper
() автор топика
28 января 2016 г.
Ответ на: комментарий от chiper

Такая же проблема, пока не удается побороть. Как вариант можно настроить на микротике web-прокси и указать parent на сквид с портом без прозрачности - тогда все работает.

anonymous
()

Вот так работает. Первое правило нужно для исключения зацикливания трафика с прокси, если во вотором указать только диапазон клиентов, то оно не нужно. Для чего нужно третье, думаю и так понятно.

add chain=dstnat comment=«proxy direct to inet» dst-port=80 protocol=tcp src-address=192.168.1.2

add action=dst-nat chain=dstnat comment=«redirect clients to proxy» dst-port=80 protocol=tcp src-address=192.168.1.0/24 to-addresses=192.168.1.2 to-ports=3128

add action=src-nat chain=srcnat dst-address=192.168.1.2 dst-port=3128 protocol=tcp to-addresses=192.168.1.1

vimrc
()
Ответ на: комментарий от chiper

Да, правило на микротике отрабатывает и трафик заворачивается на прокси. Но у вас клиент ждет ответа на свой пакет от шлюза 192.168.1.1, а получает ответ от прокси напрямую, соответсвенно входящий пакет на клиенте отбрасывается.

vimrc
()
Ответ на: комментарий от chiper

Кстати есть еще один вариант решения. Прозрачную проксю выносите в отдельную подсеть, к примеру 192.168.2.2/30. В таком случае на микротике будет достаточно прописать алиасом 192.168.2.1/30 к основному интерфейсу или привязать к отдельному порту, куда смотрит прокся. И достаточно одного правила в nat: add action=dst-nat chain=dstnat comment=«redirect clients to proxy» dst-port=80 protocol=tcp src-address=192.168.1.0/24 to-addresses=192.168.2.2 to-ports=3128

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

vimrc
()
15 июня 2016 г.
Ответ на: комментарий от vimrc

спасибо за ваш любопытный ответ! ;)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.