Перейти к содержимому
Калькуляторы

pf binat одновременно на два интерфейса

Есть блок PI адресов и бордер под FreeBSD 8.2 с двумя аплинками. Аплинки заводятся в бордер в двух виланах, через один физический интерфейс.

Задача: возложить на роутер так же функцию NAT 1 к 1, желательно через pf binat.

Собственно вопрос: можно ли заставить pf натить одни и те же адреса либо на двух интерфейсах одновременно (vlan1 vlan2), либо на физическом интерфейсе em0, но при этом научить манипулировать тегированными пакетами проходящими через него?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Собственно вопрос: можно ли заставить pf натить одни и те же адреса либо на двух интерфейсах одновременно (vlan1 vlan2), либо на физическом интерфейсе em0, но при этом научить манипулировать тегированными пакетами проходящими через него?

Посмотрите доки, там что то было про нат с роундробин и сорхэш.

ПФ, допустим, может игнорировать тэги вланов при приёме, но при отправке он их добавить не сможет - поэтому такая схема не взлетит.

Забудьте что у вас один физ интерфейс по факту, в пф вам нужно манипулировать влан интерфейсами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сейчас собрал тестовый стенд, похоже достаточно просто сделать два правила, в которых различается только интерфейс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ммм, извините за оффтоп, но что за изврат NAT 1 к 1-му ?

мне очень инетересно, зачем это надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько я помню мануал, для ната и скруба срабатывает первое матч правило, остальные не обрабатываются, соответственно, второе правило срабатывать не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сейчас собрал тестовый стенд, похоже достаточно просто сделать два правила, в которых различается только интерфейс.

Если трафик пришёл из Интернета через один интерфейс, а уходит через другой, правила работать не будут,

т.к. весь NAT в PF является stateful, даже статический 1:1. Не привязывать binat-правила к интерфейсам PF не умеет.

 

Одно из решений - переход на Линукс. В нём есть два варианта: iptables умеет

делать NAT без привязки к интерфейсу, iproute2 умеет делать stateless nat 1:1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

В нём есть два варианта: iptables умеет

делать NAT без привязки к интерфейсу

 

Если не секрет, то как? Я пробовал когда-то делать такой NAT(на ядре 2.6.9), если обратный трафик приходил через другой интерфейс, то он дропался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если не секрет, то как? Я пробовал когда-то делать такой NAT(на ядре 2.6.9), если обратный трафик приходил через другой интерфейс, то он дропался.

Примерно так:

for n in $LAN_IFACES; do iptables -t nat -A POSTROUTING -o $n -j ACCEPT
for n in $LAN_IFACES; do iptables -t nat -A  PREROUTING -i $n -j ACCEPT

Дальше делаем snat/dnat 1:1 без указания выходного/входного интерфейса.

И в конце либо общий iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE,

либо раздельные SNAT для каждого внешнего интерфейса, либо SNAT на пул из AS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну да, для 1:1 это должно работать, у меня был случай nat overload с балансировкой outside интерфейсов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ipfw умееть натить без привязки к интерфейсам. Так у нас. Но тоже интересен вопрос, поднятый ТС, поскольку есть желание перейти на pf nat.

Ситуация схожая - два аплинка, два влана, один внешний физический интерфейс, bgp.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.