Mostrando postagens com marcador software. Mostrar todas as postagens
Mostrando postagens com marcador software. Mostrar todas as postagens

quarta-feira, 17 de setembro de 2008

Nx Server - Uma ferramenta de acesso remoto realmente útil





Imagem: screenshot de uma máquina remota sendo executada daqui de casa.


Os testes mencionados no testo foram realizados com o servidor e o cliente NX sendo executados no sistema Ubuntu, um sistema baseado no Debian.

O NX Server é um programa incrível. Ele permite que os usuários de uma máquina a acessem remotamente através da Internet ou de uma rede local, como se estivessem sentados em frente à própria máquina. O NX abre uma sessão remota do X, que é, resumidamente, a parte responsável pela interface gráfica dos sistemas Linux, e permite que o usuário abra uma janela de comunicação remotamente, utilizando o seu mouse, teclado e monitor como se a máquina tivesse sendo acessada fisicamente.

Para garantir a segurança desta comunicação, o NX utiliza um túnel SSH para criptografar as informações trocadas e utiliza um sistema proprietário de compressão de imagens, que permite um acesso remoto fluido e com alta usabilidade.

CONFIGURAÇÃO DO SERVIDOR NX:


Para Configurar o Servidor NX na máquina a ser acessada, precisamos fazer o download dos seguintes pacotes no servidor:


# wget http://64.34.161.181/download/3.1.0/Linux/nxclient_3.1.0-6_i386.deb http://64.34.161.181/download/3.1.0/Linux/nxnode_3.1.0-6_i386.deb\ http://64.34.161.181/download/3.1.0/Linux/FE/nxserver_3.1.0-5_i386.deb

Em seguida, devemos instalar os pacotes nessa ordem:

# 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


O NX utiliza o SSH para a transferência de dados, portanto o SSH tem que estar instalado e configurado.
 
# apt-get install ssh

O NX é configurado por default pra inicializar junto com a máquina, mas se houver algum problema, podemos iniciá-lo com:

# /usr/NX/bin/nxserver --start

e desabilitá-lo com:

# /usr/NX/bin/nxserver --stop

A porta padrão utilizada pelo NX é a porta 22, já que ele usa o SSH para as transferências. Podemos mudar pra outra porta editando o "/etc/ssh/sshd_conf" no servidor e modificando a porta 22 pra qualquer outra. Em seguida precisamos informar ao NX server que a porta foi alterada. Para isso, basta editar o "/usr/NX/etc/node.cfg" e mudar o "SSHD_PORT=22" para o valor desejado. Depois é só reiniciar o servidor SSH e o Servidor NX:

# /etc/init.d/ssh restart
# /usr/NX/bin/nxserver --restart


CONFIGURAÇÃO E USO DO CLIENTE NX:

Na máquina cliente, precisamos somente instalar o nxclient:
 
# wget http://64.34.161.181/download/3.1.0/Linux/nxclient_3.1.0-6_i386.deb
# dpkg -i nxclient_2.0.0-98_i386.deb



Vamos ao que realmente interessa, que é a criação das conexões e a otimização do NX. Existem versões do cliente NX para várias distribuições Linux, Windows e Solaris, todas de download gratuito. Na maioria das distribuições Linux, ao instalar o cliente NX, são criados ícones no "Iniciar > Internet". Da primeira vez, use o "NX Connection Wizard" para criar a conexão inicial. Se o ícone não tiver sido criado, use o comando "/usr/NX/bin/nxclient -wizard" (usando seu login de usuário, não o root):


m1c949193

Além do Ip do servidor, você precisa informar a porta que ele escutará. O NX usa o SSH para estabelecer a conexão, por isso a porta padrão é a 22. Se você manteve a configuração padrão do SSH, esta é apenas uma opção que vai passar despercebida, mas se você configurou o servidor SSH (no servidor) para escutar em outra porta, é necessário especificar a porta configurada.

De volta à configuração do 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.

Na segunda janela, temos outra opção importante, que é a seleção do ambiente gráfico usado. O cliente NX não é capaz de detectar automaticamente o ambiente gráfico usado no servidor, de forma que você precisa especificá-lo na criação da conexão. Ao acessar um servidor Linux com o KDE, escolha "Unix > KDE" e, ao acessar um servidor com uma distribuição baseada no Gnome, use o "Unix > Gnome":
5f0af460
A opção "Select size of your remote desktop" permite especificar o tamanho da janela com a conexão remota. A opção "Available area" faz com que a janela ocupe todo o espaço útil do desktop, sem cobrir a barra de tarefas (o ideal na maioria das situações), mas você pode também especificar uma resolução qualquer, como "1000x700" ou "800x480". Não é necessário se prender às resoluções mais usadas, você pode utilizar qualquer valor.

O cliente NX se encarrega de criar ícones no desktop para as conexões criadas, o que facilita o acesso a elas:
1f11af9
Entretanto, para ter acesso ao botão "Configure...", que dá acesso ao painel de configurações, você precisa abrir a conexão usando o ícone "NX Client" no menu, ou o comando "/usr/NX/bin/nxclient -wizard".
Ao acessar o menu de configuração, você tem acesso a um conjunto extra de opções. A primeira dica é a opção "Remember my password" na aba "General", que permite memorizar a senha de acesso. Marcando a opção "Use custom settings" você tem acesso a um menu com opções adicionais relacionadas à compressão da imagem:

