Força a transmissão UDP IPv4 em todas as interfaces de rede no Windows 7 e posterior.
Baixe a versão mais recente.
Se você trabalha com Windows, pode ser uma surpresa que os pacotes de transmissão UDP IPv4 enviados para o endereço de transmissão global 255.255.255.255
(todas as interfaces de rede disponíveis) não serão realmente entregues a todas as interfaces de rede disponíveis presentes no sistema.
Isso ocorre porque a implementação de rede do Windows de soquetes BSD considera que tais pacotes podem ser entregues apenas à interface de maior prioridade (a “padrão”). A prioridade da interface de rede é determinada pelo seu valor métrico que é (normalmente) atribuído automaticamente pelo sistema. A interface com o menor valor de métrica seria a interface de maior prioridade. Normalmente esta é a interface através da qual o seu PC está conectado à internet (ou ao seu roteador doméstico). Você pode verificar os valores métricos atribuídos pelo Windows a todas as interfaces de rede executando este comando no PowerShell:
Get-NetIPInterface
Qualquer que seja a justificativa para esse comportamento, há uma séria implicação de que todas as outras interfaces de rede não receberão pacotes de transmissão UDP globais e que um determinado aplicativo enfrentará problemas de conectividade se depender de tais pacotes para serem entregues corretamente.
Como isso importa? Considere um PC conectado à rede local com uma sub-rede padrão 192.168.179.0/24 e uma VPN com uma sub-rede 100.100.100.0/24. Agora há um serviço em execução neste PC que os clientes VPN também precisam acessar e esse serviço depende de pacotes de transmissão UDP globais para comunicação.
Naturalmente, a única maneira de resolver esse problema no Windows é conectar as duas redes. Mas a ponte é altamente indesejável porque isso exporia toda a sua LAN a uma parte conectada via VPN.
O BROADcast resolve esse problema muito bem, capturando pacotes de transmissão UDP globais entregues à rota primária (também chamada de rota “preferencial”) e simplesmente retransmitindo-os para todas as outras interfaces de rede adequadas pelas quais o Windows decidiu simplesmente passar.
Na captura de tela acima, o BROADcast está capturando pacotes de transmissão UDP globais entregues ao endereço LAN real 10.10.10.100
(sendo também a rota preferida) e os retransmitindo para o endereço VPN 100.100.100.1
. Sem o BROADcast em execução, os pacotes teriam permanecido entregues apenas para 10.10.10.100
, ignorando completamente o segmento VPN da rede.
Exemplos de software que dependem vitalmente desta funcionalidade incluem: aplicativos de bate-papo em LAN, alguns videogames multijogador e outros aplicativos descentralizados usados para colaboração.
Nota: O BROADcast requer privilégios de administrador para ser executado. Isso ocorre porque ele precisa capturar pacotes UDP usando soquetes brutos, e isso é permitido apenas para contas elevadas.
BROADcast é um aplicativo de console. Ele também pode ser executado em segundo plano como um serviço do Windows.
Comece a retransmitir pacotes de transmissão UDP globais:
broadcast.exe -b
Adicione -d
para exibir mensagens de diagnóstico detalhadas (útil para solução de problemas):
broadcast.exe -b -d
Os pacotes de transmissão seriam entregues a todas as interfaces de rede, exceto a padrão. Use Ctrl+C para sair do BROADcast de forma limpa.
Como recurso bônus, o BROADcast permite tornar qualquer interface a padrão (ou preferida). Isso é feito pegando o valor da métrica atual da interface que você deseja transformar em padrão e adicionando-o a cada outro valor da métrica da interface, tornando-o o valor de métrica mais baixo de todos:
BROADcast.exe -i " Interface " -m
Execute o comando novamente sem o argumento -m
para desfazer todas as alterações nos valores de métrica e restaurar os valores automáticos gerenciados pelo sistema:
BROADcast.exe -i " Interface "
“Interface” é o nome da interface de rede que pode ser pesquisado (e alterado) na seção “Centro de Rede e Compartilhamento” do Painel de Controle do Windows. Você pode acessá-lo rapidamente pressionando Win+R e abrindo:
%windir%explorer.exe shell:::{992CFFA0-F557-101A-88EC-00DD010CCC48}
Para instalar (ou desinstalar) o BROADcast como um serviço do Windows, invoque-o com o argumento apropriado:
broadcast .exe [install | uninstall]
O repositório BROADcast contém um exemplo de configuração OpenVPN e scripts para executar o BROADcast após iniciar um servidor OpenVPN usando um dispositivo TAP.
Observe que se você pretende iniciar o BROADcast a partir do OpenVPN usando sua funcionalidade de script iniciar/parar, você também deve executar o OpenVPN com privilégios de administrador, assim como o BROADcast.
Por isso, é altamente recomendável iniciar o BROADcast separadamente como um serviço do Windows.
Embora não esteja diretamente relacionado ao BROADcast ou à transmissão UDP, outra muleta útil da rede do Windows é o ForceBindIP.
Ao contrário do BROADcast, que fornece uma correção para o protocolo UDP, o ForceBindIP fornece uma correção semelhante para o protocolo TCP, forçando um aplicativo a vincular (ou escutar) em uma interface de rede específica, em vez daquela que ele escolhe automaticamente (que geralmente não é aquela que você querer).
Criar software de qualidade é difícil e demorado. Se você achar o BROADcast útil, pode me comprar um ☕!