Passerelle Internet domestique. Configuration initiale d'un mini-ordinateur Ă  6 ports sur Ubuntu Server 20.04 LTS


Sur Internet, il existe d'innombrables informations sur la configuration d'un serveur sur Ubuntu, mais à chaque étape, vous pouvez trouver des moments qui ne sont pas évidents pour un débutant. Je veux partager mon expérience et éventuellement résoudre le problÚme de quelqu'un. L'article vous expliquera comment configurer un serveur multiport (6 ports): Netplan, serveur DHCP, UFW (Firewall non compliqué). Et maintenant, tout d'abord.

introduction


J'ai mis Ă  jour Internet Ă  500 Mbit / s, et il Ă©tait temps de s'attaquer au serveur 100 Mbit, qui fonctionnait sur Pentium 3 et Ă©tait dĂ©jĂ  sur le point. Le choix s'est portĂ© sur la bĂȘte chinoise . Tout ce qui est nĂ©cessaire est disponible, la consommation en mode normal ne dĂ©passe pas 15W, il y a une marge de performance pour des tĂąches supplĂ©mentaires.

Pour un refroidissement actif ajouté calme:


Je ne peindrai pas l'installation du systÚme d'exploitation ("OK - Suivant - Suivant"), je note seulement que lors de l'installation, il est nécessaire de configurer au moins une interface réseau pour accéder à Internet.

Pour plus de commodité, j'utilise Midnight Commander et son éditeur de texte. Nous travaillerons depuis l'utilisateur root:

sudo su

Installez MC:

apt-get install mc

Nous avons donc installé Ubuntu Server, commençons par configurer les interfaces réseau restantes.

Netplan


Dans les versions récentes d'Ubuntu, l'utilitaire Netplan est apparu, ce qui vous permet de configurer le réseau dans un format unifié et de choisir un gestionnaire de réseau avec lequel travailler. Par défaut, Systemd-networkd est utilisé, mais j'ai choisi NetworkManager, car j'ai installé l'interface Web Cockpit, qui utilise NM pour afficher une partie des informations.
La syntaxe de configuration de Netplan est trÚs stricte et un espace ou un onglet supplémentaire peut provoquer une erreur.

Plus de détails sur la fonctionnalité ont déjà été décrits par habr.com/en/post/448400 , ainsi que divers exemples sur le site netplan.io/examples .

Voyons les noms des interfaces:

ip a

Accédez au répertoire / etc / netplan et ouvrez (F4 pour MS) le fichier 50-cloud-init.yaml . Pour l'interface réseau qui sera utilisée pour se connecter à Internet, nous déterminons la réception des paramÚtres par dhcp ( dhcp4: true ). Dans mon cas, c'est enp6s0. Pour le reste, spécifiez false et ajoutez le paramÚtre facultatif: true , car l'interface n'est connectée à rien.

J'ai utilisĂ© bridge pour connecter les interfaces au rĂ©seau local, mais il serait peut-ĂȘtre plus correct d'utiliser vlan. CrĂ©ons un pont lan-br , dĂ©finissons une adresse IP commune, un serveur DNS et spĂ©cifions les interfaces Ă  combiner:

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

J'aurai mon propre serveur DNS, donc je spĂ©cifie l'adresse de mon serveur dans le champ des serveurs de noms , par exemple, vous pouvez spĂ©cifier 8.8.8.8 (Google). Nous indiquons la version et le gestionnaire. Le rĂ©sultat devrait ĂȘtre quelque chose comme ceci:

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

Nous enregistrons le fichier et vérifions / appliquons la configuration:

netplan try

Si tout est fait correctement, alors 'ip a' affichera quelque chose comme ceci:
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


Serveur DHCP


Configurez un serveur DHCP pour que les clients puissent recevoir automatiquement les adresses IP.

apt-get install isc-dhcp-server

Dans le fichier / etc / default / isc-dhcp-server, modifiez la ligne:

INTERFACESv4="lan-br"

Allez dans / etc / dhcp , ouvrez dhcpd.conf et prescrivez les paramĂštres:

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;
}

Redémarrez le serveur DHCP:

service isc-dhcp-server restart

Les clients devraient désormais recevoir automatiquement les adresses.

Ufw


UFW (Uncomplicated Firewall) - un outil pour une configuration iptables plus facile. Configurez un pare-feu et le transfert de paquets entre les interfaces. Accédez à / etc / ufw et décommentez la ligne du fichier sysctl.conf:

net/ipv4/ip_forward=1

Si vous ĂȘtes connectĂ© via ssh, ouvrez le port 22 avant de dĂ©marrer:

ufw allow ssh

Allumez UFW, vérifiez l'état:

ufw enable
ufw status verbose

Définissez les stratégies par défaut:

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

Autoriser l'accÚs depuis le réseau local:

ufw allow in on lan-br to any

Configurez NAT. Ouvrez le fichier before.rules et Ă©crivez ce qui suit avant le bloc de filtre * :

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

Enregistrez et redémarrez ufw:

ufw disable
ufw enable

VĂ©rifions iptables, notre ligne devrait apparaĂźtre:

iptables -t nat -L -v

Sur ce point, la configuration de base du serveur peut ĂȘtre considĂ©rĂ©e comme terminĂ©e.

Conclusion


Je n'ai pas soulevé la question de la configuration du serveur DNS, car je prévois de publier la deuxiÚme partie, qui décrira la configuration de Dnscrypt-proxy en tant que serveur DNS pour le réseau local.

Informations plus détaillées:


All Articles