Como corrigir o erro de RPC no RSAT/SAMBA
O que é o RSAT
O RSAT (Remote Server Administration Tools) é um conjunto de ferramentas da Microsoft que permite aos administradores gerenciar servidores Windows a partir de um computador com Windows 10 ou Windows 11. Para se conectar a um servidor usando o RSAT, é necessário habilitar o recurso de gerenciamento remoto no servidor e abrir a porta TCP 5985 (WinRM) ou a porta TCP 5986 (WinRM over HTTPS) no firewall do servidor. Essas portas são usadas para permitir a comunicação remota entre o servidor e a estação de trabalho do administrador que está usando o RSAT. Mas como estamos falando de SAMBA, o processo muda um pouquinho, vamos ver a seguir:
Para o funcionamento adequado do Samba como um controlador de domínio, é necessário permitir o tráfego de rede nas seguintes portas:
TCP:
88 (Kerberos)
135 (RPC Endpoint Mapper)
139 (NetBIOS Session Service)
389 (LDAP)
445 (SMB)
464 (Kerberos Change/Set Password)
636 (LDAP SSL)
3268 (Global Catalog)
3269 (Global Catalog SSL)
UDP:
53 (DNS)
88 (Kerberos)
123 (NTP)
137 (NetBIOS Name Service)
138 (NetBIOS Datagram Service)
389 (LDAP)
445 (SMB)
464 (Kerberos Change/Set Password)
445 (Direct-hosted SMB traffic without NetBIOS)
O erro RPC (Remote Procedure Call) é um problema comum ao conectar o RSAT ao domínio Samba. Isso ocorre porque a porta 445, que é usada para comunicação entre o RSAT e o Samba, pode estar bloqueada pelo firewall ou não configurada corretamente no arquivo smb.conf. Neste tutorial, mostraremos como corrigir esse erro.
Uma das mensagens de erro que podem aparecer durante a utilização do RSAT pode se parecer com essa:
Bom, chega de papo e vamos corrigir isso!
Passo 1 - Verificar as portas abertas
Para começar, verifique se as portas TCP: 135, 139, 389, 445, 3268, 3269, 49152 e UDP: 137, 138, 139, 389, 445, 464, 636, 3268 estão abertas. Use o seguinte comando para listar todas as portas abertas:
sudo firewall-cmd --list-ports
Se uma ou mais não estiverem na lista, use o comando a seguir para abri-las:
sudo firewall-cmd --add-port=135/tcp --add-port=137/tcp --add-port=138/tcp --add-port=139/tcp --add-port=145/tcp --add-port=389/tcp --add-port=445/tcp --add-port=3268/tcp --add-port=3269/tcp --add-port=135/udp --add-port=137/udp --add-port=138/udp --add-port=139/udp --add-port=145/udp --add-port=389/udp --add-port=445/udp --add-port=3268/udp --add-port=3269/udp --permanent
ou
sudo firewall-cmd --add-port={135/tcp,137/tcp,138/tcp,139/tcp,145/tcp,389/tcp,445/tcp,3268/tcp,3269/tcp,135/udp,137/udp,138/udp,139/udp,145/udp,389/udp,445/udp,3268/udp,3269/udp} --permanent
O comando acima abre as portas informadas de forma permanente. Você pode editar o comando informando apenas as portas que faltam ou liberar uma a uma conforme abaixo:
sudo firewall-cmd --add-port=88/tcp --permanent sudo firewall-cmd --add-port=135/tcp --permanent sudo firewall-cmd --add-port=139/tcp --permanent sudo firewall-cmd --add-port=389/tcp --permanent sudo firewall-cmd --add-port=445/tcp --permanent sudo firewall-cmd --add-port=464/tcp --permanent sudo firewall-cmd --add-port=636/tcp --permanent sudo firewall-cmd --add-port=3268/tcp --permanent sudo firewall-cmd --add-port=3269/tcp --permanent sudo firewall-cmd --add-port=53/udp --permanent sudo firewall-cmd --add-port=88/udp --permanent sudo firewall-cmd --add-port=123/udp --permanent sudo firewall-cmd --add-port=137/udp --permanent sudo firewall-cmd --add-port=138/udp --permanent sudo firewall-cmd --add-port=389/udp --permanent sudo firewall-cmd --add-port=445/udp --permanent sudo firewall-cmd --add-port=464/udp --permanent sudo firewall-cmd --add-port=445/tcp --direct --permanent
Para que as alterações entrem em vigor, é necessário recarregar as configurações do firewall com o seguinte comando:
sudo firewall-cmd --reload
Passo 2 - Configurar o arquivo smb.conf
O arquivo smb.conf é responsável pela configuração do Samba. Verifique se a seção [global] do arquivo contém as seguintes linhas:
client min protocol = SMB2
client max protocol = SMB3
server min protocol = SMB2
server max protocol = SMB3
Essas linhas definem a versão do protocolo SMB que o Samba deve usar para se comunicar com o RSAT. Certifique-se de que elas estejam presentes e sem comentários(o símbolo # no início da linha).
Antes de alterar o arquivo vamos fazer um backup!
Para realizar o backup numerado do arquivo antes da alteração com o caminho absoluto, basta executar o seguinte comando no terminal:
sudo cp /etc/samba/smb.conf{,.backup.$(date +%Y%m%d%H%M%S)}
Neste comando, utilizamos o utilitário cp para copiar o arquivo smb.conf para um novo arquivo com a extensão .backup seguida da data e hora atual no formato YYYYMMDDHHMMSS. O símbolo {} é usado para indicar o arquivo original, e a sintaxe {,.backup.$(date +%Y%m%d%H%M%S)} é usada para gerar o nome do arquivo de backup. O comando sudo é utilizado para executar a cópia com privilégios de superusuário.
Dessa forma, o arquivo original será preservado com um nome diferente, permitindo que você possa recuperá-lo caso necessário.
Abra o arquivo smb.conf com o editor de texto VIM com o seguinte comando:
sudo vim /etc/samba/smb.conf
Apague todo o conteúdo e cole o conteúdo abaixo. Não esqueça de ajustar os parâmetros como o nome do domínio e outros necessários.
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
server string = Samba Server %v
netbios name = NOME_DO_SEU_DOMINIO
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
dns forwarder = IP_DO_SEU_DNS_FORWARDER
# Configurações para o RSAT
rpc_server:tcpip = no
rpc_daemon:spoolssd = embedded
rpc_server:spoolss = embedded
rpc_server:winreg = embedded
rpc_server:ntsvcs = embedded
rpc_server:eventlog = embedded
rpc_server:srvsvc = embedded
rpc_server:svcctl = embedded
rpc_server:default = external
client min protocol = SMB2
client max protocol = SMB3
server min protocol = SMB2
server max protocol = SMB3
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
Salve as alterações no arquivo e saia do editor VIM pressionando a tecla ESC, digitar :wq e pressionar Enter.
Passo 3 - Reiniciar o serviço do Samba
Após verificar as portas e configurar o arquivo smb.conf, reinicie o serviço do Samba para que as alterações entrem em vigor. Use o seguinte comando para reiniciar o serviço:
sudo systemctl restart samba-ad-dc.service
Lembre-se de testar a configuração usando o comando "testparm" após as alterações.
Conclusão
Com as configurações acima, você deve ser capaz de conectar o RSAT ao domínio Samba sem o erro RPC. Lembre-se de que a versão do protocolo SMB pode variar dependendo do seu ambiente. Verifique as versões suportadas pelo seu sistema antes de configurá-las no arquivo smb.conf.