Интернет-шлюз для двух подсетей на Ubuntu Server 18.04 LTS

09.03.2020

Теги: LinuxUbuntuВиртуализацияКонфигурацияЛокальнаяСетьНастройкаСервер

Небольшой эксперимент создания интернет-шлюза для двух подсетей на базе на Ubuntu Server. У меня дома компьютер с установленной Windows 10 и VirtualBox. Давайте создадим семь виртуальных машин: router, pc-1, pc-2, pc-3, nfs-server, ftp-server, web-server:

  • Виртуальные машины pc-1, pc-2, pc-3 объединены в сеть 192.168.176.0/24
  • Виртуальные машины nfs-server, ftp-server, web-server объединены в сеть 192.168.30.0/24

Виртуальная машина router будет обеспечивать выход в интернет для компьютеров подсетей 192.168.176.0/24 и 192.168.30.0/24, у нее три сетевых интерфейса:

  • enp0s3 (сетевой мост) — смотрит в домашнюю сеть, получает ip-адрес 192.168.110.8 от роутера Keenetic Air
  • enp0s9 (внутреняя сеть) — смотрит в одну сеть с виртуальными машинами pc-1, pc-2, pc-3
  • enp0s8 (внутреняя сеть) — смотрит в одну сеть с виртуальными машинами nfs-server, ftp-server, web-server

Тут надо сказать несколько слов о настройке сети в VirtualBox. Существует несколько способов, рассмотрим два из них:

  • Сетевой мост — при таком подключении виртуальная машина становится полноценным членом локальной сети, к которой подключена основная система. Виртуальная машина получает адрес у роутера и становится доступна для других устройств, как и основной компьютер, по своему ip-адресу.
  • Внутренняя сеть — тип подключения симулирует закрытую сеть, доступную только для входящих в ее состав машин. Поскольку виртуальные машины не имеет прямого доступа к физическому сетевому адаптеру основной системы, то сеть получается полностью закрытой, снаружи и изнутри.

Настройка сети для router

Сначала нужно посмотреть, как называются сетевые интерфейсы в системе:

$ ls /sys/class/net
enp0s3  enp0s8  enp0s9  lo

Теперь редактируем файл /etc/netplan/01-netcfg.yaml

$ sudo nano /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes
    enp0s8:
      dhcp4: no
      addresses: [192.168.30.1/24]
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
    enp0s9:
      dhcp4: no
      addresses: [192.168.176.1/24]
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Применяем настройки и смотрим сетевые интерфейсы:

$ sudo netplan apply # применить настройки из YAML-файла к работающей системе
$ sudo netplan generate # сохранить текущие настройки в файл конфигурации networkd
$ ip a
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:10:c6:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.110.8/24 brd 192.168.110.255 scope global dynamic enp0s3
       valid_lft 21680sec preferred_lft 21680sec
    inet6 fe80::a00:27ff:fe10:c6da/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:4e:0e:a0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.1/24 brd 192.168.30.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe4e:ea0/64 scope link 
       valid_lft forever preferred_lft forever
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:df:e0:96 brd ff:ff:ff:ff:ff:ff
    inet 192.168.176.1/24 brd 192.168.176.255 scope global enp0s9
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fedf:e096/64 scope link 
       valid_lft forever preferred_lft forever

Первый сетевой интерфейс enp0s3 получил ip-адрес 192.168.110.8 от роутера Keenetic Air, этот ip-адрес закреплен постоянно. Второму сетевому интерфейсу enp0s8 мы назначили ip-адрес 192.168.30.1. Третьему сетевому интерфейсу enp0s8 мы назначили ip-адрес 192.168.176.1.

Настройка сети для pc-1, pc-2 и pc-3

Сначала для виртуальной машины pc-1. Смотрим, как называются сетевые интерфейсы в системе:

$ ls /sys/class/net
enp0s3  lo

Открываем на редактирование файл /etc/netplan/01-netcfg.yaml:

$ sudo nano /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.176.2/24]
      gateway4: 192.168.176.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Применяем настройки и смотрим сетевые интерфейсы:

$ sudo netplan apply # применить настройки из YAML-файла к работающей системе
$ sudo netplan generate # сохранить текущие настройки в файл конфигурации networkd
$ ip a
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:e1:23:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.176.2/24 brd 192.168.176.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fee1:234b/64 scope link 
       valid_lft forever preferred_lft forever

