Isso deve ser possível se você usar UDP e números de porta para origem e destino, embora eu não tenha tentado. Por exemplo:
- A envia pacotes para B da porta 1194 para a porta 1194
- B envia pacotes para A da porta 1194 para a porta 1194 O firewall de
- B permite que os pacotes sejam A porque eles acham que estão respondendo aos pacotes que B enviou.
- O firewall de A permite que os pacotes de B pensem que estão em resposta aos pacotes enviados por A.
Muitos firewalls, mas não todos, permitirão esse tipo de perfuração UDP. Mas isso não funcionará com o TCP, porque os firewalls rastreiam o estado das conexões TCP mais de perto e você não pode enganá-los tão facilmente. Isso significa que o software PeerVPN que você mencionou está fora porque você mencionou que ele usa o TCP. Mas o OpenVPN deve funcionar, ele usa o UDP por padrão (e sua documentação menciona como o TCP para uma VPN não é uma boa ideia, por razões não relacionadas). Para o OpenVPN, a opção de usar um número de porta local fixo é --lport
.
Você também pode tentar usar portas de origem e destino fixas, mas uma porta diferente em cada lado.
Cenários onde há um NAT duplo em um ou ambos os lados, ou NATs que não tentam preservar as portas de origem, ou firewalls que são mais rígidos que o normal, irão frustrar a perfuração UDP.
Ou você pode usar o IPv6 em vez do IPv4. O grande número de endereços IPv6 disponíveis elimina a necessidade de NAT e todos os seus aborrecimentos!