4e8cc44e
m49134060
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. Ela é uma boa opção para uso em rede local, onde temos bastante banda disponível.

Na aba "Advanced" temos a opção "Disable ZLIB stream compression", mais uma opção interessante para melhorar o desempenho das conexões via rede local em clientes com pouco processamento.
A opção "Disable encryption of all trafic" faz com que o NX deixe de utilizar o SSH como meio de transporte e passe a transmitir todos os dados da conexão de forma insegura. Embora reduza o volume de processamento usado, ela não é uma boa opção, pois, além de eliminar a principal vantagem do NX (a segurança das conexões), ela complica a configuração do firewall no servidor e nos clientes.

Originalmente, o NX transmite todos os dados através de túneis criados através do SSH, de forma que você precisa apenas manter a porta 22 aberta no firewall do servidor para que tudo funcione. Os clientes não precisam de portas abertas e podem inclusive acessar o servidor através de um proxy.

Entretando, ao desativar a encriptação o NX passa a utilizar o SSH apenas para fazer autenticação e estabelecer a conexão inicial, mas depois utiliza um conjunto de portas entre a 5000 e a 5200 para a transmissão dos dados. Com isso, os clientes precisam não apenas estarem diretamente conectados ao servidor, mas também ficarem com as portas de 5000 a 5200 abertas no firewall, ou seja, é muito mais simples manter a opção desativada, deixando que o NX encripte todo o tráfego.

Logo abaixo temos as opções relacionadas aos caches, que comentei brevemente no início do post. Uma observação sobre ocache feito no HD (on disk) é que ele é permamente, ou seja, o espaço continuará sendo ocupado até que você use a opção "Remove all cache files". Se você acessa servidores remotos com frequência, sobretudo se o faz através de conexões lentas, o cacheem disco é bastante útil, pois reduz consideravelmente o volume de dados que precisam ser transferidos a partir da segunda conexão. Entretanto, se você acessa através da rede local, então o cache no HD só atrapalha, pois transferir os dados através da rede é mais rápido do que lê-los no HD. Nesse caso, configure-o com o valor "0", o que desativa o recurso.

O cache na memória, por outro lado, ajuda tanto em conexões locais quanto em conexões remotas. Se seu computador tem bastante memória disponível, é interessante reservar 64 MB ou mais.

m3cfee73c
718fafb5
Na aba "Services", você tem a opção de ativar o compartilhamento de arquivos e impressoras entre o servidor e o cliente (Enable SMB print and file sharing), que permite que você acesse arquivos compartilhados na sua máquina de dentro da sessão remota e também imprima em impressoras compartilhadas na sua máquina. Esta opção é bastante interessante, pois permite que você trabalhe nos arquivos da sua máquina, usando os programas instalados no servidor.

Para que a opção funcione, é necessário que você crie os compartilhamentos no cliente (no caso dos clientes Linux você pode usar o Samba), mantenha o servidor Samba instalado e ativo no servidor e cadastre os compartilhamentos que serão mapeados usando o botão "Resources > Add".

A opção "Enable CUPS printing" logo abaixo é similar, permitindo que você imprima em uma impressora instalada na sua máquina a partir do servidor, mas ela é destinada a clientes Linux usando o Cups. Finalmente, a opção "Enable multimedia support" compartilha o dispositivo de som, permitindo que os fluxos de áudio gerados dentro da sessão do NX sejam tocados nas caixas de som do seu computador. Com isso, ao ouvir um MP3, o som será transportado via rede e tocado no seu computador e não no servidor.

Continuando, além de abrir um desktop completo (como no VNC), o NX pode ser configurado para abrir um aplicativo específico. Isso é especialmente útil quando você tem clientes Windows que precisam executar um aplicativo específico a partir de um servidor Linux. Para isso, abra a janela de configuração e, na aba "General", selecione a opção "Desktop > Unix > Custom" e clique no botão "Settings":

69baacbe
50cfa809
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, "firefox" ou "gimp". Marque também a opção "Floating window" ao invés de "New virtual desktop". Com isso, o aplicativo remoto será aberto na sua máquina como se fosse um aplicativo local, inclusive aparecendo na barra de tarefas.

Este recurso é especialmente interessante em clientes Windows, já que perite executar aplicativos Linux instalados no servidor de forma transparente, lado a lado com os programas do Windows:
1b14abf2
Um detalhe interessante é que se você abrir um terminal usando a opção "Run the console", você poderá chamar qualquer outro aplicativo instalado no servidor a partir dele. No screenshot anterior, 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 sendo executados 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 oferece a opção de criar um ícone no desktop. Ao clicar sobre o ícone criado, é aberto o aplicativo configurado, que é exibido no cliente como se fosse um aplicativo nativo, aparecendo na barra de tarefas. É uma boa forma de executar 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 NX) e, depois, nativamente.

Alguns trechos e imagens foram retirados de: http://www.guiadohardware.net