Jump to content

Recommended Posts

Posted

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

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

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

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

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

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

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

Posted

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

Posted

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

Posted

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

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

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

 

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

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

Posted

 

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

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

 

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

Posted

Если не секрет, то как? Я пробовал когда-то делать такой 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.

  • 2 months later...
Posted

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.