Eu configurei uma rede VPN wireguard entre três computadores.
- A) Meu PC doméstico que está executando um cliente wireguard e deseja se conectar ao meu sambashare no meu servidor de escritório C).
- B) Meu Home-Server que está atuando como meu wireguard-server/endpoint. A) e C) conectar a este.
- C) Meu Office-Server que possui o samba-share que quero acessar via wireguard.
O encaminhamento parece funcionar corretamente porque:
- Eu posso pingar de A) para C) e de C) para A). Ao usar o ip da interface wireguard de C).
- Eu também posso SSH de A) a C). Ao usar o ip da interface wireguard de C).
Eu acho que o problema está no meu smb.conf ou como o smbd.service se liga às interfaces que eu especifiquei no smb.conf porque:
- NÃO consigo acessar meu Samba-Share em C) ao usar o endereço IP do wireguard.
- Eu posso acessar meu Samba-Share em C) ao especificar o endereço IP eth0.
É assim que meu arquivo smb.conf se parece:
#### Redes #### # O conjunto específico de interfaces/redes para vincular # Pode ser o nome da interface ou um endereço IP/máscara de rede; # nomes de interface são normalmente preferidos ; interfaces = 127.0.0.0/8 eth0 interfaces = lo eth0 wg-buero-túnel # Ligar apenas às interfaces e/ou redes nomeadas; você deve usar o # opção 'interfaces' acima para usar isso. # É recomendado que você habilite este recurso se sua máquina Samba estiver # não é protegido por firewall ou é um firewall em si. No entanto, este A opção # não pode lidar corretamente com interfaces dinâmicas ou sem transmissão. ; vincular apenas interfaces = sim vincular apenas interfaces = sim
e esta é a saída denetstat -tulpen | grep smbd
tcp 0 0 127.0.0.1:139 0.0.0.0:* OUÇA 0 17353 1023/smbd tcp 0 0 192.168.124.177:139 0.0.0.0:* OUÇA 0 17349 1023/smbd tcp 0 0 127.0.0.1:445 0.0.0.0:* OUÇA 0 17352 1023/smbd tcp 0 0 192.168.124.177:445 0.0.0.0:* OUÇA 0 17348 1023/smbd
Os IPs aqui devem corresponder aos dispositivos que especifiquei no smb.conf, mas ainda falta um IP/dispositivo.
127.0.0.1 _
eth0 192.168.124.177
wg-buero-tunnel O ip do wireguard está faltando completamente
Estou realmente ficando sem ideias aqui.
O Samba não escutará a interface Wireguard se o endereço/máscara da interface não for especificado explicitamente, mas se as interfaces forem restritas por
interfaces = ...
ebind interfaces only = yes
.A solução é especificar o endereço/máscara IP para a interface Wireguard . por exemplo
Isso também fica claro na documentação do Samba smb.conf : interfaces
É sabido que o Wireguard não suporta transmissão e por que não. Estas são as consequências para o Samba: Não é possível usar as outras três alternativas para especificar interfaces descritas lá como 2) o nome da interface ou 3) apenas o endereço IP ou 4) o endereço/máscara de transmissão, porque o Wireguard não suporta transmissão.
Você pode verificá-lo também pelo
ip link
comando:As soluções propostas aqui não funcionaram para mim, no meu caso a solução foi definir
no
/etc/samba/smb.conf.template
arquivo. Desta forma, o Samba escutará em todas as interfaces, independente da transmissão ou não.Isso pode criar um pouco de desvantagem, o compartilhamento do samba deve ser acessado por IP, não por nome, por exemplo
mas não é um grande problema.
Para fazer coisas como Samba (ou coisas semelhantes que precisam de bcasts) funcionarem em túneis wireguard, você pode usar um túnel vxlan em cima do wireguard.
Esse encapsulamento (vxlan) age mais ou menos como uma interface de rede "real", com brordcasts/multicasts/etc funcionando totalmente, pelo menos nos meus cenários.
Eu configurei alguns desses túneis e eles funcionam muito bem, mesmo com a perda de desempenho dos dois encapsulamentos. A configuração também é bastante fácil através do comando "ip link add", você pode encontrar muitos exemplos na net, me inspirei neste artigo (muito interessante) (removido, deixo link com IA):
https://web.archive.org/web/20200708181943/https://insom.github.io/journal/2017/04/02/
https://gist.github.com/pamolloy/f464c2b54af03c436491f42abf0bbff9
Eu acho que é porque o samba só pode ouvir em interfaces com capacidade de transmissão
Não diz o que acontece com o não padrão, mas eu acho que sim.
É interessante ver como já existem respostas detalhadas e específicas para resolver o problema em questão, enquanto no meu caso - com praticamente a mesma configuração do OP - a simples adição da sub-rede VPN à
hosts allow
seção no/etc/samba/smb.conf
(no arco) já fez o truque:Aqui
192.168.2.
está minha sub-rede LAN e192.168.10.
minha sub-rede VPN wireguard. Posso me conectar ao servidor SMB de um dispositivo na WAN por meio da VPN sem alterar mais nada. Posso ler/escrever dados em velocidades que parecem normais. Portanto, não tenho certeza do impacto do wireguard sem suporte à transmissão, apesar de talvez a descoberta não funcionar.O fator adicional que me deu esses sintomas foi meu firewall ufw. Ele precisa ser aberto na interface wireguard. Eu poderia pingar e ssh, mas é claro que o ssh já estava aberto pelo firewall.