On Wed, 28 Sep 2011 14:10:23 +0300 (EEST), Oleksandr V. Typlyns'kyi wrote:
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, то зачем его туда же полисить?

Действительно, торможу. Тогда таки остаётся добавлять правила вида
   fwd $gw ip from $iface_ip to any out
из up-script'а mpd.

В частности, с использованием появившегося во 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      # зарулим их куда надо

Или так, да. Но здесь уже keep-state является принципиальным моментом.

Ответить