LINUX.ORG.RU
ФорумAdmin

Сложный роутинг через mikrotik + linux PC

 ,


0

1

Есть одна домашняя сеть с микротиком. Все устройства получают от него адреса автоматически, включая default gateway на этот самый микротик.

Хотелось бы незаметно для клиентов пустить часть трафика через роутер на компьютере, ну и попутно кое-как обработать этот трафик.

Завел правило в firewall/mangle с set routing mark

 3 X  ;;; linux pc
      chain=prerouting action=mark-routing new-routing-mark=linux_route passthrough=yes protocol=tcp src-address=192.168.88.0/24 dst-address-list=addrs dst-port=443 log=no log-prefix="" 

Завел маршрут для таблицы linux_route, трафик приходит линуксовую машину, он его перенаправляет на хост, но вот ответ на эти пакеты не покидает линуксовую машину. Если напрямую прописать адрес линуксовой тачки в качестве default gateway, то все работает, трафик успешно ходит через него. А вот если mikrotik => linux pc, то нифига.

Подскажите, куда копать?

но вот ответ на эти пакеты не покидает линуксовую машину.

Как вы это определили? У вас, скорее всего, линуксовая машина шлёт ответный пакет напрямую, а не через microtik. Но в этой теме вы описали работающую часть (настройки micrtik), а про настройки linux и про то, по какому пути должны идти ответные пакеты — ничего.

mky ★★★★★
()
Ответ на: комментарий от kawaii_neko

А локальная сеть?

На вопрос вы отвечать не стали, ну, думайте сами, как работает маршрутизация. masquerade на микротике вам посоветовали, если не подходит то CONNMARK на линуксовой машине...

mky ★★★★★
()
Ответ на: комментарий от mky
  • локальная сеть: 192.168.88.0/24
  • mikrotik: 192.168.88.1
  • linux pc: 192.168.88.2
  • тестовый пк: 192.168.88.223
  • тестовый адрес для перехвата: 5.255.255.242

Чего хочется: на тестовом ПК mikrotik прописан как default gateway. Хочется, чтобы тестовые адреса, отправленные с тестового пк на тестовый адрес пересылались микротиком на linux pc, а тот уже обрабатывал их и роутил через микротик.

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

и роутил через микротик.

Маршрутизировал с какими src и dst ip-адресами? Вот у вас пакет:
192.168.88.223->5.255.255.242
снача попадает на mikrotik, то его маркирует, маршрутизирует и пакет попадает на linux pc. И дальше что? Если linux pc этот пакет отправит на mikrotik, то там он ничем не будет отличаться от исходного пакета, исходящего от тестового пк. И пакет опять отправится на linux pc...

А, если у вас в этой схеме где-то NAT или используется поле ToS пакета, чтобы как-то различать пакеты от тестового пк и от linux pc, то про это надо написать подробно.

mky ★★★★★
()
Ответ на: комментарий от mky

Если linux pc этот пакет отправит на mikrotik, то там он ничем не будет отличаться от исходного пакета

На linux pc есть правило masquerade. Если прописать на тестовом пк default gw 192.168.88.2 (linux pc), то пакеты будут успешно ходить.

kawaii_neko ★★★★
() автор топика
Ответ на: комментарий от mky

Хм, такое ощущение, что в схеме через mikrotik действительно не хватает masquerade.

Установка соединения выглядит так (заснифано на linuxpc):

test -> WWW
linuxpc -> WWW
WWW -> linuxpc
WWW -> test

То есть, действительно надо добавить маскардинг где-то на микротике, но вот только не пойму, где.

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

UPD: если добавить masquerade на микротике ко всем пакетам с меткой linux_route, то получится что-то странное (через / обозначил mac адрес):

[SYN] mikrotic -> WWW / linuxpc
[SYN] linuxpc -> WWW
[SYN,ACK] WWW -> linuxpc
[SYN,ACK] WWW -> mikrotik
[ACK] mikrotik -> WWW / linuxpc
[ACK] linuxpc -> WWW
  <test pc сразу же отправил tls hello>
!!! задержка 1,7 сек !!!
[TLS HELLO] mikrotik -> WWW / linuxpc
[TLS HELLO] linuxpc -> WWW
...
[FIN] WWW -> linuxpc
[FIN] WWW -> mikrotik
[RST] mikrotik -> WWW / linuxpc
[RST] linuxpc -> WWW

+UPD: посмотрел, что происходит на testpc: там после отправки ack сразу же идет отправка TLS hello, который «доходит» до linuxpc спустя 1.7 секунды.

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

Я глупость написал, сейчас прочитал, и понял так что хочется такое test -> mik -> lin -> 5.* А ответ 5.* -> test.
И мне кажется что ответ с 5.* идёт в итоге на linux-pc, потому что mikrotik открытое соединение lin -> 5.* nat-ит, т.е. делает уже masquerade.

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

имхо: Есть вероятность что даже если linux-pc подменяет исходящий ip на ip test-pc или никак его не меняет на уровне протокола ip, то факт что соединение открыто может заставить пакеты идти обратно от 5.* на linux-pc по тому же пути, но уже на канальном уровне.

bbgg
()