Como dividir o tráfego por meio de dois adaptadores de rede diferentes baseados na porta TCP no OS X

3

Eu tenho um cenário em que usaremos um Mac para transmitir conteúdo de vídeo para um servidor RTMP. Esse serviço de RMTP fornece 2 URLs de ingestão para que você possa enviar o mesmo conteúdo de vídeo duas vezes e ter redundância caso sua conexão tenha um problema. No entanto, as duas URLs de entrada do RTMP são iguais, a única diferença é o número da porta TCP, por exemplo:

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

O que eu quero fazer é o seguinte:

  • Possuem duas interfaces de rede no Mac (cada uma usando uma rede diferente provedores, por redundância).
  • O OS X deve usar 1 dessas redes interfaces para transmitir conteúdo para o primeiro URL e usar a rede segundo interface para transmitir para o segundo URL

Eu não sei como dividir o tráfego para o mesmo host (mas porta diferente) através de diferentes interfaces de rede no OS X. Eu encontrei esses links ( "aqui e aqui ), mas eles resolvem problemas diferentes.

Alguém sabe como usar o iptables, nat, hosts ou qualquer combinação de serviços no OS X para conseguir essa divisão que estou procurando?

UPDATE

Depois de algumas pesquisas, estou convencido de que isso deve ser possível com a PF. Eu criei o seguinte conjunto de regras e habilitei pf com esta regra carregada. No entanto, todo o tráfego é bloqueado e o tráfego rtmp real que deve ser permitido de saída e roteado adequadamente também é bloqueado. Parece que tenho um problema de sintaxe em ter o PF correspondendo ao tráfego RTMP com a regra que eu configurei:

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
    
por Luis Delgado 04.07.2015 / 12:23

0 respostas