Как настроить простую переадресацию портов в macOS с помощью pf? «Правила должны быть в порядке: параметры, нормализация, постановка в очередь, трансляция, фильтрация»

Используйте следующее содержимое файла:

start on runlevel [016] or stopping dbus or deconfiguring-networking

task

exec /path/to/your_script.sh
5
12.03.2019, 02:02
1 ответ

Как указано в сообщении об ошибке, вам нужно добавить правило rdrрядом с другими правилами перевода на pf.conf. Поскольку якорь rdrуже присутствует, лучше всего поместить правило rdrсразу после него :

.
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr pass inet proto tcp to port 5800 -> 192.168.1.246 port 5900
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

(from any to anyподразумевается, если опущено, поэтому я удалил его для удобства чтения)

Правило rdrтолько указывает фильтру пакетов, что делать с TCP-пакетами, поступающими на порт 5800. Обычно требуется правило pass(, то есть правило фильтрации ), чтобы указать pf. ] им разрешен вход, но достаточно добавить passк правилу rdr, отсюда rdr pass.

Обратите внимание, что для пересылки пакета вам необходимо включить его с помощью sysctlили установить его постоянно в sysctl.conf(, см.man pfctl):

$ sudo sysctl net.inet.ip.forwarding=1
5
27.01.2020, 20:41

Теги

Похожие вопросы