Eu tenho 2 LANs em casa:
- Uma LAN principal rodando atrás do modem do meu ISP (agindo como um roteador com um endereço IP 192.168.0.1, que chamarei de roteador A). Anexado a este roteador está um Raspberry Pi em 192.168.0.4.
- Uma LAN secundária rodando atrás de um roteador sem fio TP-LINK, conectado ao meu modem (minha LAN principal) em 192.168.0.10 (portanto, o gateway padrão deste roteador é 192.168.0.10), que chamarei de roteador B. o IP do roteador endereço em sua LAN é 192.168.1.1. Anexado a este roteador está um disco rígido que eu acesso através de um compartilhamento samba no endereço 192.168.1.1. Aqui está uma visão geral desta configuração:
Router A 192.168.0.1 | | - Raspberry Pi | Router B 192.168.0.10 to router A, | 192.168.1.1 to clients within | Samba server - 192.168.1.1
Estou tentando acessar meu compartilhamento de samba do meu Raspberry Pi, mas como eles estão em LANs diferentes, o Pi não consegue ver meu compartilhamento de samba. Tentei encaminhar portas samba no roteador B (portas 137 a 139 e porta 445) e acessar o compartilhamento do Pi usando IP 192.168.0.10 (endereço IP do roteador B na LAN do Pi), mas não está funcionando. Quando eu conecto o Pi à LAN do roteador B (usando um dongle wifi), consigo acessar o compartilhamento do samba perfeitamente no IP 192.168.1.1, mas como eles estão longe, continuo perdendo a conexão. Como você sugeriria que eu fizesse isso, sem conectar fisicamente o Pi ao roteador B?
Responder1
Você tem umroteamentoproblema.
Considere o seguinte: seu RPI (192.168.0.x) não sabe nada sobre a existência de outra LAN (192.168.1.x). Como você pode informar que existe outra LAN próxima a ela? Resposta: usando umrota, que é uma informação muito específica que indica como uma sub-rede/host específico pode ser alcançado.
No seu exemplo, sua LAN 192.168.1.x está atrás do host "roteador B" (192.168.0.10). Para acessar a LAN 192.168.1.x, os hosts conectados à outra LAN (192.168.0.x) precisavam saber exatamente a mesma coisa. Em outras palavras, você teve que informar à sua LAN 192.168.0.x que a outra LAN (192.168.1.x) pode ser vista através do roteador 192.168.0.10.
Você pode fazer isso usando o seguinte comando de roteamento do Linux: route add -net 192.168.1.0/24 gw 192.168.0.10
. Teoricamente, este comando é necessário em cada host residente na LAN 192.168.0.x - algo um tanto chato de se realizar quando você tem vários hosts (talvez tendas de). No entanto, existe outra solução: deixar os vários hosts 192.168.0.x nada saberem sobre a outra LAN, mas informar ao roteador principal (roteador A - 192.168.0.1) que tal rede existe. Pelo que li, porém, você não pode alterar a tabela de roteamento do roteador A em nenhum modo, então você só pode usar o primeiro método explicado acima.
Uma última solução desencorajada que não envolve modificação de roteamento é o método de encaminhamento de porta. Neste caso, você basicamente diz ao roteador B (192.168.0.10) para configurar um ouvinte de samba "falso" e redirecionar cada solicitação de samba para o servidor samba interno 192.168.1.1. Por que isso é desencorajado? Porque o NAT pode aumentar inutilmente a complexidade da rede e porque requer um processamento significativo pelo roteador B - tornando suas conexões mais lentas.
Uma última coisa: fazendo seu teste/configuração,sempre use o endereço IP do samba e não o nome do servidor.Isso porque o NETBEUI (que evoluiu para o NETBIOS) não foi projetado para funcionar entre diferentes LANs, e isso afeta seus recursos de resolução de nomes. Então vamos manter as coisas simples aqui: use o endereço IP do servidor samba para testar conexões.