LINUX.ORG.RU
решено ФорумAdmin

pf, RDR & NAT — классика жанра

 , , , rdr


0

1

Маршрутизатор на фряхе, на нём стоит mpd+pf (в роли fw+nat), иерархия следующая —

Internet --> bge0 ($ext_if) --> MPD (ng0) --> bge1 ($int_if) --> vlan1 --> home devices
                                                      |
                                                       --------> vlan2 --> webserver

VLAN1 и VLAN2 за NAT —

nat on ng0 inet from { $vlan1 $vlan2 } to any -> ng0

Правила простые как два пальца об асфальт —

pass out quick on $ext_if                # открываем всё на выход из внутрянки
pass in quick on $ext_if proto tcp from any to any port $tcp_services # открываем хорошие порты
pass in on $int_if from any to any             # разрешаем всё внутри локальной сети
pass in inet proto icmp all icmp-type echoreq  # разрешаем пинги

Перед правилом NAT стоит настройка проброса порта —

rdr pass on $ext_if proto tcp from any to any port 80 -> $webserver port 80

Всё работает, кроме форварда (хотя по всем инструкциям он должен).

Альтернативный вариант через portfwd c конфигом

tcp {
80 { => %webserver%:80 };
}
пашет, но это очевидный костыль.

ЧЯДНТ?


Решение — указывать в качестве $ext_if надо было ng0, а $int_if — {vlan1; vlan2} соотв., т.к. корреспонденция шла через них, а у реальных интерфейсов состояние «up» и только.

Также, при rdr надо учитывать, что при попытке обратиться из той же подсети пакеты уходили в мёртвую петлю.

Le_Raux
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.