Usando o cliente NX e comparando: FreeNX x VNC - Hardware.com.br Usando o cliente NX e comparando: FreeNX x VNC - Hardware.com.br
Home > Tutoriais > Usando o FreeNX Server
Usando o cliente NX e comparando: FreeNX x VNC
Usando o cliente NX
Para se conectar ao servidor a partir dos clientes, você precisa primeiro baixar o NXclient no:
Existem versões para várias distribuições Linux, Windows e Solaris, todas de download gratuito. Na maioria das distribuições, ao instalar o cliente NX, são criados ícones no "Iniciar > Internet".
Além do IP do servidor, você precisa informar a porta em que ele está escutando. O FreeNX usa o SSH para estabelescer a conexão, por isso a porta padrão é a 22. Caso você queira mudar a porta, edite o arquivo "/etc/ssh/sshd_conf".
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.
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.
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 PNG (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 numa rede de 100 megabits) mas em troca usa menos processamento, tanto no servidor quanto no cliente.
Em versões antigas do FreeNX, a compressão em PNG não funciona corretamente, fazendo com que ao escolher a opção continue sendo usada a compressão em JPG. Nestes casos, a única opção é usar os bitmaps do X, sem compressão.
Para que você consiga se conectar a um servidor FreeNX com firewall ativo, é necessário que o firewall no servidor esteja com as portas 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 –destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp –destination-port 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 estabelescer 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. Isto faz com que a seçã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 encriptation of all traffic".
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.
Além de abrir um desktop completo (como no VNC), o FreeNX pode ser configurado para abrir um aplicativo específico. Isto é especialmente útil quando você tem clientes Windows que precisam rodar um aplicativo específico a partir de um servidor Linux.
Para isso, abra a janela de configuração e acesse a opção "General > Desktop". Selecione a opção "Custom"
Clique agora no botão "Settings". Na janela que será aberta, marque a opção "Run the following command" e especifique o comando do aplicativo que você deseja que seja executado, como por exemplo "gimp" ou "konqueror". Marque também a opção "Floating window" ao invés de "New virtual desktop".
Um detalhe interessante é que se você abrir um terminal, usando o comando "konsole" ou "xterm", você poderá chamar qualquer outro aplicativo instalado no servidor a partir dele. No screenshot a baixo, por exemplo, configurei o cliente NX para abrir uma janela do konsole, que usei para abrir o Gimp, o Kopete e o Kaffeine. Como pode ver, todos estão rodando integrados ao desktop do Windows, com janelas próprias e botões na barra de tarefas.
Ao criar uma nova conexão, o cliente NX se oferece para criar um ícone no desktop. Neste caso, ao clicar sobre o ícone é aberto o aplicativo configurado, que é exibido no cliente como se fosse um aplicativo nativo, aparecendo na barra de tarefas e tudo mais. É uma boa forma de "rodar" aplicativos Linux no Windows e impressionar seus amigos, ou "quebrar o gelo" dentro de projetos de migração, implantando os aplicativos Linux que serão futuramente usados, inicialmente dentro do Windows, através do FreeNX e depois nativamente.
FreeNX x VNC
Existem muitas diferenças na forma como o FreeNX e o VNC trabalham. No VNC, a seção fica aberta mesmo depois de fechar a janela, o que permite que você continue trabalhando na mesma seção, mesmo depois de ir para outro micro. No FreeNX, é possível se reconectar à uma seção suspensa apenas a partir do mesmo cliente.
No VNC é preciso rodar o comando "vncserver" no servidor (o que remotamente é geralmente feito conectando primeiro via SSH) para abrir cada seção, e o comando "vncserver –kill :1" (onde o :1 é o número da seção) para fechá-la, tudo feito manualmente. No FreeNX, o servidor principal fica residente e as seções vão sendo abertas automaticamente conforme os usuários se conectam. Cada usuário loga-se usando seu próprio login e senha.
O VNC não oferece suporte a antialising de fontes e outros recursos gráficos, o que faz com que a qualidade da imagem não seja a mesma que ao usar a máquina localmente. No FreeNX estes recursos são melhor suportados.
Versões antigas no VNC tinham problemas com a acentuação em teclados ABNT, isso foi resolvido nas versões recentes. No FreeNX a configuração do teclado é independente do servidor, você pode configurar o teclado no servidor da forma que for necessária, pois vale a configuração do cliente.
O VNC trabalha tirando screenshots da tela e compactando as imagens antes de enviar via rede. Ao chegar no cliente, as imagens precisam ser descompactadas, montadas e só então exibidas na tela. É preciso que tanto o servidor quanto o cliente sejam relativamente rápidos (600 MHz ou mais) para obter uma boa velocidade. O FreeNX usa o sistema de comunicação do X, combinado com compactação e encriptação via SSH, uma combinação que consome bem menos processamento, tanto no cliente quanto no servidor. O requisito mínimo nos clientes seria algo como um Pentium 100.
No VNC não existe encriptação dos dados, você pode usar um túnel via SSH para obter uma conexão segura (como vimos a pouco), mas isso torna a conexão mais lenta e a configuração mais trabalhosa. O FreeNX já oferece encriptação nativamente, embora seja possível desabilitar este recurso para diminuir um pouco o uso de recursos do sistema.
O VNC não oferece nenhum sistema para transferir arquivos entre o servidor e o cliente, é preciso manter um servidor FTP, SSH, Samba ou NFS aberto para isso. No FreeNX é possível usar o próprio SSH para transferir arquivos, usando o sftp. Se você está usando um cliente Linux, a forma mais fácil de fazer isso é usar o módulo fish:// do Konqueror. Abra o gerenciador de arquivos e escreva na barra de endereços: "fish://kurumin@192.168.1.35", onde o kurumin é o login e o 192.168.1.35 é o IP do servidor. Ele pedirá a senha e em seguida mostrará os arquivos do servidor. Você pode transferir arquivos simplesmente arrastando para uma janela do gerenciador de arquivos local.