(Mac OS PF) Перенаправление исходящего UDP-трафика на определенный IP:порт

(Mac OS PF) Перенаправление исходящего UDP-трафика на определенный IP:порт

У меня возникли некоторые проблемы с тем, как работает PF в Mac OS. Я провел много исследований по этой теме, но так и не смог найти решение (хотя я могу найти много других очень похожих вопросов без ответа).

Моя цель — перенаправить исходящий пакет, использующий порт UDP (21928), отправляемый на адрес многоадресной рассылки (225.0.0.37), на другой порт UDP (6010) того же адреса многоадресной рассылки, прежде чем он покинет мой интерфейс.

Если это невозможно, то лучшим решением будет перенаправление порта (21928) на адрес 192.168.0.20:6010, однако предпочтительнее использовать исходный адрес многоадресной рассылки.

Насколько я могу судить, вы не можете использовать правила PF для исходящих пакетов, однако вы можете перенаправить эти пакеты на адрес обратной связи, а затем применить правила таким образом.

rdr pass inet proto udp from any to 225.0.0.37 port 21928 -> 225.0.0.37 port 6010
pass out on en4 route-to lo0 proto udp from en4 to 225.0.0.37 port 21928 keep state

Это текущие правила, с которыми я работаю, и в Wireshark я вижу, что когда PF активен, пакет входит в интерфейс обратной связи, однако, кроме этого, ничего не происходит (когда я отключаю PF, пакет уходит, как и изначально предполагалось, на 225.0.0.37:21928, что указывает на то, что PF что-то делает, по крайней мере, когда включен).

Кроме того, я включил эту команду:

sysctl net.inet.ip.forwarding=1

Я не уверен, что я делаю неправильно. Любая помощь будет очень кстати.

Связанный контент