Для виртуальных машин pc-2 и pc-3 все будет аналогично, назначаем им ip-адреса 192.168.176.3 и 192.168.176.4.

Настройка сети для nfs-server, ftp-server, web-server

Сначала для виртуальной машины nfs-server. Смотрим, как называются сетевые интерфейсы в системе:

$ ls /sys/class/net
enp0s3  lo

Открываем на редактирование файл /etc/netplan/01-netcfg.yaml:

$ sudo nano /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.30.2/24]
      gateway4: 192.168.30.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Применяем настройки и смотрим сетевые интерфейсы:

$ sudo netplan apply # применить настройки из YAML-файла к работающей системе
$ sudo netplan generate # сохранить текущие настройки в файл конфигурации networkd
$ ip a
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:28:b0:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.2/24 brd 192.168.30.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe28:b04b/64 scope link 
       valid_lft forever preferred_lft forever

Для виртуальных машин ftp-server и web-server все будет аналогично, назначаем им ip-адреса 192.168.30.3 и 192.168.30.4.

Настройка интернет-шлюза

Виртуальная машина router должна обеспечивать выход в интернет для компьютеров из двух подсетей 192.168.176.0/24 и 192.168.30.0/24. По умолчанию транзитный трафик отключен, так что редактируем файл /etc/sysctl.conf:

$ sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1

И перезагружаем виртуальную машину router. После этого настраиваем netfilter с помощью утилиты iptables:

$ sudo iptables -P FORWARD DROP  # сначала все запрещаем, потом разрешаем все необходимое
$ sudo iptables -A FORWARD -i enp0s9 -o enp0s3 -s 192.168.176.0/24 -j ACCEPT
$ sudo iptables -A FORWARD -i enp0s3 -o enp0s9 -d 192.168.176.0/24 -j ACCEPT
$ sudo iptables -A FORWARD -i enp0s8 -o enp0s3 -s 192.168.30.0/24 -j ACCEPT
$ sudo iptables -A FORWARD -i enp0s3 -o enp0s8 -d 192.168.30.0/24 -j ACCEPT

И вот что у нас получилось в итоге:

