Pergunta

I deve, por vezes, escrever software para estabelecer um soquete com um servidor específico que residem dentro de uma VPN Cisco. Eu simplesmente escrever o meu software como se não houvesse VPN (fazendo uso da biblioteca de soquetes padrão). Quando é hora de executar este programa, eu conectar manualmente à VPN usando o software cliente instalado no meu computador, em seguida, executar o programa em si.

No entanto, seria desejável para escrever o software para tirar proveito de uma biblioteca de soquete especializada capaz de comunicar através da VPN diretamente, sem o uso de qualquer software cliente instalado.

Aqui está um código Java ilustrando a funcionalidade que eu gostaria:

String vpnHost = ...;
String vpnUser = ...;
String vpnPassword = ...;
VPNConnection vpnConnection = new CiscoVPNConnection(vpnHost, vpnUser, vpnPassword);

String serverHost = ...;
int serverPort = ...;
Socket socket = vpnConnection.openSocket(serverHost, serverPort);

É possível estabelecer uma conexão a uma VPN sem instalar qualquer software cliente?

Foi útil?

Solução

Isso depende de como o servidor VPN está configurado.

A maioria dos produtos de VPN usar IPSEC, um protocolo padrão para criptografar as conexões TCP / IP. A maioria dos produtos também usam ISAKMP, a Arquitetura Key Management Protocol Internet Security, também um padrão, para configurar a sessão. código-fonte para IPSEC e ISAKMP está prontamente disponível, e já pode ser instalado em seu sistema.

Agora, a má notícia: embora tudo o que eu já mencionei é padrão, os esquemas de autenticação que podem ser usados ??com ISAKMP são quase todos proprietários. Os dois esquemas de autenticação "padrão" são a chave pré-compartilhada e X.509 certificados. Se o servidor VPN está configurado para permitir qualquer um destes, então você tem uma chance. Caso contrário, você não pode realmente usar a VPN, como o protocolo é verdadeiramente proprietária e quase impossível de fazer engenharia reversa como a conversa de autenticação é criptografado.

Um caminho muito mais fácil: você realmente precisa de uma VPN, ou há uma maneira você pode túnel através de SSL? Eu acho que Java suporta SSL; você pode apenas criar o soquete seguro que você precisa e de lá ir.

Se você sabe o sistema do cliente que você está usando, então considerar descascar para fora para chamar o cliente VPN da Cisco para esse sistema.

Caso contrário, você vai ter que replicar o que um cliente VPN faz. O VPN autenticação executa cliente e configuração da sessão com ISAKMP, e instala o resultado no kernel para criar a conexão VPN. implementações ISAKMP estão disponíveis; você só precisa descobrir o que a autenticação está sendo usado e tentar definir isso. Em que ponto você vai ter escrito o seu próprio cliente VPN.

Outras dicas

Eu uso o pacote vpnc no Linux, a fim de conectar a Cisco VPN da minha empresa, uma vez que não temos um cliente linux compatível. vpnc é escrito em C, porém, assim que você terá que realizar uma porta.

Você pode ler doc Oficial cisco e depois que você pode criar um arquivo bat com estes dados: vpnclient conexão [nome da conexão] pwd [Senha] e desligue. Incluí-lo ao seu programa java: Runtime.getRuntime () exec ( "cmd / c start [Caminho para o arquivo bat]");.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top