Depois de conectar um HD externo e, talvez, aumentar o espaço do disco do OpenWRT para poder instalar mais coisas, vamos a instalação do servidor de arquivos. O servidor de arquivos padrão para o Linux é o Samba. Apesar de ser uma implementação do protocolo "padrão" da Microsoft para troca de arquivos em rede, é o que temos de melhor para troca de arquivos mesmo entre duas máquinas Linux. Se o cliente for um Windows®, nem se fala.
Já existe um pacote pronto do samba para o OpenWRT. Basta instalar o pacote samba36-server e, opcionalmente, luci-app-samba, e você terá tudo que precisa para o servidor. Você pode usar tanto a interface WEB como a linha de comando para a instalação:
opkg update
opkg install samba36-server
A configuração do samba pode ser feita com as opções do arquivo smb.conf ou, de forma mais limitada, pela infraestrutura do OpenWRT, no arquivo "/etc/config/samba" . Vou me limitar ao segundo caso pois atenderá a maioria dos usuários. Quanto ao primeiro, não seria diferente de um sistema Linux padrão. Preferencialmente altere o arquivo "/etc/samba/smb.conf.template" pois a configuração final será obtida juntando as informações deste arquivo com o que for configurado em "/etc/config/samba". O pacote luci-app-samba, opcional, fornece uma página na interface WEB Luci que possibilita a configuração básica do samba ou a edição do arquivo "smb.conf.template" sem precisar saber usar o vim.
Na inteface WEB, assim como no arquivo de configuração, é bom definir o nome e o grupo de trabalho do seu roteador. Os diretórios compartilhados são criados em um item sambashare ou em "Diretórios Compartilhados" na interface Luci. Caso a segurança não seja preocupação, ative a opção "permitir convidados" ou "guest_ok". Assim, não será necessário fornecer um usuário e senha para conectar no roteador. A opção "somente leitura" vai no mesmo sentido. Só lembrando que, por padrão, usuário sem senha assume o usuário unix nobody e este precisa ter permissão de leitura ou escrita ou diretório para poder acessar ou escrever nos diretórios. Se a segurança não for importante, dê acesso completo a todos os usuários:
chmod a+rw /mnt/sd??
Onde o /mnt/sd?? é o local onde seu disco está montado no sistema. Só lembre que ao liberar o acesso sem senha e com permissão de escrita a todos, seus arquivos estarão acessíveis a qualquer usuário que tenha acesso a sua rede local. Isto inclui as suas visitas que conectam no seu wireless. Por padrão, o acesso externo (pela internet) ao samba está bloqueado no firewall. Não recomendaria a abertura deste servidor para a internet e, se for feito, por favor, não usem acesso de convidados.
/etc/init.d/samba enableE teste a partir de um computador. No windows, o caminho será \\<nome ou ip do roteador\<compartilhamento> e nas interfaces gráficas do Linux, em geral, smb://<nome ou ip do roteador/<compartilhamento>. Ex:
/etc/init.d/samba start
- \\roteador\fotos ou smb://roteador/fotos
- \\192.168.1.1\documentos ou smb://192.168.1.1/documentos
Se seu desejo é o uso somente com usuário convidado, sem senha, este artigo termina aqui para você. Para os mais preocupados com segurança, pode-se criar contas no OpenWRT para cada usuário. O processo é o mesmo de um sistema Linux. Infelizmente, por padrão, não tem os comandos para facilitar esta tarefa. Portanto, para criar usuários, adicione linhas como esta ao arquivo /etc/passwd:
newuser:*:1000:65534:new user name:/var:/bin/false
O newuser é o login do usuário. O número 1000 é o identificador. Deve ser único entre os usuários e preferencialmente acima de 1000. "new user name" é o nome completo, sem muito uso no OpenWRT. "/var" é o home e "/bin/false" o shell. Se ele não for conectar por SSH com este usuário no roteador, pode ficar como está. O caminho do home, "/var", pode ser interessante mudar se for habilitada a opção "homes" ou "compartilhas os homes dos usuários" na configuração do samba. Assim, quando ele se autenticar, será criado dinamicamente um diretório compartilhado com o nome do usuário para este caminho. É necessário definir uma senha para este usuário no samba utilizando o comando smbpasswd. Na primeira vez, é preciso criar o usuário nos bancos de dados do samba.
smbpasswd -a usuário
O mesmo comando pode ser usado para trocar a senha, mas sem o "-a".
Com isto temos mais uma função, um NAS, consolidado no roteador. Com um NAS e um servidor DLNA, você terá um MediaBox. Com o NAS e um cliente Torrent, um SeedBox. E por que não ambos? E por que não mais coisas? Isto fica para outro post. Até mais.
Isso não sobrecarrega o roteador?
ResponderExcluirNão tem perigo de queimar o HD se deixar tanto tempo conectado?
Quanto a sobrecarregar, não tive problemas nem com cliente torrent (próximo artigo). Porém, usar mais o HD irá reduzir a vida útil do HD. Por isto recomendo instalar o pacote para desligar o HD quando ociosos (idle).
ExcluirLuiz, primeiramente muito obrigado pelo tutorial. Mas como vc comentou sobre esse pacote, vc poderia me dizer o nome desse pacote para desligar o HD quando ocioso?
ExcluirSão estes dois. O último é a interface web de configuração e instalará o primeiro.
Excluirhd-idle - 1.04-1
luci-app-hd-idle
Muito obrigado Luiz, acabei de instalar no meu router agora estou deixando ele fazendo download a noite toda, ótimo blog.
ExcluirOla Boa tarde,
ResponderExcluirNão estou conseguindo acessar as pastas digito senha e o Windows da um erro diz que não pode acessar oque pode ser??
A configuração exemplo é para conectar sem senha. No meu caso, ele nem pergunta qualquer senha.
ExcluirÉ a opção "permitir convidados/guest OK".
qual roteador vc usou luiz?
ExcluirUso atualmente um TL-WR2543ND. Uma vez que o openwrt está funcioando, o modelo do roteador não deveria influenciar.
ExcluirBruno, não tenho a resposta que você precisa, pelo contrário, gostaria de sua ajuda para instalar o openwrt no meu tp-link wdr 4300 v1.3.
ExcluirVocê poderia me ajudar com um passo-a-passo abrangendo a instalação do firmware e recursos como torrent, hd externo(nas) e dlna, pois não tenho a menor intimidade com linux, mas gostaria muito de trocar o firmware do meu router?
Agradeço desde já a ajuda.
Rodrigo
Bruno, pode ser a ordem de inicialização dos discos. O primeiro vira sda, o segundo sdb. Se você não usou referências para uuid ou label, isso pode acontecer.
ExcluirRodrigo, passo a passo de tudo que você quer é difícil. Tem vários posts neste blog para fazer tudo que você quer.
Luiz,
ExcluirVeja se pode me ajudar.
Estou com o mesmo problema do Bruno, tenho um wdr4300 com duas usb, tenho um pendrive de 4gb em uma porta funcionando como swap e overlay, quero plugar outro drive para arquivos e compartilhamento, quando conectoo segundo drive o roteador reconhece e ele vira sdb1, se eu reiniciar o roteador com os dois pendrives conectados a bagunça acontece, os drives se misturam chegando a não funcionar.
Configurei o fstab usando como referência o uuid e não funcionou, ele identifica o tipo (ntfs, ext4) corretamente mas muda a ordem sda1 para sdb1, gerando problemas.
Gostaria de saber se tem como definir que o sda1 seja uuid 'abcd' e sdb1 uuid 'xyz', para acabar com a confusão.
Segue meu fstab
config global 'automount'
option from_fstab '1'
option anon_mount '1'
config global 'autoswap'
option from_fstab '1'
option anon_swap '0'
config mount
option fstype 'ext4'
option options 'rw,sync'
option enabled '1'
option target '/mnt'
#option device '/dev/sda2'
#option label 'dados'
option uuid 'f59a2f74-65db-ce01-f09a'
option 'options' 'rw,umask=000'
config mount
option fstype 'ntfs'
option options 'rw,sync'
option enabled '1'
option target '/mnt'
#option device '/dev/sdb1'
#option label 'KINGSTON'
option uuid 'A6E8ACAC468A14B44T3434'
option 'options' 'rw,umask=000'
config swap
option device '/dev/sda1'
option enabled '1'
Olá,
ExcluirO uuid são gerados automaticamente. Você até pode defini-los com comandos para cada FS mas não é a ideia deste campo (tune2fs para ext*). Se tiver problemas com ele, você pode usar o label, que é mais "amigável". Ele também pode ser ajustado por tune2fs (para ext*) ou por ntfslabel (para ntfs). De qualquer forma, informando o uuid correto, deve funcionar.
Sua área de swap está ainda por dispositivo. Algum motivo específico? Melhor seria por uuid ou label.
Testa inicialmente desligando a montagem de dispositivos desconhecidos (anon). Se não usa /etc/fstab (nunca editou ele), também pode desligar esta opção.
Outra coisa, chegou a testar a montagem de todos estes dispositivos manualmente? Pluga em um sistema rodando e monta individualmente cada dispositivo para testar. Pode estar faltando algum módulo.
Só por referência, estes são meus discos (ao similar ao que você tem):
root@router:~# blkid
/dev/mtdblock2: TYPE="squashfs"
/dev/sdb1: LABEL="usb-ntfs" UUID="68E45E325B7A146C" TYPE="ntfs"
/dev/sdb3: LABEL="usb-swap" UUID="a7afffd8-223b-4645-8cfa-bb7a5693afc1" TYPE="swap"
/dev/sdb5: LABEL="usb-dados" UUID="b6695cb4-92de-4910-abe1-87bc7215e243" TYPE="ext4"
/dev/sda1: LABEL="openwrt-extroot" UUID="ebbfd113-d95d-4385-9081-740fb13dc89c" TYPE="ext3"
O blkid é a melhor forma de buscar os identificadores dos discos. Para esta configuração, eu uso a conf:
config global automount
option from_fstab 0
option anon_mount 0
config global autoswap
option from_fstab 0
option anon_swap 0
config mount
option target /mnt/usb-dados
option label "usb-dados"
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 0
config swap
option label "usb-swap"
option enabled 1
config mount
option target /overlay
option label "openwrt-extroot"
option fstype ext3
option options rw,sync
option enabled 1
option enabled_fsck 0
Esta questão é mais para o outro post:
http://luizluca.blogspot.com.br/2013/01/openwrt-conectando-um-hd-pela-usb.html
Também notei o ntfs. A última vez que olhei, o ntfs só tinha acesso de leitura. Para escrita, você precisará do ntfs-3g, que usa fuse.
Como o poder de processamento do roteador é limitado, isto irá resultar em perda de desempenho. Eu preferi não usar ntfs.
Olá Luiz
ExcluirO comando blkid não está funcionando. retorna "-ash: blkid: not found"
Estou a tentar compartilhar um pendriver fat32, mas não é visível com o comando df
Na interface web ele é visível no ponto de montagem como /dev/sdb1, mas a uuid é estranha "UUID: B64C-C740 (not present)"
Estou usando um hub-usb. Já tenho funcionando um pendriver 1gb (500mb ext4, e 400mb swap)
wr1043nd v2 chaos_calmer/15.05/ar71xx
Use o "block info" no lugar do blkid.
ExcluirO df só mostra aquilo que foi montado. Se não montar, não aparece. Quanto a UUID, nunca usei a do vFAT mas pode ser algo assim mesmo. Confie no que aparecer no block info.
Como sugestão, rode o "block detect". Ele vai gerar uma configuração funcional para o /etc/config/fstab
Luiz, conseguir escrever via M$, mas a tx de transferência (escrita) varia de 500 ~900KB/s :O
ExcluirO que será?
Normalmente é limitação da CPU. Rode um top durante a cópia. Com um Atheros AR7242@400Mhz eu consigo algo girando em torno de 3 Mbytes/s.
ExcluirO filesystem do disco e concorrência na escrita influenciam. Falta de memória RAM também. Notei também diferença entre HDs externos... alguns parecem exigir mais da CPU.
Luiz
ExcluirSerá devido ao compartilhamento do barramento usb?
Tenho dois pendrive espetado no hub-usb, um de 1gb com 2 partições /overley (ext4) e swap e outro 8gb, ext4 para dados (testes). Estou adquirindo um case para HD 3,5.
Segue o top:
Mem: 55056K used, 6012K free, 900K shrd, 7052K buff, 28484K cached
CPU: 0% usr 1% sys 0% nic 5% idle 91% io 0% irq 1% sirq
Load average: 1.87 0.84 0.35 1/51 19413
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
19328 1371 nobody D 3032 5% 0% /usr/sbin/smbd -F
71 2 root SW 0 0% 0% [kworker/0:1]
1418 1 root S 1660 3% 0% /usr/sbin/hostapd -P /var/run/wifi-ph
19199 19189 root R 1364 2% 0% top
1372 1 root S 2556 4% 0% /usr/sbin/nmbd -F
1371 1 root S 2488 4% 0% /usr/sbin/smbd -F
1274 1043 root S 1632 3% 0% /usr/sbin/pppd nodetach ipparam wan i
1331 1 root S 1624 3% 0% /usr/sbin/uhttpd -f -h /www -r router
1043 1 root S 1568 3% 0% /sbin/netifd
1009 1 root S 1532 3% 0% /sbin/rpcd
1 0 root S 1408 2% 0% /sbin/procd
1821 1 root S 1364 2% 0% {mwan3track} /bin/sh /usr/sbin/mwan3t
1415 1 root S 1364 2% 0% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h
19189 19180 root S 1364 2% 0% -ash
19413 1821 root S 1352 2% 0% sleep 5
19180 1160 root S 1220 2% 0% /usr/sbin/dropbear -F -P /var/run/dro
1068 1 root S 1164 2% 0% /usr/sbin/odhcpd
1160 1 root S 1152 2% 0% /usr/sbin/dropbear -F -P /var/run/dro
1000 1 root S 1044 2% 0% /sbin/logd -S 16
1598 1 nobody S 956 2% 0% /usr/sbin/dnsmasq -C /var/etc/dnsmasq
Tenho um Atheros QCA9558@720MHz
ExcluirA dica do material de estudo, obrigado!
iWan, você tem uma boa CPU e está com bastante tempo de idle. Não é CPU.
ExcluirHUB USB ruins podem ser a causa. Se possível, teste individualmente:
1) taxa de transferencia do roteador com o computador (ex: iperf)
2) taxa de transferencia do hd para o roteador (ex: dd if=/dev/sda of=/dev/zero)
3) taxa de transferencia de um arquivo do HD para o roteador (ex: dd if=/mnt/sdaX/arquivo_grande of=/dev/zero)
1 descarta problemas de rede. 2 vai identificar quanto o roteador consegue ler do HD. A diferença de 2 com 3 é quanto você perde por usar o sistema de arquivos usado no HD.
Material de estudo?
Excluir1) Google :-)
2) Páginas man (para consultas)
3) Livros de boas sérias (O'Reilly é um bom começo)
Claro, tudo em inglês :) Material nativo sempre será limitado.
Olá Luiz,
ResponderExcluirÉ possível configurar o samba de acordo com a rede wifi conectada?
Em outro post teu (OpenWRT: conectando um HD pela USB) você comenta ser boa prática ter 2 redes, uma para uso normal e outra para visitante. Minha dúvida é se tem como liberar pasta específica do samba de acordo com a rede à qual se está conectado, assim crio uma pasta para a rede doméstica, e uma pasta "pública" para a rede visitante.
Tudo é possível. Só, talvez, você precise modificar o /etc/samba/smb.conf.template.
ExcluirPrimeiro você precisa ter duas interfaces lan. Só adicionar uma lan-publica (com outra faixa de ip) e configurar uma rede wifi para ela.
Você pode, por compartilhamento, restringir o acesso para uma rede específica. Ex:
[pasta1]
hosts allow = 192.168.1.
hosts deny = ALL
Vi este formado de "rede" na doc do samba. Se nao funcionar, pode testar endereçamento de rede comum 192.168.1.0/24.
Não tem muita diferença de um samba em um Linux.
Olá!
ResponderExcluirVocê tem algo sobre como configurar o print server?
Tenho um TP link WDR4300 e a impressora é inacessível via firmware original, estou pensando em instalar o OpenWRT.
Att.
Coincidentemente, obtive o que necessitava para escrever o artigo: uma extensão USB.
ExcluirAcabei de escrever sobre como configurar uma impressora de rede no OpenWRT. http://luizluca.blogspot.com.br/2014/05/openwrt-compartilhando-sua-impressora.html
E respondendo sua pergunta: sim.
Luiz, como faço para dar permissão de leitura e escrita no Samba para todas as pastas do compartilhamento, principalmente os arquivos e pastas que serão criados no futuro? Eu já utilizei o comando chmod 777 -R /mnt/sda1/, que dá todas permissões de acesso a pastas do hd sda1, porém quando vou criar uma subpasta, ou copiar um arquivo novo na subpasta, da acesso negado.
ResponderExcluirDesde já, Obrigado!
Resolvi colocando os comandos no parâmetro global do smb.conf.template
Excluircreate mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
Estou correto?
Abraços.
Sim, resolve.
ExcluirLuiz, bom dia.
ResponderExcluirTenho um Roteador Gigabit Wireless de Banda Dupla N750 (TL-WDR4300) configurado com HD externo de 1Tb, Samsung.
Consigo acessar o mesmo de qq tv em casa e assistir vídeos, ouvir músicas e ver as fotos. No entanto nos filmes legendados (STR) não consigo ver a legenda, não chega.
Você saberia dizer qual o problema ? Obrigado
Guga
Olá Gustavo,
ExcluirVocê está usando o servidor DLNA ou compartilhando o disco? Talvez sua TV não aceite ler os arquivos SRT.
Não faz diferença ser um roteador ou um PC. Você precisa descobrir como fazer isto funcionar mesmo que no PC. Depois podemos ver o que faltaria no roteador.
Abs
Luiz, grato pela resposta.
ExcluirUso o compartilhamento.
Minhas TV's (Samsung 6400 e Samsung 8000) leem STR, pois ao plugar o HD direto nelas não tem problema algum. Só não vejo a legenda quando uso o hd pela rede Hi-Fi.
Compartilhe uma pasta no computador. Se não funcionar, não tem muito o que fazer do lado do servidor. Talvez exista alguma alternativa na TV, como atualizar o firmware dela.
ExcluirOutra opção é tentar via DLNA. Com sorte, ela consulta a legenda.
http://luizluca.blogspot.com.br/2013/06/openwrt-transforme-seu-roteador-em-uma.html
Bom dia Luiz, Parabens pelo post.
ResponderExcluirVou comprar um Roteador Gigabit Wireless de Banda Dupla N600 (TL-WDR3600) configurando com HD externo de 1Tb, Samsung.
Gostaria de saber se com este metodo eu consigo trabalhar como um servidor NAS normal,por exemplo trabalhar com um arquivo doc abri-lo, edita-lo e salva-lo, neste metodo de NAS direto pelo roteador/hd?!!?!?
E outra questão a taxa de transferência dele, é alta? pois em um compartilhamento normal pela rede a taxa devido ao usb 2.0 é de 2~8mb, conseguimos mais que isso neste metodo? pois com o servidor NAS (equipamento) a taxa é relativamente alta.
Att.
Evandro,
ExcluirEle vai ser igual a um compartilhamento de um computador windows. Sim, poderá trabalhar diretamente nele.
Quanto ao desempenho, talvez não seja dos melhores mesmo. O normal aqui no meu ambiente é 22Mbits/s (ou um pouco mais de 2MB/s).
Att.
Boa tarde Luiz, gostaria de saber onde posso encontrar os seguintes arquivos (hd-idle - 1.04-1, luci-app-hd-idle) , como instala-los no roteador passo a passo. Desde já agradeço!
ResponderExcluirLuiz, são pacotes instalados pela interface web ou pelo comando opkg. O roteador baixa para você.
ExcluirParabéns pelo tutorial, excelente, Luiz tudo funciona bem, mas no windows7 quando mapeio a unidade do HD sempre pede senha e eu nunca consigo acessar, fiz como vc escreveu: "Os diretórios compartilhados são criados em um item sambashare ou em "Diretórios Compartilhados" na interface Luci. Caso a segurança não seja preocupação, ative a opção "permitir convidados" ou "guest_ok". Assim, não será necessário fornecer um usuário e senha para conectar no roteador." , mas não consigo acessar o diretório, vc pode me ajudar? att Ivan
ResponderExcluirxxx (esse login me lembra outra coisa), o windows tem o comportamento de pedir a senha quando você não tem acesso ao diretório ou este não existe. Deve ser algum problema na sua configuração.
ExcluirOlá, boa tarde, Luiz. Parabéns pelo post, era exatamente o que eu estava procurando.
ResponderExcluirPergunto: No caso de ser um HD de 1TB ou mais, vai suportar a alimentação via USB ou será preciso um HD com fonte externa?
Caro jardineiro,
ExcluirNão importa o tamanho do disco. Se for um HD que você usa sem fonte pela USB, do modelos mais parrudos vão fornecer energia suficiente para ele. A sugestão é testar ante de investir em compras. Se não funcionar, o pior que vai acontecer é você precisar comprar um hub USB com alimentação.
Hans, configurar o quê? Normalmente, tudo que posto aqui pode ser feito no windows ou pelo Linux do roteador (o OpenWRT).
ResponderExcluirA formatação do compartilhamento não aparece para os clientes do compartilhamento de arquivos. E este funciona com qualquer SO com suporte a SMB (nativo do windows).
Se for em relação ao uso do pendrive como extroot (que é de outro artigo, não deste), a ideia é deixá-lo dedicado. Porém, se quiser aproveitá-lo ainda como pendrive quando desconectado do roteador (que ficará limitado sem o disco extra), você teria duas opções: 1 criar uma partição ntfs não usada pelo extroot do openwrt. 2) instalar o driver do ext em cada windows onde o pendrive for utilizado.
Olá amigo
ResponderExcluirSou leigo no assunto, mas poderia me auxiliar?
Depois de feito o procedimento o HD fica ligado apenas no roteador, não é necessário o PC ou note ligados?
Obrigado pela atenção.
Sim Fabio. Meu HD conectou em um PC uma meia dúzia de vezes. Fica 24/7 ligado no roteador para servir de mediaserver e baixar torrent. Os demais equipamentos (celular, tv, computador, etc) só são ligados quando forem consumir os dados do HD.
ExcluirParabéns pelo tutorial , aproveitei-o para tirar dúvidas (ao invês de roteador estou usando raspberry ) , uma dica adicional é que em template , é possível adicionar como valido o usuário root (no meu caso , só queria fazer um teste de largura de banda entre o pi 1 e o pi 3 , se a transferência era igual ou maior ou menor ) e o mesmo app para luci atendeu as dúvidas que eu tinha , forte abraço !
ResponderExcluirObrigado Carlos. Mexendo no template, você pode fazer qualquer coisa que o samba permite.
ExcluirAs dicas valem para qualquer dispositivo, não necessariamente um roteador. Eu uso o OpenWRT/LEDE em VMs Xen e Virtualbox perfeitamente. Raspberry pi também é uma boa pedida, em especial para construir um NAS.
Fiz isso mais do que uma vez... consigo acessar o compartilhamento pelo celula (ES file explorer) porem não consigo acessar pelo Windows 10 (Erro 0x80070035). Se alguem souber como resolver... compartilha!
ResponderExcluir