$ sudo iptables -L -v --line-numbers
Chain INPUT (policy ACCEPT 416 packets, 293K bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1        0     0 ACCEPT   all  --  enp0s9 enp0s3  192.168.176.0/24  anywhere
2        0     0 ACCEPT   all  --  enp0s3 enp0s9  anywhere          192.168.176.0/24
3        0     0 ACCEPT   all  --  enp0s8 enp0s3  192.168.30.0/24   anywhere
4        0     0 ACCEPT   all  --  enp0s3 enp0s8  anywhere          192.168.30.0/24

Chain OUTPUT (policy ACCEPT 163 packets, 12920 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Теперь настроим SNAT (подмена адреса источника), что позволит всем компьютерам двух подсетей выходить в интернет, используя единственный ip-адрес 192.168.110.8:

$ sudo iptables -t nat -A POSTROUTING -s 192.168.176.0/24 -o enp0s3 -j SNAT --to-source 192.168.110.8
$ sudo iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o enp0s3 -j SNAT --to-source 192.168.110.8

И смотрим, что получилось:

$ sudo iptables -t nat -L -v --line-numbers
Chain PREROUTING (policy ACCEPT 191 packets, 24950 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain INPUT (policy ACCEPT 153 packets, 21714 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain OUTPUT (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain POSTROUTING (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1       18  1290 SNAT     all  --  any    enp0s3  192.168.176.0/24  anywhere     to:192.168.110.8
2       18  1290 SNAT     all  --  any    enp0s3  192.168.30.0/24   anywhere     to:192.168.110.8

Доступ к NFS-серверу за NAT

Наш NFS-сервер расположен во внутренней сети 192.168.30.0/24 и имеет ip-адрес 192.168.30.2. Чтобы обеспечить доступ к нему из подсети 192.168.110.0/24, выполняем на виртуальной машине router команды (подробнее можно прочитать здесь):

$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 2049 -j DNAT --to-destination 192.168.30.2
$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p udp --dport 2049 -j DNAT --to-destination 192.168.30.2
$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 111 -j DNAT --to-destination 192.168.30.2
$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p udp --dport 111 -j DNAT --to-destination 192.168.30.2

И смотрим, что получилось:

$ sudo iptables -t nat -L -v --line-numbers
Chain PREROUTING (policy ACCEPT 191 packets, 24950 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:nfs to:192.168.30.2
2        0     0 DNAT     udp  --  enp0s3 any     anywhere          anywhere     udp dpt:nfs to:192.168.30.2
3        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:sunrpc to:192.168.30.2
4        0     0 DNAT     udp  --  enp0s3 any     anywhere          anywhere     udp dpt:sunrpc to:192.168.30.2

Chain INPUT (policy ACCEPT 153 packets, 21714 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain OUTPUT (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain POSTROUTING (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1       18  1290 SNAT     all  --  any    enp0s3  192.168.176.0/24  anywhere     to:192.168.110.8
2       18  1290 SNAT     all  --  any    enp0s3  192.168.30.0/24   anywhere     to:192.168.110.8

Доступ к FTP-серверу за NAT

Наш FTP-сервер расположен во внутренней сети 192.168.30.0/24 и имеет ip-адрес 192.168.30.3. Чтобы обеспечить доступ к нему из подсети 192.168.110.0/24, выполняем на виртуальной машине router команды (подробнее можно прочитать здесь):

$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 21 -j DNAT --to-destination 192.168.30.3
$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 60000:60100 -j DNAT --to-destination 192.168.30.3:60000-60100

И смотрим, что получилось:

$ sudo iptables -t nat -L -v --line-numbers
Chain PREROUTING (policy ACCEPT 191 packets, 24950 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:nfs to:192.168.30.2
2        0     0 DNAT     udp  --  enp0s3 any     anywhere          anywhere     udp dpt:nfs to:192.168.30.2
3        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:sunrpc to:192.168.30.2
4        0     0 DNAT     udp  --  enp0s3 any     anywhere          anywhere     udp dpt:sunrpc to:192.168.30.2
5        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:ftp to:192.168.30.3
6        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpts:60000:60100 to:192.168.30.3:60000-60100

Chain INPUT (policy ACCEPT 153 packets, 21714 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain OUTPUT (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain POSTROUTING (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1       18  1290 SNAT     all  --  any    enp0s3  192.168.176.0/24  anywhere     to:192.168.110.8
2       18  1290 SNAT     all  --  any    enp0s3  192.168.30.0/24   anywhere     to:192.168.110.8

Доступ к WEB-серверу за NAT

Наш WEB-сервер расположен во внутренней сети 192.168.30.0/24 и имеет ip-адрес 192.168.30.4. Чтобы обеспечить доступ к нему из подсети 192.168.110.0/24, выполняем на виртуальной машине router команду:

$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 80 -j DNAT --to-destination 192.168.30.4

И смотрим, что получилось:

$ sudo iptables -t nat -L -v --line-numbers
Chain PREROUTING (policy ACCEPT 191 packets, 24950 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:nfs to:192.168.30.2
2        0     0 DNAT     udp  --  enp0s3 any     anywhere          anywhere     udp dpt:nfs to:192.168.30.2
3        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:sunrpc to:192.168.30.2
4        0     0 DNAT     udp  --  enp0s3 any     anywhere          anywhere     udp dpt:sunrpc to:192.168.30.2
5        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:ftp to:192.168.30.3
6        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpts:60000:60100 to:192.168.30.3:60000-60100
7        0     0 DNAT     tcp  --  enp0s3 any     anywhere          anywhere     tcp dpt:http to:192.168.30.4

Chain INPUT (policy ACCEPT 153 packets, 21714 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain OUTPUT (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination

Chain POSTROUTING (policy ACCEPT 85 packets, 6938 bytes)
num   pkts bytes target   prot opt in     out     source            destination
1       18  1290 SNAT     all  --  any    enp0s3  192.168.176.0/24  anywhere     to:192.168.110.8
2       18  1290 SNAT     all  --  any    enp0s3  192.168.30.0/24   anywhere     to:192.168.110.8

Связь между подсетями

Чтобы обеспечить связь между подсетями 192.168.176.0/24 и 192.168.30.0/24, добавим на маршрутизаторе еще два правила:

$ sudo iptables -A FORWARD -i enp0s9 -o enp0s8 -s 192.168.176.0/24 -d 192.168.30.0/24 -j ACCEPT
$ sudo iptables -A FORWARD -i enp0s8 -o enp0s9 -s 192.168.30.0/24 -d 192.168.176.0/24 -j ACCEPT

Проверим, что с виртуальной машины pc-1 можно достучаться до nfs-server:

$ ping -c 4 192.168.30.2
PING 192.168.30.2 (192.168.30.2) 56(84) bytes of data.
64 bytes from 192.168.30.2: icmp_seq=1 ttl=63 time=0.823 ms
64 bytes from 192.168.30.2: icmp_seq=2 ttl=63 time=0.829 ms
64 bytes from 192.168.30.2: icmp_seq=3 ttl=63 time=0.618 ms
64 bytes from 192.168.30.2: icmp_seq=4 ttl=63 time=0.368 ms

--- 192.168.30.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3025ms
rtt min/avg/max/mdev = 0.368/0.659/0.829/0.190 ms

И наоборот, что с виртуальной машины nfs-server можно достучаться до pc-1:

$ ping -c 4 192.168.176.2
PING 192.168.176.2 (192.168.176.2) 56(84) bytes of data.
64 bytes from 192.168.176.2: icmp_seq=1 ttl=63 time=0.786 ms
64 bytes from 192.168.176.2: icmp_seq=2 ttl=63 time=1.39 ms
64 bytes from 192.168.176.2: icmp_seq=3 ttl=63 time=2.60 ms
64 bytes from 192.168.176.2: icmp_seq=4 ttl=63 time=0.638 ms

--- 192.168.176.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 0.638/1.354/2.604/0.775 ms

Доступ к серверам за NAT по SSH

Чтобы иметь возможность управлять серверами, на каждый из них установлен SSH-сервер. И нужно обеспечить доступ к ним из внешней подсети 192.168.110.0/24. Для этого выполняем на маршрутизаторе три команды:

$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 2222 -j DNAT --to-destination 192.168.30.2:22
$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 3333 -j DNAT --to-destination 192.168.30.3:22
$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 4444 -j DNAT --to-destination 192.168.30.4:22

Первая комнанда — мы отбираем tcp-пакеты, которые приходят на интерфейс enp0s3 на порт 2222 и отправляем эти пакеты виртуальной машине nfs-server на порт 22, заменяя в пакетах пункт назначения на 192.168.30.2. Вторая и третья команды позволяют получить доступ к ftp-server и web-server.

Открываем на физическом компьютере окно PowerShell и выполняем команду:

> ssh -p 2222 evgeniy@192.168.110.8
The authenticity of host '[192.168.110.8]:2222 ([192.168.110.8]:2222)' can't be established.
ECDSA key fingerprint is SHA256:bG9PEZ+cyIKrGwx2usq00Ahx7HGtnELNnYH4LLcPkAY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.110.8]:2222' (ECDSA) to the list of known hosts.
evgeniy@192.168.110.8's password: пароль
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-88-generic x86_64)

Сохранение правил netfilter

Созданные с помощью утилиты iptables правила пропадут при перезагрузке виртуальной машины router. Так что их нужно сохранить и восстанавливать при перезагрузке. В этом нам поможет пакет iptables-persistent:

$ sudo apt install iptables-persistent

При установке пакета будет предложено сохранить текущие правила iptables:

  • в файл /etc/iptables/rules.v4 для протокола IPv4
  • в файл /etc/iptables/rules.v6 для протокола IPv6

После установки пакета будет добавлена новая служба netfilter-persistent.service, которая при загрузке системы будет восстанавливать созданные нами правила:

$ systemctl status netfilter-persistent.service
● netfilter-persistent.service - netfilter persistent configuration
   Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2020-03-11 09:19:52 MSK; 2h 50min ago
  Process: 452 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS)
 Main PID: 452 (code=exited, status=0/SUCCESS)

мар 11 09:19:52 router systemd[1]: Starting netfilter persistent configuration...
мар 11 09:19:52 router systemd[1]: Started netfilter persistent configuration.

При добавлении новых правил, надо сохранить конфигурацию с помощью команды

$ sudo iptables-save > /etc/iptables/rules.v4

Восстановить ранее сохраненную конфигурацию можно с помощью команды

$ sudo iptables-restore < /etc/iptables/rules.v4

Дополнительно

Поиск: Linux • Ubuntu • Виртуальная машина • Конфигурация • Локальная сеть • Настройка • Сервер • Шлюз • Маршрутизатор • iptables

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.