JIeB Posted March 20, 2012 Posted March 20, 2012 Есть блок PI адресов и бордер под FreeBSD 8.2 с двумя аплинками. Аплинки заводятся в бордер в двух виланах, через один физический интерфейс. Задача: возложить на роутер так же функцию NAT 1 к 1, желательно через pf binat. Собственно вопрос: можно ли заставить pf натить одни и те же адреса либо на двух интерфейсах одновременно (vlan1 vlan2), либо на физическом интерфейсе em0, но при этом научить манипулировать тегированными пакетами проходящими через него? Вставить ник Quote
Ivan_83 Posted March 20, 2012 Posted March 20, 2012 Собственно вопрос: можно ли заставить pf натить одни и те же адреса либо на двух интерфейсах одновременно (vlan1 vlan2), либо на физическом интерфейсе em0, но при этом научить манипулировать тегированными пакетами проходящими через него? Посмотрите доки, там что то было про нат с роундробин и сорхэш. ПФ, допустим, может игнорировать тэги вланов при приёме, но при отправке он их добавить не сможет - поэтому такая схема не взлетит. Забудьте что у вас один физ интерфейс по факту, в пф вам нужно манипулировать влан интерфейсами. Вставить ник Quote
JIeB Posted March 20, 2012 Author Posted March 20, 2012 Сейчас собрал тестовый стенд, похоже достаточно просто сделать два правила, в которых различается только интерфейс. Вставить ник Quote
Giga-Byte Posted March 22, 2012 Posted March 22, 2012 ммм, извините за оффтоп, но что за изврат NAT 1 к 1-му ? мне очень инетересно, зачем это надо. Вставить ник Quote
Ivan_83 Posted March 23, 2012 Posted March 23, 2012 Насколько я помню мануал, для ната и скруба срабатывает первое матч правило, остальные не обрабатываются, соответственно, второе правило срабатывать не будет. Вставить ник Quote
Ilya Evseev Posted March 24, 2012 Posted March 24, 2012 Сейчас собрал тестовый стенд, похоже достаточно просто сделать два правила, в которых различается только интерфейс. Если трафик пришёл из Интернета через один интерфейс, а уходит через другой, правила работать не будут, т.к. весь NAT в PF является stateful, даже статический 1:1. Не привязывать binat-правила к интерфейсам PF не умеет. Одно из решений - переход на Линукс. В нём есть два варианта: iptables умеет делать NAT без привязки к интерфейсу, iproute2 умеет делать stateless nat 1:1. Вставить ник Quote
s.lobanov Posted March 24, 2012 Posted March 24, 2012 В нём есть два варианта: iptables умеет делать NAT без привязки к интерфейсу Если не секрет, то как? Я пробовал когда-то делать такой NAT(на ядре 2.6.9), если обратный трафик приходил через другой интерфейс, то он дропался. Вставить ник Quote
Ilya Evseev Posted March 24, 2012 Posted March 24, 2012 Если не секрет, то как? Я пробовал когда-то делать такой 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. Вставить ник Quote
s.lobanov Posted March 24, 2012 Posted March 24, 2012 ну да, для 1:1 это должно работать, у меня был случай nat overload с балансировкой outside интерфейсов Вставить ник Quote
Dimic Posted June 1, 2012 Posted June 1, 2012 ipfw умееть натить без привязки к интерфейсам. Так у нас. Но тоже интересен вопрос, поднятый ТС, поскольку есть желание перейти на pf nat. Ситуация схожая - два аплинка, два влана, один внешний физический интерфейс, bgp. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.