quinta-feira, 8 de março de 2012

SSH no Fedora 16: No route to host. WTF!!!

Hoje quebrei a cabeça para conseguir copiar um arquivo do meu Desktop para o Notebook, no Fedora 16.
Primeiro passo foi criar um dispositivo de rede virtual para ambas as máquinas.
Eu uso uma conexao compartilhada por um vizinho, através de uma rede sem fio, e o IP é fornecido pelo servidor dele. Ou seja, se eu fosse fazer uma troca de dados utilizando o escopo da rede fornecida por essa conexão seria muito lento por causa da quantidade de rotas e firewalls que ele utiliza.

Para criar o dispositivo virtual e colocar os dois computadores na mesma rede foi simples.
No PC
ifconfig eth0:1 10.0.0.2 up

No Notebook
ifconfig p4p1:1 10.0.0.1 up

* sendo eth0 o nome do dispositivo de rede no meu PC e p4p1 o nome do dispositivo de rede no meu notebook.

Depois disso, fui executar a conexão. BOMBA!!
Aparecia uma "bendita" mensagem No route to host.

Verifiquei o status do serviço sshd e estava tudo ok.
service sshd status

Reiniciei o serviço por precaução
service sshd restart

Acrescentei o IP do PC no arquivo /etc/hosts.allow no Notebook. Fiz o mesmo processo no PC.

Não funcionava. Depois descobri que não há necessidade (nesse caso) de mexer nesses arquivos.

Procurei no google e segui algumas instruções.
Verifiquei o serviço pelo netstat -a | grep ssh
tcp    0   0   *:ssh   *:*   LISTEN

Tambem o netstat -an | grep :22
tcp    0   0   0.0.0.0:22   0.0.0.0:*   LISTEN
tcp    0   0   :::22             :::*   LISTEN

E o cat /etc/services | grep ssh
ssh    22/tcp     # The Secure Shell (SSH) Protocol
ssh    22/udp     # The Secure Shell (SSH) Protocol


No final, analisei o IPTABLES e ENCONTREI O PROBLEMA!

iptables -L -n

Simplesmente não havia nenhuma regra definida para o ssh. Porta 22 bloqueada.

Chain INPUT (policy ACCEPT)
target     prot opt source       destination        
ACCEPT     all  --  0.0.0.0/0    0.0.0.0/0     state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0    0.0.0.0/0          
ACCEPT     all  --  0.0.0.0/0    0.0.0.0/0          
REJECT     all  --  0.0.0.0/0    0.0.0.0/0     reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source       destination        
REJECT     all  --  0.0.0.0/0    0.0.0.0/0     reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source       destination


SOLUÇÃO:

Adicionar uma regra para a porta 22 editando o arquivo /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp -dport 22 -j ACCEPT




Antes do

-A INPUT -j REJECT --reject-with icmp-host-prohibited

Salve o arquivo e reinicie o serviço com o comando
service iptables restart

Ou reinicie o PC, se precisar.

Fonte: http://nixcraft.com/linux-hardware/6366-no-route-host.html
Dica postada pelo usuário Andrew Burdyug
Follow Me on Twitter