Encaminhamento do endereço IP usando pf

1

Estou tentando encaminhar um endereço IP externo para outro endereço IP externo com pf. O comando equivalente do iptables seria iptables -t nat -A OUTPUT -d [ipaddress1] -j DNAT --to-destination [ipaddress2] .

Eu tentei várias formas de nat e rdr no meu pf.conf, exemplos dos quais são: ( $int_if é interface interna, $ext_if interface externa, $out_ad é ipaddress1 (endereço para redirecionar) e $res_ad é ipaddress2 (endereço para redirecionar para)

nat on $int_if from 127.0.0.1 to $out_ad -> $res_ad
rdr pass on $ext_if proto tcp from $out_ad to $res_ad -> 127.0.0.1
rdr pass on $int_if proto tcp from 127.0.0.1 to $out_ad -> $res_ad
rdr pass log proto tcp from any to $out_ad -> $res_ad
nat from $out_ad to $res_ad -> 127.0.0.1
nat on $ext_if from $out_ad to $res_ad -> $ext_if
rdr on $int_if proto tcp from any to $out_ad -> $res_ad
rdr pass quick on $ext_if proto tcp from any to $out_ad -> $res_ad

Nada disso parece fazer o truque. Eu ajustei sysctl net.inet.ip.forwarding=1 também. Qualquer ajuda seria muito apreciada. Obrigado

    
por chaz2505 26.01.2015 / 11:39

1 resposta

2

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;)

    
por 11.02.2015 / 12:33