Некропостинг :)
------------------------------------------------------
Date: Wed, 28 Sep 2011 14:10:23 +0300 (EEST)
From: Oleksandr V. Typlyns'kyi <
ast...@wangsamp.km.ua>
To: Maxim Ignatenko <
im...@ukrweb.net>
Cc:
fre...@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