Un cliente VPN fai ping ao servidor de ficheiros, resolve o seu nome e aínda así non pode abrir unha compartición. A política de hosts de Samba é unha das catro capas que poden rexeitar esa conexión, e é a que a xente edita en último lugar. A lista de permitidos avalíase contra o enderezo de orixe que smbd recibe realmente, que pode non ser o enderezo que o cliente cre ter. Acertar con esa orixe converte un problema vago de permisos nun cambio de configuración dunha liña.

Catro capas que fallan coa mesma mensaxe

Un rexeitamento pode vir da ruta, do cortafuegos do host, da política de hosts de Samba ou da identidade SMB. Cada capa produce no cliente unha mensaxe que di máis ou menos o mesmo, por iso adiviñar consome unha tarde. Ordenar as comprobacións da rede cara a dentro elimina a maior parte das conxecturas.

Empece polo transporte. Se o porto 445 nunca chega ao servidor, ningún axuste de Samba importa, e unha captura na interface do servidor o resolve en segundos. Despois vén o cortafuegos do host no propio servidor, que pode descartar unha orixe permitida antes de que smbd a vexa. Só despois de que esas dúas pasen, a lista de permitidos convértese en candidata. A autenticación vai ao final, porque un fallo de inicio de sesión e un rexeitamento de host vense distintos no rexistro do servidor, mesmo cando o cliente presenta ambos como acceso denegado. A orde importa máis que as ferramentas, porque cada capa ten un comando que a responde.

Atope o enderezo de orixe que smbd ve realmente

Con acceso encamiñado o servidor adoita ver o enderezo do cliente do grupo VPN. Con tradución de orixe na pasarela ve no seu lugar o enderezo LAN da pasarela, e cada cliente detrás desa pasarela vólvese indistinguible.

Esa diferenza decide se unha entrada da lista de permitidos é política ou un burato. Permitir un enderezo de pasarela traducido admite a todos os que están detrás, que é o que unha regra por cliente raramente quería expresar. Lea a orixe no servidor e non na idea que o cliente ten do seu propio enderezo. Unha captura na interface do servidor é a forma máis barata de vela, e a mesma captura demostra se o paquete chegou. Limite a captura cun reconto de paquetes e engada un filtro de host cando saiba que cliente segue. A táboa de sesións de Samba é a outra metade da resposta: en smbstatus -b a columna de cliente de cada fila de sesión é o par que smbd rexistrou, e é a confirmación máis rápida do enderezo que chegou realmente ao servizo.

sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'

Lea a lista de permitidos como a le Samba

O axuste hosts allow toma unha lista de enderezos, redes ou nomes, e pode aparecer globalmente ou dentro dunha compartición. Dúas entradas que a vostede lle parecen equivalentes poden non selo para o analizador, así que a configuración efectiva é o que hai que inspeccionar. Iso significa a vista fusionada e non o ficheiro que editou por casualidade.

Un par ilustrativo de prefixos parece a liña de abaixo, e é un exemplo e non un substituto das entradas que xa existen. Conserve os clientes administrativos e de aplicacións que hoxe se conectan lexitimamente, e lea calquera lista de denegación na mesma pasada. Que un host sexa admitido depende da política no seu conxunto, así que probe o cliente exacto en lugar de razoar sobre a precedencia. O permiso de host tampouco di nada sobre permisos de compartición ou modos do sistema de ficheiros, que son portas separadas. Un éxito das ferramentas de proba significa que a política de hosts admite esa orixe, e nada máis.

hosts allow = 192.168.50.0/24 10.90.0.0/24
testparm -s
testparm -s /etc/samba/smb.conf client.example 10.90.0.14

Cambie o ficheiro que sobrevive a un reinicio

Nun host Linux normal a ruta de configuración é fixa e o servizo volve lela ao reiniciar. Nun encamiñador ou aparello o smb.conf en execución a miúdo xérase no arranque, e unha edición manual desaparece no seguinte reinicio. Use o mecanismo de personalización admitido do aparello, que adoita ser un ficheiro de configuración propio.

A tentación neste punto é gravar un firmware alternativo porque un fío informou de que funcionaba. Iso é un cambio grande para un problema pequeno de política, e saca o dispositivo do seu estado admitido. Identifique primeiro o control admitido, xa que a maioría dos aparellos expoñen a lista de permitidos mediante a súa propia interface. Se de verdade non o fan, esa limitación é un argumento para outro hardware e non para unha compilación non admitida.

Anote que ficheiro cambiou e que o volve xerar, para que a seguinte persoa non repita o diagnóstico.

Probe un cliente permitido e un cliente excluído

Probe ambos os resultados, non só o que quería. Un cliente permitido que se conecta demostra que o cambio funciona; un cliente excluído que segue rexeitado demostra que a regra non abriu simplemente todo.

smbclient -L //fileserver -U alice
sudo testparm -s /etc/samba/smb.conf alice-laptop 10.90.0.14
sudo tail -n 40 /var/log/samba/log.smbd

Cando a conexión nunca chega a smbd, a resposta está no encamiñamento ou no cortafuegos do servidor. Se o host está admitido e o inicio de sesión falla, o problema é a identidade e ampliar a lista de permitidos non axudará. Manteña a saída de diagnóstico en privado, porque un rexistro detallado de Samba pode expor rutas de comparticións e nomes de contas. Cambie unha capa por intento, ou o seguinte resultado non lle dirá nada.

Artigos relacionados