O pacote do
openconnect do repositório oficial foi originalmente escrito para suportar os servidores VPN
AnyConnect da Cisco e, desde então, foi ampliado com suporte experimental para o Juniper Network Connect e servidores VPN Junos Pulse (--protocol = nc).
Para suporte à plataforma PAN GlobalProtect (--protocol = gp) é necessário compilar o source obtido em:
https://github.com/lins05/openconnect
Há também a necessidade de instalar o java jre e jdk para compilar o source.
A fim de resolver melhor dependências, prefiro utilizar o aptitude, mas pode ser instalado via apt-get.
# aptitude install gnutls-bin gnutls-dev java-common default-jre gcj-jre gcj-6-jre libopenconnect-dev libopenconnect5 openconnect openconnect-dbg automake make gcc g++ binutils libtool libtool-bin openjdk-8-jre-dcevm openjdk-8-source openjdk-8-jdk libconvert-nls-date-format-perl liblocale-msgfmt-perl gettext default-jre openjdk-8-jre openjdk-8-dbg openjdk-8-demo oathtool liboath0 liboath-dev libsasl2-dev libsasl2-modules-gssapi-heimdal libpam-oath oath-dbg mlocate libxml2-utils uml-utilities bridge-utils net-tools git
Instalação do Openconnect
Adicionar suporte ao JAVA.
A variável $JAVA_HOME contém o caminho do diretório de instalação do java no sistema, para verificar executar:
# echo $JAVA_HOME
Caso não retorne valor algum, realizar os procedimentos abaixo:
Localizar diretório do java com o comando:
# readlink -f /usr/bin/java | sed "s:bin/java::"
O resultado será o caminho da instalação, então realizar o export da variável JAVA_HOME.
# export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
O source do openconnect utiliza a biblioteca jni.h para suporte ao java, localizado no subdiretório /source no home do java. Então, o caminho tem que estar apontando para ele.
Caso ocorra algum erro na compilação, instalar o mlocate (aptitude install mlocate), executar o comando updatedb, e depois locate jni.h, o caminho onde esta biblioteca for encontrada deve ser o caminho $JAVA_HOME.
Caso não seja encontrada, deve ser reinstalado o jdk.
Compilando o fonte:
Sugiro realizar o clone dentro do diretório /usr/src:
# cd /usr/src
# git clone https://github.com/lins05/openconnect.git
Se baixar o fonte zip, copiar para o mesmo diretório e descompactá-lo:
# gunzip master.zip
Atribuir permissão de execução aos arquivos fonte:
# chmod -R +x openconnect/
# cd openconnect/
Já no diretório descompactado ou clonado do git, realizar os seguintes procedimentos:
# ./autogen.sh
# ./configure --with-java
# make check
# make install
Depois de compilado, existirão dois binários do openconnect, a versão instalada via apt-get (aptitude) em /usr/bin/openconnect e a versão compilada com suporte ao protocolo gp em /usr/local/sbin/openconnect.
Será necessário compilar as novas bibliotecas para a pasta lib do sistema:
# cp /usr/local/lib/libopenconnect.so.5.5.0 /usr/lib/x86_64-linux-gnu/
* dependendo do sistema o diretório lib de destino pode estar em outro lugar
E para matar a duvida da localização, execute o comando abaixo, depois de instalar o mlocate e executar o updatedb:
# locate libopenconnect.so.5
Então renomear a versão antiga da biblioteca nativa e copiar a nova:
# mv /usr/lib/x86_64-linux-gnu/libopenconnect.so.5 /usr/lib/x86_64-linux-gnu/libopenconnect.so.5.old
# cp /usr/local/lib/libopenconnect.so.5.5.0 /usr/lib/x86_64-linux-gnu/libopenconnect.so.5