URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91562
[ Назад ]

Исходное сообщение
"rdr в pf"

Отправлено sinder , 12-Май-11 13:00 
Очередной вопрос по rdr

Имеется машина на FreeBSD являющаяся шлюзом. На ней включен форвардинг и стоит pf. На основе pf поднят NAT. За NAT'ом имеются две машины. Внимание задача: при обращении на порт 8000 машины запрос должен перенаправляться на одну из машин в сети на порт 22 (ssh). Собственно вот правила pf:

ext_if="re0"
int_if="rl0"

rm_c="{ x.x.226.151 }"
work_c="{ 192.168.102.148, 192.168.102.70 }"

nat on $ext_if from $work_c to any -> $ext_if

rdr on $ext_if proto tcp from any to y.y.247.33 port 8000 -> 192.168.102.70 port 22

block in on $ext_if all
pass in on $ext_if proto icmp from any
pass in on $ext_if proto tcp from any to $ext_if port 80
pass in on $ext_if proto tcp from $rm_c to $ext_if port 22
pass in on $ext_if proto tcp from any to any port 8000
pass in on $ext_if proto udp from any to any        
                                                    
pass on $int_if all                                  
                                                    
pass out on $ext_if proto tcp all modulate state    
pass out on $ext_if proto { udp, icmp } all keep state

И теперь вопрос - почему может не работать rdr?


Содержание

Сообщения в этом обсуждении
"rdr в pf"
Отправлено gpl77 , 12-Май-11 13:43 
> ext_if="re0"
> int_if="rl0"
> rm_c="{ x.x.226.151 }"
> work_c="{ 192.168.102.148, 192.168.102.70 }"
> nat on $ext_if from $work_c to any -> $ext_if
> rdr on $ext_if proto tcp from any to y.y.247.33 port 8000 ->
> 192.168.102.70 port 22

а у вас на $ext_if какой адрес(а)?
y.y.247.33 ?
(посмотрите pfctl -sn)


а маршруты прописаны на этой машине и на 192.168.102.70 ?


"rdr в pf"
Отправлено sinder , 12-Май-11 13:50 
$ext_if точно адрес такой.

Поподробнее насчёт маршрутов, пожалуйста.


"rdr в pf"
Отправлено tabr , 12-Май-11 13:53 
pass in on $ext_if proto { tcp } from any to 192.168.102.70 port 22 keep state

"rdr в pf"
Отправлено sinder , 12-Май-11 14:06 
> pass in on $ext_if proto { tcp } from any to 192.168.102.70
> port 22 keep state

Спасибо большое! Не учёл это правило!


"rdr в pf"
Отправлено zandyg , 12-Май-11 14:02 
Для работы rdr мне кажется не хватает что-то типа:
pass in quick on $ext_if proto tcp from any to 192.168.102.70 port 22 flags S/SA keep state