1

(кросс-пост от ServerFault, так как этот форум кажется более подходящим для этого вопроса)

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

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

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

  • На Mac есть два сетевых интерфейса (каждый использует разных сетевых провайдеров для резервирования).
  • Пусть OS X использует 1 из этих сетевых интерфейсов для потоковой передачи контента на первый URL, а второй сетевой интерфейс использует для потоковой передачи на второй URL

Я не знаю, как разделить трафик на один и тот же хост (но другой порт) через разные сетевые интерфейсы в 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 = "172.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

0