Como rotear o tráfego através de dois adaptadores de rede diferentes baseados na porta TCP no OS X

1

(postagem cruzada de ServerFault, como este fórum parece mais apropriado para esta questão)

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 a 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:

  • Possui 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 = "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
    
por Luis Delgado 07.07.2015 / 12:16

0 respostas