Gateway de Internet Doméstico. Configuração inicial de um minicomputador de 6 portas no Ubuntu Server 20.04 LTS


Na Internet, existem inúmeras informações sobre a configuração de um servidor no Ubuntu, mas a cada passo você pode encontrar momentos que não são óbvios para um iniciante. Quero compartilhar minha experiência e possivelmente resolver o problema de alguém. O artigo mostrará como configurar um servidor de várias portas (6 portas): Netplan, servidor DHCP, UFW (Uncomplicated Firewall). E agora, as primeiras coisas primeiro.

Introdução


Atualizei a Internet para 500 Mbit / s e estava na hora de enfrentar o servidor de 100 Mbit, que funcionava no Pentium 3 e já estava à beira. A escolha recaiu sobre a besta chinesa . Tudo o que é necessário está disponível, o consumo no modo normal não excede 15W, há uma margem de desempenho para tarefas adicionais.

Para uma calma de refrigeração ativa adicionada:


Não pintarei a instalação do SO ("OK - Próximo - Próximo"), apenas observe que durante a instalação é necessário configurar pelo menos uma interface de rede para acessar a Internet.

Por conveniência, eu uso o Midnight Commander e seu editor de texto. Vamos trabalhar com o usuário root:

sudo su

Instale o MC:

apt-get install mc

Então, como instalamos o Ubuntu Server, vamos começar configurando as interfaces de rede restantes.

Netplan


Nas versões recentes do Ubuntu, apareceu o utilitário Netplan, que permite configurar a rede em um formato unificado e escolher um gerenciador de rede para trabalhar. Por padrão, o Systemd-networkd é usado, mas eu escolhi o NetworkManager, porque instalei a interface da Web do Cockpit, que usa o NM para exibir parte das informações.
A sintaxe de configuração do Netplan é muito rigorosa e um espaço ou guia extra pode causar um erro.

Mais detalhes sobre a funcionalidade já foram descritos em habr.com/en/post/448400 , assim como vários exemplos no site netplan.io/examples .

Vamos ver os nomes das interfaces:

ip a

Vá para o diretório / etc / netplan e abra (F4 para MS) o arquivo 50-cloud-init.yaml . Para a interface de rede que será usada para conectar-se à Internet, determinamos o recebimento das configurações por dhcp ( dhcp4: true ). No meu caso, é enp6s0. De resto, especifique false e inclua o parâmetro opcional: true , porque a interface pode não estar conectada a nada.

Eu usei bridge para conectar as interfaces à rede local, mas talvez seja mais correto usar a vlan. Vamos criar uma ponte lan-br , definir um endereço IP comum, um servidor DNS e especificar as interfaces a serem combinadas:

  bridges:
    lan-br:
      dhcp4: false
      addresses: [ 192.168.13.1/24 ]
      nameservers: 
        addresses: [ 192.168.13.1 ]
      interfaces: [ enp1s0, enp2s0, enp3s0, enp4s0, enp5s0 ]

Vou ter meu próprio servidor DNS, portanto, especifique o endereço do meu servidor no campo servidores de nomes ; por exemplo, você pode especificar 8.8.8.8 (Google). Indicamos a versão e o gerente. O resultado deve ser algo como isto:

network:
  ethernets:
    enp1s0:
      dhcp4: false
      optional: true
    enp2s0:
      dhcp4: false
      optional: true
    enp3s0:
      dhcp4: false
      optional: true
    enp4s0:
      dhcp4: false
      optional: true
    enp5s0:
      dhcp4: false
      optional: true
    enp6s0:
      dhcp4: true
      nameservers:
        addresses:
        - 127.0.0.1
        - 192.168.13.1
  bridges:
    lan-br:
      dhcp4: false
      addresses: [ 192.168.13.1/24 ]
      nameservers: 
        addresses: [ 192.168.13.1 ]
      interfaces: [ enp1s0, enp2s0, enp3s0, enp4s0, enp5s0 ]
  version: 2
  renderer: NetworkManager

Nós salvamos o arquivo e verificamos / aplicamos a configuração:

netplan try

Se tudo for feito corretamente, 'ip a' mostrará algo como isto:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master lan-br state UP group default qlen 1000
    link/ether 0c:e8:2c:68:5b:57 brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master lan-br state UP group default qlen 1000
    link/ether 0c:e8:2c:68:5b:58 brd ff:ff:ff:ff:ff:ff
4: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master lan-br state UP group default qlen 1000
    link/ether 0c:e8:2c:68:5b:59 brd ff:ff:ff:ff:ff:ff
5: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 0c:e8:2c:68:5b:5a brd ff:ff:ff:ff:ff:ff
6: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 0c:e8:2c:68:5b:5b brd ff:ff:ff:ff:ff:ff
7: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 0c:e8:2c:68:5b:5c brd ff:ff:ff:ff:ff:ff
    inet 188.32.236.197/19 brd 188.32.255.255 scope global dynamic noprefixroute enp6s0
       valid_lft 2898sec preferred_lft 2898sec
    inet6 fe80::ee8:2cff:fe68:5b5c/64 scope link 
       valid_lft forever preferred_lft forever
8: lan-br: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 0c:e8:2c:68:5b:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.13.1/24 brd 192.168.13.255 scope global noprefixroute lan-br
       valid_lft forever preferred_lft forever
    inet6 fe80::ee8:2cff:fe68:5b58/64 scope link 
       valid_lft forever preferred_lft forever


Servidor DHCP


Configure um servidor DHCP para que os clientes possam receber endereços IP automaticamente.

apt-get install isc-dhcp-server

No arquivo / etc / default / isc-dhcp-server, edite a linha:

INTERFACESv4="lan-br"

Vá para / etc / dhcp , abra dhcpd.conf e prescreva as configurações:

option domain-name "your-domain-name";
option domain-name-servers 192.168.13.1;

subnet 192.168.13.0 netmask 255.255.255.0 {
    range 192.168.13.100 192.168.13.250;
    option subnet-mask 255.255.255.0;
    option routers 192.168.13.1;
    option broadcast-address 192.168.13.255;
}

Reinicie o servidor DHCP:

service isc-dhcp-server restart

Os clientes agora devem receber endereços automaticamente.

Ufw


UFW (Uncomplicated Firewall) - uma ferramenta para facilitar a configuração de tabelas de ip. Configure um firewall e encaminhamento de pacotes entre interfaces. Vá para / etc / ufw e remova o comentário da linha no arquivo sysctl.conf:

net/ipv4/ip_forward=1

Se você estiver conectado via ssh, abra a porta 22 antes de iniciar:

ufw allow ssh

Ligue o UFW, verifique o status:

ufw enable
ufw status verbose

Defina as políticas padrão:

ufw default deny incoming
ufw default allow outgoing
ufw default allow routed

Permitir acesso da rede local:

ufw allow in on lan-br to any

Configure o NAT. Abra o arquivo before.rules e escreva o seguinte antes do bloco de filtro * :

*nat
:POSTROUTING ACCEPT [0:0]
#local
-A POSTROUTING -s 192.168.13.0/24 -o enp6s0 -j MASQUERADE
COMMIT

Salve e reinicie o ufw:

ufw disable
ufw enable

Vamos verificar o iptables, nossa linha deve aparecer:

iptables -t nat -L -v

Com isso, a configuração básica do servidor pode ser considerada completa.

Conclusão


Não levantei a questão de configurar o servidor DNS, pois pretendo lançar a segunda parte, que descreverá a configuração do Dnscrypt-proxy como um servidor DNS para a rede local.

Informações mais detalhadas:


All Articles