Instalando o NX Server, versão gratuita

Instalando o NX Server, versão gratuita

Embora esteja disponível para consulta, como parte do arquivo do site, este artigo está desatualizado.
Você encontra uma versão atualizada deste artigo disponível no: https://www.hardware.com.br/tutoriais/nx-server/

O NX Server é uma espécie de sucessor do VNC. Ele é mais prático de usar e utiliza um sistema mais inteligente de compressão dos dados. Ao invés de simplesmente tirar screenshots da tela e comprimir as imagens, como faz o VNC, ele abre uma sessão remota do X (como ao usar o XDMCP, que veremos a seguir), onde são transmitidas as instruções e os pixmaps usados para montar a tela que será exibida no cliente. Esses dados são compactados usando um algoritmo próprio (mais eficiente que sistemas tradicionais de compressão de dados, como o Zlib) e encriptados usando o SSH, o que torna o NX mais rápido e mais seguro que o VNC, tanto em links lentos (sobretudo conexões via ADSL ou modem) quanto em redes locais, onde banda não é problema.

Assim como no VNC, o NX exibe uma janela contendo um desktop do servidor. O tamanho da janela é ajustável e cada sessão é independente, permitindo que dezenas de clientes (Linux ou Windows) se conectem ao mesmo servidor Linux.

fig1

Ao encerrar a sessão, você tem a opção de suspendê-la, o que permite reconectar mais tarde (a partir do mesmo cliente), sem perder as janelas e trabalhos abertos.

fig2

O NX consome menos processamento e menos banda que o VNC. Em uma rede local isso permite abrir mais sessões simultâneas a partir do mesmo servidor, usar micros mais antigos como clientes e, ainda assim, executar os aplicativos de forma transparente, com tempos de resposta muito baixos. Os ganhos são ainda mais notáveis ao acessar máquinas remotamente através de conexões lentas. Um ADSL de 256k já é suficiente para trabalhar confortavelmente, acessando seu micro do trabalho, por exemplo. Surpreendentemente, mesmo uma conexão via modem se revela bastante utilizável.

