Como resolver hostnames com Raspbian 5/5/2015?

1

Estou tentando compartilhar uma unidade NTFS, ou um diretório na unidade, via samba, e encontrei vários tutoriais que mostram isso em poucos minutos (menos as atualizações e as instalações de pacotes). Tenho cerca de 3 semanas e não consigo trabalhar. Atualmente, outras máquinas na rede não podem resolver o nome do host, e acredito que essa seja a causa raiz do erro 0x80070035.

Se eu usar o endereço IP da seguinte forma: \\ 192.168.1.xx \, posso ver os compartilhamentos de compartilhamento e obter um nome de usuário / senha. No entanto, depois de colocar um nome de usuário e senha, recebo o código de erro: 0x80070035 O caminho da rede não foi encontrado (fotos na pergunta SuperUser). Eu comecei esta questão no SuperUser e está parado, então imagino que eu venha aqui e pergunte o que pode ser feito sobre tudo isso.

Tutoriais que usei

Tutorial 1 - Raspberry Pi NAS: Construa um servidor Raspberry Pi Samba

Tutorial 2 Como transformar um Raspberry Pi em um dispositivo de armazenamento de rede de baixo consumo

Tutorial 3 / Youtube DIY - Raspberry Pi como NAS com Samba - How To

Perguntas e Pesquisas

Como um n00b começa a solucionar problemas do samba? Existe um tutorial que me ajudará a conseguir esse trabalho?

Eu já queimei uma nova imagem raspbian e comecei do zero e isso não ajudou. Eu não deveria precisar de avahi / Bonjour já que estou usando samba / netbios, e eu não quero usar modificações de arquivos HOSTS já que tenho várias máquinas com as quais eu quero usar. Dado o fato de que existem pacotes e tutoriais, estou confuso porque não consigo colocar isso em prática e porque estou tendo tanta dificuldade. Especialmente dada a homogeneidade das instruções.

nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the 'glibc-doc-reference' and 'info' packages installed, try:
# 'info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal dns mdns4 wins [NOTFOUND=return]
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

ping do pi framboesa:

$ ping -c3 raspberrypi
PING raspberrypi (127.0.1.1) 56(84) bytes of data.
64 bytes from raspberrypi (127.0.1.1): icmp_req=1 ttl=64 time=0.208 ms
64 bytes from raspberrypi (127.0.1.1): icmp_req=2 ttl=64 time=0.200 ms
64 bytes from raspberrypi (127.0.1.1): icmp_req=3 ttl=64 time=0.240 ms
--- raspberrypi ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.200/0.216/0.240/0.017 ms

smb.conf

[global]
   workgroup = WORKGROUP
#   NetBIOS name = raspberrypi
   server string = %h server
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   encrypt passwords = true
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n$
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[homes]
   comment = Home Directories
   browseable = no
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
[Shares]
   comment = Shares Folder
   path = '/media/80Gigger/shares'
   browsable = yes
   read only = no

