sysctl net.inet.ip.forwarding=1
Isso apenas permitirá o roteamento em sua máquina. Poderia funcionar se você criasse um para permitir qualquer um para o IP de destino na interface externa (pelo menos em teoria) (10.20.30.40 é o seu destino final neste exemplo)
pass in inet proto tcp from any to 10.20.30.40
(apenas uma ideia)
Mas suas regras de rdr não funcionarão porque elas estão na mesma interface que (de acordo com algumas postagens no fórum) não são permitidas, ou simplesmente não funcionam
A regra de NAT pública, por outro lado, deve funcionar, mas você perderá o endereço IP de origem no destino final. (pretendido?)
nat on $ext_if inet from any to 10.20.30.40 -> ($ext_if:0) port 1024:65535
pass on $ext_if inet from any to 10.20.30.40 keep state
(ou estado synproxy)
para fins de depuração, tente habilitar o registro das regras (adicionando o log à regra de passagem, plebocando a nomenclatura e o seguinte comando)
/etc/rc.conf
...
pflog_enable="YES"
pflog_logfile="/var/log/pflog
...
# tcpdump -i pflog0 -n -e -ttt
Ah, e por favor, talvez forneça uma estrutura de rede simples;)