No site da NoMachine (http://www.nomachine.com/) você pode fazer um testdrive, acessando um dos servidores NX da empresa. Os servidores estão localizados na Europa e ficam sobrecarregados em muitos horários, por isso são uma boa amostra do desempenho ao acessar servidores congestionados e distantes geograficamente.

Assim como o VMware, o NX Server é um produto comercial, desenvolvido pela http://www.nomachine.com como uma solução para redes com terminais leves.

Originalmente, o servidor era pago e o cliente ficava disponível para download gratuito. Mas, assim como o VMware, a partir de um certo ponto a NoMachine resolveu oferecer uma versão gratuita também do servidor, como uma forma de aumentar sua participação no mercado e assim ganhar espaço para vender suas soluções corporativas. Para nós isso é ótimo, pois você pode usar a versão básica do NX gratuitamente, em todas as máquinas onde ele for útil e pagar pelas soluções apenas onde existir um benefício tangível.

Para os mais puristas, existe também a opção de usar o FreeNX, que é uma versão 100% open-source do servidor NX, que combina as bibliotecas open-source distribuídas pela NoMachine e um conjunto de scripts. Atualmente, não existe muita vantagem em usar o FreeNX, já que temos a versão gratuita do NX Server, mas ele já foi a versão mais usada.

Para instalar a versão gratuita do NX Server, baixe os pacotes do “NX Free Edition for Linux”, “NX Node” e “NX Client” no http://www.nomachine.com/download.php.

É necessário baixar os três pacotes, pois o servidor depende dos outros dois para funcionar. Estão disponíveis versões em .rpm, .deb e também um pacote genérico, em .tar.gz, que pode ser usado no Slackware e outras distribuições.

fig3

Ao instalar, comece instalando o cliente, seguido pelo NX Node, deixando o servidor por último, como em:

# dpkg -i nxclient_2.0.0-98_i386.deb
# dpkg -i nxnode_2.0.0-98_i386.deb
# dpkg -i nxserver_2.0.0-74_i386.deb

Ao instalar a versão .tar.gz, copie os arquivos para o diretório “/usr” e descompacte-os a partir daí, (criando a pasta /usr/NX), como em:

# cp -a nx*.tar.gz /usr
# cd /usr
# tar -zxvf nxclient-2.0.0-98.i386.tar.gz
# tar -zxvf nxnode-2.0.0-98.i386.tar.gz
# tar -zxvf nxserver-2.0.0-74.i386.tar.gz

Em seguida, execute os dois scripts que concluem a instalação (eles são executados automaticamente ao instalar a partir dos pacotes .deb ou .rpm):

# /usr/NX/scripts/setup/nxnode –install
# /usr/NX/scripts/setup/nxserver –install

Não é necessário compilar nada pois, apesar da extensão, os pacotes contém os binários já compilados e não código fonte.

Nas estações, você precisa instalar apenas o pacote “nxclient”, que possui versões para Linux, Windows, OSX e até Solaris.

O servidor NX utiliza o SSH como meio de transporte, por isso, para utilizá-lo é necessário que o servidor SSH esteja ativo. É justamente devido à necessidade do servidor SSH e do servidor X que o servidor NX roda apenas sobre o Linux e Solaris. Você pode se conectar ao servidor a partir das estações Windows, mas não rodar o servidor NX sobre elas. Pessoalmente eu não considero esta uma grande limitação, pois o XP e o Vista podem ser acessados remotamente via RDP, como veremos a seguir.

Uma vez instalado, o servidor NX permite que você se conecte usando qualquer login de usuário disponível no servidor (com exceção do root). Se você quer dar acesso a alguém, basta criar uma nova conta, usando o “adduser”.

fig4

Por padrão, o servidor NX é inicializado automaticamente durante o boot, junto com o servidor SSH. Caso queira desativá-lo temporariamente, use o comando “/usr/NX/bin/nxserver –stop” e, para inicializá-lo novamente, use o “/usr/NX/bin/nxserver –start”.

No cliente, estão disponíveis ainda opções com o nível de compressão dos dados e do tamanho da janela. Usando a opção “LAN”, que é destinada a conexões via rede local, não existe perda de qualidade de imagem, mas, ao usar as demais opções, destinadas a conexões mais lentas, as imagens são comprimidas via JPG, o que garante uma atualização mais rápida, porém com uma certa perda de qualidade. Conforme você vai usando, os pixmaps vão sendo retransmitidos e substituídos por cópias sem compressão, fazendo com que a imagem vá ficando mais nítida.

fig5

Na ilustração abaixo, estou me conectando a um servidor com o Kurumin via ADSL (256k), abrindo uma tela de 640×480. Você pode notar que alguns pontos da imagem estão um pouco embaçados por causa da compressão via JPG, mas no geral a imagem está nítida e os tempos de resposta são bem superiores aos obtidos com o VNC na mesma conexão.

fig6

Ao acessar via rede local, você pode desativar a compressão em JPG, evitando a perda de qualidade da imagem. Para isso, na configuração do cliente NX, acesse a opção “General > Display > Use custom settings > Modify”.

Aqui você tem a opção de ajustar o nível de compressão do JPG (os níveis mais altos são úteis em conexões via modem), usar compressão via RGB (um formato sem perda) ou desabilitar completamente a compressão usando a opção “Use plain X bitmaps”. Esta última opção consome mais banda da rede (o que não chega a ser um problema em uma rede de 100 megabits), mas em troca usa menos processamento, tanto no servidor quanto no cliente.

Para que você consiga se conectar a um servidor NX com firewall ativo, é necessário que o firewall no servidor esteja com a porta 22 e as portas de 5000 a 5200 abertas. Você pode abrir as portas necessárias no Iptables, incluindo as duas regras a seguir no início do script de firewall do servidor:

iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 5000:5200 -j ACCEPT

As portas de 5000 a 5200 são necessárias por que por padrão o cliente NX utiliza o SSH para fazer autenticação e estabelecer a conexão inicial, mas depois utiliza outra porta para a transmissão dos dados. É possível fazer com que todo o tráfego seja transmitido através do SSH. Isso faz com que a sessão fique com tempos de resposta um pouco mais altos (pois o sistema tem o trabalho de desencriptar as informações antes de fazer cada atualização), mas, por outro lado, melhora a segurança, pois tudo passa a ser encriptado.

Ativando a encriptação passa a ser utilizada apenas a porta do SSH (22), o que torna desnecessária a segunda regra de firewall. A opção está na tela de configuração da conexão, em “Advanced > Enable SSL encription of all traffic”.

fig7

No cliente, não é necessária nenhuma configuração em especial. Você continua conseguindo se conectar ao servidor mesmo que o firewall bloqueie completamente as conexões de entrada. Basta ter acesso (de saída) ao servidor através da porta 22.

Problemas comuns

Existe um problema de compatibilidade conhecido entre o NX Server e algumas distribuições baseados nas versões recentes do X.org. Nestes casos, ao tentar conectar a partir dos clientes, você recebe uma mensagem como:

fig8

Clicando na opção para ver os detalhes, você vê um relatório de erro, que termina com algo como:

Info: Established X server connection.
Info: Using shared memory parameters 1/2048K.
Error: Connection with remote peer broken.
Error: Please check the state of your network and retry.
Session: Session terminated at ‘Tue Aug 8 09:23:03 2006’.
Warning: Parent process appears to be dead. Exiting keeper.

Este problema é causado pela diferença na localização das fontes e do arquivo “xauth” nas diferentes versões. Felizmente, a solução é simples. Abra o arquivo “/usr/NX/etc/node.cfg” (no servidor) e adicione as três linhas abaixo:

COMMAND_XAUTH=/usr/bin/xauth
DEFAULT_X_DPI = “75”
AGENT_EXTRA_OPTIONS_X = “-fp /usr/share/fonts/truetype/ttf-bitstream-vera/,
/usr/share/fonts/truetype/msttcorefonts/,
/usr/share/fonts/X11/misc/,
/usr/share/fonts/type1/gsfonts/”

Aqui tinha que quebrar a última linha para não extrapolar o tamanho da página, mas na hora de editar o arquivo é importante que todas as pastas com fontes na linha “AGENT_EXTRA_OPTIONS_X” sejam colocadas na mesma linha, separadas por vírgula e sem espaços.

fig9

Caso as fontes de tela no Firefox e outros aplicativos que utilizam a biblioteca GTK fiquem distorcidas, como no screenshot abaixo:

fig10

… marque a opção “Configure > General > Use custom settings > Modify > Disable the render extension”, no cliente. Ela desativa o uso do módulo do X que causa o problema.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X