Используйте следующее содержимое файла:
start on runlevel [016] or stopping dbus or deconfiguring-networking
task
exec /path/to/your_script.sh
Как указано в сообщении об ошибке, вам нужно добавить правило 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