Назад | Перейти на главную страницу

Как разделить трафик через два разных сетевых адаптера на основе порта TCP в OS X

У меня есть сценарий, в котором мы будем использовать Mac для потоковой передачи видеоконтента на сервер RTMP. Эта служба RMTP предоставляет 2 URL-адреса для загрузки, поэтому вы можете дважды загружать один и тот же видеоконтент и иметь избыточность на случай возникновения проблем с подключением. Однако оба URL-адреса приема RTMP одинаковы, единственная разница заключается в номере порта TCP, например:

{
    "rtmp1": "rtmp://xxx.xxx.com:1935/id1",
    "rtmp2": "rtmp://xxx.xxx.com:1936/id1"
}

Я хочу сделать следующее:

Я не знаю, как разделить трафик на один и тот же хост (но на другой порт) через разные сетевые интерфейсы в OS X. Я нашел эти ссылки (Вот, и Вот), но они решают разные задачи.

Кто-нибудь знает, как использовать iptables, nat, hosts или любую комбинацию служб в OS X для достижения этого разделения, которое я ищу?

ОБНОВИТЬ

После некоторых исследований я убедился, что этого можно достичь с помощью PF. Я создал следующий набор правил и включил pf с загруженным этим правилом. Однако весь трафик блокируется, и фактический трафик rtmp, который должен быть разрешен исходящим и правильно маршрутизированным, также блокируется. Похоже, у меня проблема с синтаксисом, когда PF сопоставляет трафик RTMP с настроенным мной правилом:

ext_if1 = "en0"
ext_if1_gwt = "192.168.1.1"
ext_if2 = "en5"
ext_if2_gwt = "192.168.1.1"

rtmp_ip = "104.46.55.96"
rtmp_port1 = "1935"
rtmp_port2 = "1936"

pass in on $ext-if1 route-to ($ext_if1 $ext_if1_gwt) proto tcp from any to $rtmp_ip port $rtmp_port1
pass in on $ext-if1 route-to ($ext_if2 $ext_if2_gwt) proto tcp from any to $rtmp_ip port $rtmp_port2

pass in on $ext-if2 route-to ($ext_if1 $ext_if1_gwt) proto tcp from any to $rtmp_ip port $rtmp_port1
pass in on $ext-if2 route-to ($ext_if2 $ext_if2_gwt) proto tcp from any to $rtmp_ip port $rtmp_port2

block out