Hospedar um site no seu roteador doméstico

Há muito tempo que desejo “tocar as mãos” nos serviços da Internet, configurando um servidor web do zero e lançando-o na Internet. Neste artigo, quero compartilhar minha experiência na transformação de um roteador doméstico de um dispositivo altamente funcional em um servidor quase completo.

Tudo começou com o fato de que o roteador TP-Link TL-WR1043ND, que tinha servido fielmente, não atendia mais as necessidades de uma rede doméstica; eu queria uma banda de 5 GHz e acesso rápido aos arquivos em um dispositivo de armazenamento conectado ao roteador . Depois de consultar fóruns especializados (4pda, ixbt), sites com avaliações e consultar o sortimento de lojas locais, resolvi adquirir o Keenetic Ultra.

Boas críticas dos proprietários funcionaram a favor deste dispositivo específico:

  • sem problemas de superaquecimento (aqui tivemos que abandonar os produtos Asus);
  • confiabilidade operacional (aqui risquei TP-Link);
  • fácil de configurar (tive medo de não aguentar e risquei o Microtik).

Eu tive que aceitar as desvantagens:

  • sem WiFi6, queria levar equipamentos com reserva para o futuro;
  • 4 portas LAN, eu queria mais, mas essa não é mais uma categoria doméstica.

Como resultado, obtivemos este “servidor”:

Hospedar um site no seu roteador doméstico

  • à esquerda está o terminal óptico da Rostelecom;
  • à direita está nosso roteador experimental;
  • um SSD m.2 de 128 GB, colocado em uma caixa USB3 do Aliexpress, está conectado ao roteador com um fio, agora está cuidadosamente montado na parede;
  • em primeiro plano está um cabo de extensão com tomadas desconectadas de forma independente, o fio dele vai para um no-break barato;
  • ao fundo há um monte de cabos de par trançado - na fase de reforma do apartamento, planejei imediatamente tomadas RJ45 nos locais onde o equipamento deveria estar localizado, para não depender do WiFi estar cheio.

Então, já temos o equipamento, precisamos configurá-lo:

Hospedar um site no seu roteador doméstico

  • A configuração inicial do roteador leva cerca de 2 minutos, indicamos os parâmetros de conexão ao provedor (meu terminal óptico está em modo bridge, a conexão PPPoE levanta o roteador), o nome da rede WiFi e a senha - basicamente é isso , o roteador inicializa e funciona.

Hospedar um site no seu roteador doméstico

Definimos o encaminhamento de portas externas para as portas do próprio roteador na seção “Regras de rede - Encaminhamento”:

Hospedar um site no seu roteador doméstico

Hospedar um site no seu roteador doméstico

Agora podemos passar para a parte “avançada”, o que eu queria do roteador:

  1. funcionalidade de um pequeno NAS para uma rede doméstica;
  2. executar funções de servidor web para diversas páginas privadas;
  3. funcionalidade de nuvem pessoal para acessar dados pessoais de qualquer lugar do mundo.

