Переадресация IP-адреса с использованием pf

Я пытаюсь перенаправить внешний IP-адрес на другой внешний IP-адрес с помощью pf. Эквивалентная команда iptables будет iptables -t nat -A OUTPUT -d [ipaddress1] -j DNAT --to-destination [ipaddress2],

Я пробовал различные формы nat и rdr в моем pf.conf, примеры которых: ($int_if это внутренний интерфейс, $ext_if внешний интерфейс, $out_ad это ipaddress1 (адрес для перенаправления) и $res_ad это ipaddress2 (адрес для перенаправления)

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

Ни один из них, кажется, не добивается цели. Я поставил sysctl net.inet.ip.forwarding=1 также. Любая помощь будет принята с благодарностью. Спасибо

1 ответ

sysctl net.inet.ip.forwarding=1

Это просто включит маршрутизацию на вашем компьютере. Это может сработать, если вы создадите a, чтобы разрешить любой IP-адрес назначения на внешнем интерфейсе (по крайней мере, в теории) (10.20.30.40 - ваш конечный пункт назначения в этом примере)

pass in inet proto tcp from any to 10.20.30.40

(просто идея)

Но ваши правила rdr не будут работать, потому что они оказываются на том же интерфейсе, который (согласно некоторым сообщениям на форуме) не разрешен, или просто не работают

С другой стороны, общедоступное правило NAT должно работать, но вы потеряете исходный IP-адрес в конечном пункте назначения. (предназначена?)

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 

(или состояние synproxy)

в целях отладки попробуйте включить ведение журнала правил (добавив журнал к правилу прохода, включив pflog и следующую команду)

/etc/rc.conf
...
pflog_enable="YES"
pflog_logfile="/var/log/pflog
...


# tcpdump -i pflog0 -n -e -ttt

Ооо, и, возможно, представьте простую структуру сети;)

Другие вопросы по тегам