Today Nov 4, 2014 at 01:01 Alexander wrote:

> Hello UAFUG,
> 
>   Доброе  время суток! Пните в нужную сторону, как сделать правильно в
> топике.  Есть  шлюз  с  несколькими наружними интерфейсами, на котором
> сделан  проброс входящих портов на внутренние сервисы с помощью ipfw и
> ядрёного  nat-а.  Не  могу  придумать,  как сделать так, чтоб ответ на
> входящий запрос уходил через тот же интерфейс и с того же адреса через
> который  пришёл  запрос.  А  не через defaultroute. Т.к. тот же ssh не
> желает  категорически  принимать ответы от "чужого" сервера. :( Или на
> топике такого не сделать?
> 
> На  всяк  случай,  система  7.4,  но  мне  что-то  кажется, что это не
> принципиально...

  Некропостинг :)

------------------------------------------------------
Date: Wed, 28 Sep 2011 14:10:23 +0300 (EEST)
From: Oleksandr V. Typlyns'kyi <ast...@wangsamp.km.ua>
To: Maxim Ignatenko <i...@ukrweb.net>
Cc: freebsd@uafug.org.ua
Subject: Re: [freebsd] PBR & dyn ip

Today Sep 28, 2011 at 13:54 Maxim Ignatenko wrote:

> > > > Читайте ман лучше.
> > > > fwd <gw ip> ip from any to any in recv 'ng*'
> > > 
> > > Такая конструкция, увы, не работает.
> > > Для теста подставляю руками выданный ip
> > > 
> > > fwd <gw ip> ip from <dyn if ip> to any in recv ng1 - не работает
> > > fwd <gw ip> ip from <dyn if ip> to any  - работает
> > 
> > У меня работает. Что я делаю не так?
> > Ищите у себя ошибки, опечатки и прочее. tcpdump в руки. Всё работает.
> 
> Может таки out xmit ng1 надо?

  Так если оно и так out через ng1, то зачем его туда же полисить?

  Две недели назад была тема "ECMP + ipfw nat port redirect"
  Там я приводил ссылку на статью Вадима Гончарова:
  http://nuclight.livejournal.com/124348.html
  Тут же тоже хотят аналога pf route-to.

В частности, с использованием появившегося во FreeBSD 6.2 параметра tag на 
каждый пакет
можно навешивать внутриядерный тег, что в применении со skipto позволяет 
сделать,
к примеру, запоминание, с какого шлюза пришел входящий пакет на машине с 
каналами
к двум разным провайдерам, и ответные пакеты отправлять в тот канал, откуда они
пришли (допустим, у вашей машины только один IP-адрес, и сделать fwd на базе
внешнего адреса не получится), т.е. реализовать аналог reply-to из pf:

ipfw add 100 skipto 300 tag 1 in recv $ext_if1 keep-state
ipfw add 200 skipto 300 tag 2 in recv $ext_if2 keep-state
ipfw add 300 allow { recv $ext_if1 or recv $ext_if2 }  # входящие снаружи
ipfw add 400 allow in recv $int_if   # разрешить ответы на внутреннем проходе
ipfw add 500 fwd $gw1 tagged 1      # остались ответы на внешнем интерфейсе,
ipfw add 600 fwd $gw2 tagged 2      # зарулим их куда надо

-- 
WNGS-RIPE

Ответить