fstab

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
#/dev/sda1      /media/USB              auto    gid=1002,uid=1001       0       0
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[o$

Atualização 1

etc \ hosts

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       raspberrypi

Atualização 2

A máquina do Windows não faz parte de um domínio. O pi tem o nome do host e o arquivo de hosts padrão. Quando você diz "mexer com", o que devo mudar?

$ hostname
raspberrypi

$ nmblookup raspberrypi
querying raspberrypi on 192.168.1.255
192.168.1.14 raspberrypi<00>

$ nmblookup -M -- -
querying __MSBROWSE__ on 192.168.1.255
192.168.1.14 __MSBROWSE__<01>

$ smbclient -L 192.168.1.14
Enter pi's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        Shares          Disk      Shares Folder
        IPC$            IPC       IPC Service (raspberrypi server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

        Server               Comment
        ---------            -------
        D-WHALEY2
        LAPTOP
        RASPBERRYPI          raspberrypi server

        Workgroup            Master
        ---------            -------
        WORKGROUP            RASPBERRYPI

Atualização 3

Eu descomentei o campo NetBios no raspberry pi e agora estou recebendo um erro diferente no Windows Explorer; erro 0x80004005. Eu recebo este erro se eu tentar navegar para \ raspberrypi \. Eu encontrei esta questão que descreve muitas facetas do erro. Eu só encontrei um adaptador Microsoft 6to4 embora. Excluí-lo e reiniciar não teve efeito.

Ainda recebo o erro 0x80070035 se eu navegar para \ 192.168.1.14 \ e inserir as credenciais apropriadas.

Eu tenho ipv6 desativado no laptop do Windows 7. Eu não acho que isso teria qualquer influência sobre esse fenômeno.

No pi de framboesa, não consigo pingar o nome da máquina do Windows, nem consigo acessar o compartilhamento de samba na máquina com Windows 7. Não tenho certeza se o PCMANFM pode até fazer isso, mas certamente não está funcionando.

Atualização 4

Agora tenho o samba funcionando e deixando-me ver os arquivos no compartilhamento, embora ainda não tenha a resolução de nomes funcionando. Progresso! Obrigado pela ajuda de todos até agora!

Parece que estou lutando mais de um problema e resolvi o acesso ao problema de compartilhamento. A unidade precisava de um ponto de montagem permanente para ser lido / gravado para o samba, então eu tive que modificar o arquivo fstab. Além disso, parecia que quando eu removi o espaço no nome do volume, eu tinha deixado as aspas simples em torno do juramento no arquivo smb.conf, e olhando no log do samba, que estava causando problemas, então eu tive que editar isso também .

Ainda não consigo resolver o nome do pi para o IP fazendo o ping dele, apesar de tentar decifrar a resposta abaixo que parece ajudar.

Eu refiz o smbpasswd para a conta que estou usando, caso eu tenha esquecido de fazer isso anteriormente:

sudo smbpasswd -a backups

este é o meu novo arquivo de hosts:

127.0.0.1       raspberrypi localhost
::1             raspberrypi localhost ip6-localhost ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

#127.0.0.1      raspberrypi
#127.0.1.1      raspberrypi

Este é o meu arquivo fstab:

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1       /media/80Gigger         auto    gid=1002,uid=1001       0      $
# a swapfile is not a swap partition, so no using swapon|off from here on, use $

Este é o meu novo smb.conf:

[global]
   workgroup = WORKGROUP
   #netbios name = raspberrypi
   server string = %h server
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   encrypt passwords = true
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n$
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[homes]
   comment = Home Directories
   browseable = no
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
[Shares]
   comment = Shares Folder
   path = /media/80Gigger/shares
   browsable = yes
    
por YetAnotherRandomUser 25.07.2015 / 22:59

3 respostas

4

Se você disser "ping raspberrypi", ele não usará a mesma maneira de fazer uma pesquisa de nome do que as máquinas do Windows ... provavelmente . Ou seja, os protocolos SMB / CIFS têm três maneiras de fazer pesquisas de nome, mas os outros dois são realmente usados apenas se você configurar um domínio, o que não está fazendo.

Isso significa que você precisa fazer pesquisas de nome através do protocolo NMB. O Samba usará como padrão o nome do host da máquina local (a saída do comando hostname ) como o nome do NMB. Tente executar isso e verifique se é o nome do host que você esperava. Se não, mexa com /etc/hosts até que isso aconteça. Você também pode ter que corrigir o / etc / hostname (mas observe que as alterações no último arquivo não estão ao vivo, caso você execute o script hostname init, ou reinicialize).

A ferramenta samba para fazer pesquisas de NMB é chamada, sem surpresa, nmblookup . Execute isso no pi do framboesa com a saída de hostname como seu argumento e verifique se ele corresponde ao endereço IP do pi do framboesa. Se isso não acontecer, poste a saída. Se isso acontecer, mas o endereço IP for precedido por um número hex entre colchetes angulares (< >), tudo bem (o número hexadecimal é o tipo do resultado; existem muitos tipos de resultados possíveis).

O protocolo NMB é bastante horrível, em parte porque ele quer eleger um host 'master browser', que nem sempre funciona corretamente. Tente executar nmblookup -M -- - (ou seja, nmblookup dash-capital m-space-traço-traço-espaço-traço. Sim, isso é feio). Isso fará uma pesquisa para o localizador mestre. Anote o endereço IP que você recebe de volta. Execute smbclient -L ip , onde ip é esse endereço IP. Verifique se o seu pi de framboesa está listado. Se não for, você pode tentar dar ao framboesa pi uma chance maior de ganhar uma eleição de navegador mestre, especificando preferred master = yes em seu smb.conf . Se você estiver executando um domínio, no entanto, não (o mestre do domínio precisa ser o localizador mestre, caso contrário, os logins do domínio falharão).

Se você estiver executando o Windows 7 ou superior associado a um domínio, por padrão, o Windows não fará mais pesquisas de NMB. Nesse caso, você pode precisar definir algumas chaves do Registro para alterar esses padrões (essas chaves podem ser encontradas no wiki do samba). Como alternativa, você pode unir o pi do raspberry ao domínio do Windows, o que removerá a necessidade de NMB.

    
por 26.07.2015 / 01:56
1

Isso pode apontar você na direção certa, mas pode não resolver o problema. Os demônios DHCP e DNS nos roteadores podem atrapalhar as coisas. No meu caso eu estava tendo o mesmo problema com o opensuse e o raspberypi. Aqui estão todos os passos que fiz:

  1. Arquivo de nome de host editado / etc / hostname mymacnine tried alsoe mycmachine.domain Nem funcionou.
  2. Confundido com o resolv.conf Trabalhou até que algo fosse atualizado ou excluído na máquina Windows
  3. Descobri que meu WRT1900ac tem um lugar onde você enderece o nome do domínio e fez isso, funciona o tempo todo.

Alguém apontou que seu nome NetBIOS está comentado.

    
por 26.07.2015 / 00:50
1

Solução

Não posso fornecer isso em um comentário, mas quero que você veja um arquivo hosts em funcionamento (Da minha instalação do Gentoo em funcionamento):

# /etc/hosts: Local Host Database
#
# This file describes a number of aliases-to-address mappings for the for 
# local hosts that share this file.
#
# In the presence of the domain name service or NIS, this file may not be 
# consulted at all; see /etc/host.conf for the resolution order.
#

# IPv4 and IPv6 localhost aliases
127.0.0.1       bedroom-gentoo.myISP.net     bedroom-gentoo  localhost
::1             bedroom-gentoo.myISP.net     bedroom-gentoo  localhost


#
# Imaginary network.
#10.0.0.2               myname
#10.0.0.3               myfriend
#
# According to RFC 1918, you can use the following IP networks for private 
# nets which will never be connected to the Internet:
#
#       10.0.0.0        -   10.255.255.255
#       172.16.0.0      -   172.31.255.255
#       192.168.0.0     -   192.168.255.255
#
# In case you want to be able to connect directly to the Internet (i.e. not 
# behind a NAT, ADSL router, etc...), you need real official assigned 
# numbers.  Do not try to invent your own network numbers but instead get one 
# from your network provider (if any) or from your regional registry (ARIN, 
# APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#

Observe que o endereço localhost de 127.0.0.1 pode resolver vários nomes.

  1. O FQDN (2ª coluna), caso os aplicativos exijam isso. (Isso é explicado nos links fornecidos pelo OP).
  2. Meu nome da máquina (3ª coluna).
  3. O localhost (quarta coluna).

Além disso, observe que não diferencio entre IPv4 e IPv6

Este formato elimina a necessidade da solução alternativa para 127.0.1.1 . Como não quero que minha máquina seja vista por outras pessoas na minha rede, deixei a seção de rede imaginária Comentada, mas se eu quisesse fazer isso, adicionaria (supondo que eu tivesse seus dispositivos):

#
# Real Network
192.168.1.14            raspberrypi.myISP.net    raspberrypi
192.168.1.x             D-WHALEY2.myISP.net      D-WHALEY2
192.168.1.xx            LAPTOP.myISP.net         LAPTOP

# Imaginary Network
#10.0.0.2               myname
#10.0.0.3               myfriend
#

Para fazer isso funcionar todas as vezes, devo fazer login no meu roteador e atribuí-lo por MAC Filtering, e remover 127.0.1.1 do arquivo hosts do Raspian. Isso só precisa ser feito uma vez: (Endereço MAC resolve para endereço IP estático)

  1. Endereço MAC do Pi - > 192.168.1.14
  2. Endereço MAC de D-WHALEY2 - > 192.168.1.x
  3. Endereço MAC do LAPTOP - > 192.168.1.xx

Isso garante que, a cada vez que um dispositivo na rede for iniciado, ele receba o endereço correspondente ao seu arquivo hosts . Também elimina a necessidade de os computadores Windows resolverem endereços internos.

Problema

O Windows está com problemas para resolver o endereço do seu Pi por dois motivos:

  1. 127.0.1.1 não é um endereço interno válido, de acordo com a RFC 1918 , substituído por RFC 6761 . Veja também comentários no arquivo hosts .
  2. Como o Windows tem um arquivo de hosts que não contém o endereço 127.0.1.1 , ele está tratando-o como outro endereço de host local (consulte Quem escolheu 127.0.0.1 para ser localhost e por quê? O que significa isso? , por que. Esse comportamento leva aos erros descritos pelo OP.

Em suma, este é um problema com o Windows e um "recurso" de distribuições baseadas no Debian. Remover o "recurso" e configurar o roteador para "consertar" o problema no Windows deve permitir que o Samba se conecte

    
por 27.07.2015 / 00:55