O primeiro é implementado por meio de ferramentas integradas, sem exigir muito esforço:

  • Pegamos um drive destinado a esta função (pen drive, cartão de memória em leitor de cartão, disco rígido ou SSD em caixa externa e formatamos para Ext4 usando MiniTool Partition Wizard Edição Gratuita (Não tenho um computador com Linux em mãos, é possível com ferramentas integradas). Pelo que entendi, durante a operação o sistema grava apenas logs na unidade flash, portanto, se você limitá-los após configurar o sistema, também poderá usar cartões de memória se planeja gravar muito e com frequência na unidade - um SSD ou O disco rígido é melhor.

Hospedar um site no seu roteador doméstico

Depois disso, conectamos o drive ao roteador e observamos na tela do monitor do sistema

Hospedar um site no seu roteador doméstico

Clique em “Unidades USB e Impressoras” na seção “Aplicativos” e configure o compartilhamento na seção “Rede Windows”:

Hospedar um site no seu roteador doméstico

E temos um recurso de rede que pode ser usado em computadores Windows, conectando-se como um disco se necessário: net use y:\192.168.1.1SSD /persistent:yes

A velocidade de um NAS improvisado é suficiente para uso doméstico: por fio ele usa todo o gigabit, por WiFi a velocidade é de cerca de 400-500 megabits.

Hospedar um site no seu roteador doméstico

Configurar o armazenamento é uma das etapas necessárias para configurar o servidor, então precisamos:
- compre um domínio e um endereço IP estático (você pode passar sem isso usando DNS dinâmico, mas eu já tinha um IP estático, então acabou sendo mais fácil de usar serviços Yandex gratuitos - delegando o domínio lá, recebemos hospedagem DNS e correio em nosso domínio);

Hospedar um site no seu roteador doméstico

- configurar servidores DNS e adicione registros A apontando para o seu IP:

Hospedar um site no seu roteador doméstico

Demora várias horas para que as configurações de domínio e delegação de DNS entrem em vigor, por isso estamos configurando o roteador simultaneamente.

Primeiro precisamos instalar o repositório Entware, a partir do qual podemos instalar os pacotes necessários no roteador. Aproveitei esta instrução, apenas não carregou o pacote de instalação via FTP, mas criou uma pasta diretamente na unidade de rede conectada anteriormente e copiou o arquivo lá da maneira usual.

Tendo obtido acesso via SSH, altere a senha com o comando passwd e instale todos os pacotes necessários com o comando opkg install [nomes dos pacotes]:

Hospedar um site no seu roteador doméstico

Durante a configuração, os seguintes pacotes foram instalados no roteador (a saída do comando opkg list-installed):

Lista de pacotes
bash - 5.0-3
caixa ocupada - 1.31.1-1
pacote ca - 20190110-2
certificados ca - 20190110-2
coreutils - 8.31-1
coreutils-mktemp-8.31-1
cron - 4.1-3
ondulação - 7.69.0-1
difutils - 3.7-2
dropbear - 2019.78-3
lançamento de enware - 1.0-2
encontrarutils - 4.7.0-1
glib2 - 2.58.3-5
grep-3.4-1
ldconfig-2.27-9
libattr-2.4.48-2
libblkid-2.35.1-1
biblioteca - 2.27-9
libcurl-7.69.0-1
libffi-3.2.1-4
libgcc-8.3.0-9
libiconv-completo - 1.11.1-4
libintl-completo - 0.19.8.1-2
liblua - 5.1.5-7
libmbedtls-2.16.5-1
montagem da biblioteca - 2.35.1-1
libcurses - 6.2-1
libncursesw-6.2-1
libndm-1.1.10-1a
libopenssl-1.1.1d-2
libopenssl-conf-1.1.1d-2
libpcap-1.9.1-2
libpcre-8.43-2
libpcre2-10.34-1
libthread - 2.27-9
libreadline - 8.0-1a
livro - 2.27-9
libslang2 - 2.3.2-4
libssh2-1.9.0-2
libsp - 8.3.0-9
libstdcpp-8.3.0-9
libuido - 2.35.1-1
libxml2-2.9.10-1
localidades - 2.27-9
mc - 4.8.23-2
ndmq-1.0.2-5a
nginx-1.17.8-1
openssl-util-1.1.1d-2
opkg — 2019-06-14-dcbc142e-2
opt-ndmsv2 - 1.0-12
php7-7.4.3-1
php7-mod-openssl-7.4.3-1
caixa pobre - 1.31.1-2
informações do termo - 6.2-1
zlib-1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europa - 2019c-1

Talvez houvesse algo supérfluo aqui, mas havia muito espaço na unidade, então não me preocupei em investigar.

Depois de instalar os pacotes, configuramos o nginx, tentei com dois domínios - o segundo está configurado com https, e por enquanto existe um stub. As portas internas 81 e 433 são usadas em vez de 80 e 443, pois o painel de administração do roteador trava nas portas normais.

etc/nginx/nginx.conf

user  nobody;
worker_processes  1;
#error_log  /opt/var/log/nginx/error.log;
#error_log  /opt/var/log/nginx/error.log  notice;
#error_log  /opt/var/log/nginx/error.log  info;
#pid        /opt/var/run/nginx.pid;

events {
    worker_connections  64;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  /opt/var/log/nginx/access.log main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;

server {
    listen 81;
    server_name milkov.su www.milkov.su;
    return 301 https://milkov.su$request_uri;
}

server {
        listen 433 ssl;
        server_name milkov.su;
        #SSL support
        include ssl.conf;
        location / {
            root   /opt/share/nginx/html;
            index  index.html index.htm;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
            }
        }
}
</spoiler>
<spoiler title="etc/nginx/ssl.conf">
ssl_certificate /opt/etc/nginx/certs/milkov.su/fullchain.pem;
ssl_certificate_key /opt/etc/nginx/certs/milkov.su/privkey.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /opt/etc/nginx/dhparams.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_stapling on;

Para que o site funcionasse via https, utilizei o conhecido script desidratado, instalando-o usando esta instrução. Este processo não causou nenhuma dificuldade, apenas me deparei com o fato de que no texto do script para trabalhar no meu roteador você precisa comentar a linha no arquivo /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

E observo que gerar dhparams.pem com o comando “openssl dhparam -out dhparams.pem 2048” no meu roteador leva mais de 2 horas, se não fosse pelo indicador de progresso, eu teria perdido a paciência e reiniciado.

Após receber os certificados, reinicie o nginx com o comando “/opt/etc/init.d/S80nginx restart”. Em princípio, a configuração está completa, mas ainda não existe um site - se colocarmos o arquivo index.html no diretório /share/nginx/html, veremos um esboço.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Тестовая страничка!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Тестовая страничка!</h1>
<p>Это простая статическая тестовая страничка, абсолютно ничего интересного.</p>
</body>
</html>

Para colocar as informações de maneira bonita, é mais fácil para um não profissional como eu usar modelos prontos; depois de uma longa pesquisa em vários catálogos, descobri templatemo.com — há uma boa seleção de modelos gratuitos que não requerem atribuição (o que é raro na Internet; a maioria dos modelos na licença exige que você salve um link para o recurso do qual foram obtidos).

Selecionamos um modelo adequado - existem alguns para vários casos, baixe o arquivo e descompacte-o no diretório /share/nginx/html, você pode fazer isso em seu computador e depois editar o modelo (aqui você precisará de conhecimento mínimo do HTML para não quebrar a estrutura) e substitua os gráficos conforme mostrado na figura abaixo.

Hospedar um site no seu roteador doméstico

Resumo: o roteador é bastante adequado para hospedar um site leve nele, em princípio - se não for esperada uma carga grande, você pode instalar e phpe experimente projetos mais complexos (eu olho para nextcloud/owncloud, parece haver instalações bem-sucedidas nesse tipo de hardware). A capacidade de instalar pacotes aumenta sua utilidade - por exemplo, quando foi necessário proteger a porta RDP de um PC em uma rede local, instalei o knockd no roteador - e o encaminhamento de porta para o PC foi aberto somente após a porta bater.

Por que um roteador e não um PC normal? Um roteador é uma das poucas peças de hardware de computador que funciona XNUMX horas por dia em muitos apartamentos; um roteador doméstico geralmente é absolutamente silencioso e um local leve com menos de cem visitas por dia não o incomodará em nada.

Fonte: habr.com

Adicionar um comentário