Лайфхаки

Маленькие, полезные хитрости

Интернет-шлюз на базе Ubuntu Server. Решение

24.07.2022 в 12:27

Интернет-шлюз на базе Ubuntu Server. Решение

Для определённости будем называть компьютер с двумя сетевыми картами сервером , каковым он по сути и будет являться, а другой компьютер будет клиентом .

Чтобы решить одну большую задачу, нужно разбить её на много маленьких и решать постепенно. В нашем случае эти задачи выглядят следующим образом:

  • Настроить подключение к интернету через pppoe на сервере
  • Настроить подключение между домашними компьютерами (сервером и клиентом), это будет домашняя локальная сеть
  • Настроить шлюз, то есть трансляцию пакетов между домашней локальной сетью и интернетом

Сейчас у нас на сервере следующие сетевые интерфейсы: локальная петля lo , первая сетевая карта eth0 и вторая сетевая карта eth1 . Опять же, для определённости будем считать, что eth0 - это сетевая карта с интернетом (в неё воткнут кабель провайдера), а eth1 - сетевая карта с кабелем домашней локальной сети, то есть с кабелем от второго компьютера, от клиента.

Практически все настройки производятся на сервере.

Настройка подключения к интернету через pppoe

Запускаем в консоли от имени суперпользователя:

pppoeconf

Начнётся процедура настройки, в которой нам предстоит ответить на несколько вопросов. Процедура понятная и не очень сложная. Важнее то, что после настройки у нас появится новый сетевой интерфейс: ppp0 .

Сетевой интерфейс ppp0 работает на интерфейсе eth0 . Его можно включить и выключить следующими командами:

# включение интерфейса с заданными ранее настройками: pon dsl-provider # выключение интерфейса: poff

При включении ppp0 все необходимые сетевые настройки передаёт нам провайдер, вернее, его сервер pppoe . Для того, чтобы в отсутствие интернета безболезненно пользоваться локальной сетью провайдера, надо сделать ещё несколько телодвижений.

Настраиваем интерфейс eth0 .

Файл /etc/network/interfaces

… auto eth0 iface eth0 inet static # Настройки для подключения, выданные провайдером: address ip_адрес netmask маска_подсети gateway ip_адрес_шлюза …

Прописываем адреса DNS провайдера, чтобы иметь доступ к локальным ресурсам по именам.

Файл /etc/resolv.conf

# Снова настройки от провайдера: nameserver ip_адрес_DNS1 nameserver ip_адрес_DNS2

В моём случае для работы с провайдерской локалкой больше ничего и не надо.

Настройка подключения между домашними компьютерами

Соединяем домашние клиент и сервер кабелем, желательно обжатым по схеме crossover . Можно и обычным патчем, современные сетевые карты умеют работать и так.

Выбираем подсеть для домашней локальной сети, желательно чтобы она не пересекалась с адресами провайдера. Допустим, такую: 10.0.0.0/24 . Это означает, что адреса нашей сети будут иметь вид 10.0.0.х , где х - число от 1 до 255, с маской подсети 255.255.255.0 .

Задаём адреса из выбранной подсети клиенту и серверу. Когда связь между компьютерами появится - идём дальше.

Ubuntu gateway Server. How to set the default gateway on Ubuntu

To access the internet, a gateway plays a vital role. For accessing other devices on a network or devices like computers, they need to be configured either automatically or manually by a network or system administrator. Communication between different devices is necessary to route data packets when they travel across a network. A system’s routing table decides which network interface should send these packets to remote systems or devices. Network devices are used for this purpose, although routing can be performed by any device configured as a router.

A default gateway is used for traffic not destined for the local network and for which no particular route is preferred inside the routing table. Similarly, traffic of static routes must not or need not pass via a default gateway. Traditionally, a default gateway serves as the dedicated network router.

What will we cover?

This guide will learn how to set up a default gateway on Ubuntu 20.04 (Focal Fossa) OS using the ‘ip route’ and ‘route’ command. Let us get started with this HowTo.

What are the Prerequisites?

Before you start with this tutorial, look at the following requirements:

  1. Ubuntu 20.04 installed on your system with internet connectivity.
  2. Root user account or user account with ‘sudo’ privileges.
  3. Basic knowledge of computer networks and Ubuntu administration.

Precaution : Please note that this is a very advanced technical guide. Only attempt to follow this guide if you know what you are doing. If you are a novice and end up messing with network configuration, you may lose your connection to the internet.

Experimental Setup

For this guide, we will use IP 192.168.56.4 (enp0s8) as the default gateway address, the IP address of one of the interfaces on our Ubuntu machine (VM1). The other interface has a different IP address which is 192.168.57.5 (enp0s3). Now comes the VM2, which has only one interface with IP address 192.168.56.101 (enp0s3). It is clear that VM2 enp0s3 cannot access VM1 enp0s3 as both are on different network addresses.

Our task is to make both VMs communicate on interfaces with different network addresses. We will set the IP of VM1(192.168.56.4) as a gateway for another machine (VM2), and we will then check by pinging VM1 from VM2 to see if it can reach it the gateway.

Finding the Default Gateway IP

Let us first check the default gateway that is already set on our machine, for this run the command:

ip route

This will display the default gateway on the terminal.

Alternatively, we can use the ‘route’ command for the same purpose:

route -n

If you get an error like ‘ Command ‘route’ not found ’, then you can install the ‘route’ command with:

sudo apt install net-tools

Check the UG flag to look for the Gateway. Routing table flags and their meanings are given below:

U : UP— indicates that the route is up and valid
H : Host— target is to a host
G : Gateway—means that the route is to a gateway

The output of the above two commands is almost identical. Another way is to use the ‘ netstat -rn ’ command to check the gateway IP.

Setting Default Gateway Using the ‘ip’ Command

First, we will use the ‘ ip ’ command to set the default gateway on VM2. For this, follow the steps mentioned below:

Step 1. Open a terminal (Ctrl+Alt+F2) and run the command:

sudo ip route add default via 192.168.56.4

Step 2. Now ping the VM1 from VM2 to check if our gateway is accessible:

ping -c3 192.168.57.5

To delete the above default route, use the command below:

sudo ip route del default via 192.168.56.4

To confirm the above changes, use the “ route -n ” command.

Setting Default Gateway Using the ‘route’ Command

Now we will use the ‘ route ’ command to set the default gateway on VM2. For this, follow the steps mentioned below:

Step 1. Open a terminal (Ctrl+Alt+F2) and run the command:

sudo route add default gw 192.168.56.4

Step 2. Now ping the VM1 from VM2 to check if our gateway is accessible:

ping -c3 192.168.57.5

To delete the above default route, use the command below:

sudo route del default gw 192.168.56.4

To confirm the above changes, use the “route -n” command.

Conclusion

In this guide, we have learned about setting the default gateway on Ubuntu 20.04. Try to make different scenarios of devices and connect them using a common gateway.

Настройка шлюза Ubuntu. Настройка проводной сети

Настройка IP-адреса, шлюза по умолчанию, маски подсети

Отредактируйте файл конфигурации /etc/network/interfaces , например так:

$ sudo nano /etc/network/interfaces

И допишите в него:
Для статического IP:

iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.0.254 dns-nameservers 192.168.0.254 8.8.8.8 auto eth0

Где:

    iface eth0 inet static- указывает, что интерфейс (iface eth0) находится в диапазоне адресов IPv4 (inet) со статическим ip (static);

    address 192.168.0.1- указывает что IP адрес (address) нашей сетевой карты 192.168.0.1;

    netmask 255.255.255.0- указывает что наша маска подсети (netmask) имеет значение 255.255.255.0;

    gateway 192.168.0.254- адрес шлюза (gateway) по умолчанию 192.168.0.254;

    dns-nameservers 192.168.0.254 8.8.8.8- адресаDNSсерверов (о ниж мы расскажем позже)

    auto eth0- указывет системе что интерфейсeth0необходимо включать автоматически при загрузке системы с вышеуказанными параметрами.

eth0 - имя подключаемого своего интерфейса. Список интерфейсов можно посмотреть набрав:

$ ip addr

В итоге файл /etc/network/interfaces должен выглядеть примерно так:
(для одного проводного соединения со статическим IP)

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # Моя проводная сеть. iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.0.254 dns-nameservers 192.168.0.254 8.8.8.8 auto eth0

Сохраните файл и закройте редактор. В данном примере (редактор nano) - нажмитеCtrl+X, затемY, убедитесь, что «Имя файла для записи» - /etc/network/interfaces и нажмитеEnter.

Более подробно про синтаксис файла /etc/network/interfaces можно прочитать в документации .

Ubunt. 04 router. Настройка сети в Ubuntu Serve. 04 LTS

Сегодня в статье рассмотрим примеры по Настройки сети в Ubuntu Server 20.04 LTS

— это инструмент для управления настройками сети, представленный в Ubuntu начиная с версии 17.10 и выше.

Этот инструмент заменяет файл статических интерфейсов/etc/network/interfaces, который ранее использовался для настройки сетевых интерфейсов в Ubuntu. Теперь вы должны использовать/etc/netplan/*.yamlдля ваших изменений в Ubuntu.

Новый файл конфигурации интерфейсов как вы поняли находится в каталоге/etc/netplan/*.yaml.После чистой установки дистрибутива Ubuntu Server 20.04 в данной директории находится всего один файл. У меня он называется50-cloud-init.yaml

Не забываем о синтаксисе данного файла. Табуляция не используется и количество пробелов должно быть одинаково для одноименных категорий.

Полезное.

Ещё стоит напомнить что для конфигурирования сети могут быть использованы рендера — NetworkManager и networkd .

NetworkManager в основном используется на настольных компьютерах, а networkd в серверных дистрибутивах, хотя никто не мешает использовать их и в обратном порядке.

При использовании NetworkManager в качестве средства визуализации для управления интерфейсами будет использоваться графический интерфейс NetworkManager.

Настройка сети в Ubuntu Server 20.04

Есть два пути настройки сетевых интерфейсов:

  1. Получение IP адресов при помощи DHCP — автоматическая настройка
  2. Настройка статических IP адресов

Если вы используете какой либо маршрутизатор, то идем по первому пути. Но сначала давайте определимся с именами интерфейсов в нашей системе. Для этого воспользуемся командой ifconfig .

Ubuntu Serve. 04 настройка шлюза. Настройка файервола Ubuntu Server

Первым делом после подключения сервера к Интернет необходимо включить межсетевой экран (фаервол, firewall)

  1. Перед включением файервола нужно оставить себе доступ по SSH, для дальнейшей настройки сервера. Следующая команда откроет порт SSH для всех:
    $ sudo ufw allow 22/tcp

    Однако лучше оставить порт открытым только для внутренней сети:

    $ sudo ufw allow proto tcp from 192.168.1.0/24 to 192.168.1.1 port 22

  2. Включим политику блокировать всё остальное
    $ sudo ufw default deny
  3. Включаем в файерволе форвардинг пакетов — необходимо, чтобы наш шлюз мог пересылать пакеты из внутренней сети в интернет и обратно. Для этого отредактируем файл /etc/default/ufw
    DEFAULT_FORWARD_POLICY="ACCEPT"
  4. в /etc/sysctl.conf раскомментируем строчку net.ipv4.ip_forward=1 аналогично для ip6 net.ipv6.conf.default.forwarding=1 (при необходимости) после чего необходимо выполнить команду:
    $ sudo sysctl -p

    Этот параметр так же можно изменить в файле /etc/ufw/sysctl.conf, он применится при включении UFW. В последнем случае синтаксис немного отличается (вместо точек слэши) net/ipv4/ip_forwarding. Включенная настройка в /etc/ufw/sysctl.conf перекрывает настройки заданные в /etc/sysctl.conf.

  5. Включаем NAT для этого добавляем в файл /etc/ufw/before.rules сразу после заголовочного комментария

    # Табица NAT *nat :PREROUTING ACCEPT :POSTROUTING ACCEPT #Очистка -F PREROUTING -F POSTROUTING # включаем трансляцию из сети 192.168.1.0 через интерфейс подключенный к интернету (eth1) -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE # NAT клиентов различных IM сетей, ICQ, Jabber, Mail.Ru -A POSTROUTING -p tcp -m tcp -m multiport -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE --dports 5190,5222,5223,2041,2042 # перенаправление. все http запросы на порт прокси (прозрачный прокси) #-A PREROUTING -s 192.168.1.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 # don't delete the 'COMMIT' line or these nat table rules won't be processed COMMIT

  6. перезапускаем файервол
    $ sudo ufw disable && sudo ufw enable
  7. Добавим разрешение для внутренней сети:
    $ sudo ufw allow from 192.168.1.0/24

    Для более тонкой настройки безопасности рекомендуется ограничить так же доступ из внутренней сети только к необходимым портам.

Интернет шлюз на Linux готовое решение. Пошаговая настройка прозрачного шлюза на Linux

Сегодня настроим интернет шлюз для локальной сети на основе linux дистрибутива Astra. Выполним подготовку сервера и реализуем основной функционал, необходимый для выхода в интернет из локальной сети.

На сервере имеются 2 сетевых интерфейса:

Описание сетевых интерфейсов
Интерфейс Описание IP
eth0внешний интерфейс, подключен к провайдеру, настройки получает по dhcp автоматически (уже настроен)212.57.114.21
eth1внутренний интерфейс, смотрит в локальную сеть, статический ip адрес192.168.0.1

Файл конфигурации сетевых интерфейсов выглядит следующим образом:

source /etc/network/interfaces.d/* auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug eth1 iface eth1 inet static address 10.0.15.1 netmask 255.255.255.0

Если интерфейс настроен при установке через network manager, то в списке мы его не увидим, но это не означает, что «всё пропало».

Подготовка шлюза

Сеть на будущем программном роутере настроили, доступ в интернет на сервере есть. Для начала обновим его:

# apt-get update # apt-get upgrade

* Тут и далее запускаться будет от рута, потому что лень постоянно писать «sudo» , да и кто нам запретит в конце концов =)

Установим MC, мне в нем удобнее всего работать, в том числе в редакторе mcedit :

# apt-get -y install mc

* можно обойтись и nano/vi

Далее включим маршрутизацию пакетов между сетевыми интерфейсами. Для этого редактируем конфиг  /etc/sysctl.conf :

# mcedit /etc/sysctl.conf net.ipv4.ip_forward=1

И применяем эту настройку:

# sysctl -p

На выходе работы команды в консоли будет выведен измененный параметр со значением 1.

Следующие команды настроят ваш iptables для NAT-трансляции (NAT, Network Address Translation — «преобразование сетевых адресов») через наш шлюз:

# iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m conntrack —ctstate NEW -j ACCEPT# iptables -A FORWARD -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT# iptables -A POSTROUTING -t nat -j MASQUERADE

Если необходимые вам сетевые интерфейсы отличаются от eth0 и eth1, то просто измените первую строку соответствующим образом.Если ваша локальная сеть находится вне диапазона 192.168.x.x, то маску подсети для указания в первой строке вы сможете легко вычислить через.

После этого ваш интернет-шлюз готов к работе. Можете настраивать клиентские машины. На нашем примере для них gateway будет 192.168.0.1

Если все внесенные вами изменения работают корректно и вы желаете внести эти настройки в автозагрузку (а именно, вышеприведенные настройки iptables теряют активность после перезагрузки системы), то сохраните нынешнюю рабочую конфигурацию iptables в файл командой:

# sh -c «iptables-save > /etc/iptables.up.rules»

После этого в сам файл сетевых настроек /etc/network/interfaces (sudo nano /etc/network/interfaces) к параметрам вашего сетевого интерфейса, например, из которого к вам поступает интернет (в нашем случае – это eth0, хотя на самом деле можно к любому) добавьте строку:

pre-up iptables-restore

То есть оно станет примерно такого вида:

auto eth0
iface eth0 inet manual
pre-up iptables-restore

Собственно наш шлюз готов, можем выпускать через него клиентов локальной сети.

Ubunt. 04 nat. Ubunt. 04 LTS. Что нового?

Ubuntu - популярный дистрибутив Linux, который отличается стабильностью, и большим сообществом, благодаря чему стабильные релизы дистрибутивов выходят в срок и имеют продолжительный срок официальной поддержки. Окончание публичной поддержки Ubuntu 20.04 «Focal Fossa» датировано апрелем 2025 года, а приватной 2030 года.

Минимальный требования к ресурсам Ubuntu 20.04 Server Live: 1CPU, 1024Mb RAM и 3GB свободного дискового пространства. Особых отличий Ubuntu 20.04 Server Live от Ubuntu 20.04 Desktop нет, оба используют один и тот же репозиторий, ядро имеет ту же конфигурацию, но в исталяторе серверной версии «из коробки» не предусмотрено графическое окружение и программное обеспечение характерное для настольных версий.

Что нового в Ubuntu 20.04? Стоит отметить свежее ядро Linux Kernel 5.4, повышающее производительность и безопасность сервера и некоторые его особенности:

1. В версии 5.4 улучшен Lockdown. Это режим блокировки ядра, который ограничивает доступ пользователя root различными частями функционала ядра, что будет полезно администраторам, которые занимаются его тюнингом. Таким образом, вредоносное п.о, получившее права root, не сможет выполнить свой код и на уровне ядра.

2. Доступен высокопроизводительный драйвер virtio — virtio-fs. Файловая система virtio-fs ускоряет обмен данными между хостом и гостевой системой. Предусмотрен проброс каталогов между ними с более высокой производительностью и совместимостью, чем если бы было использовано, например, NFS.

3. Fs-verity позволяет верифицировать подлинность и целостность файлов по хэшам на уровне файловой системы.

4. Доступен модуль dm-clone, позволяющий клонировать существующее блочное устройство. Например, есть блочное устройство доступное в режиме чтения, модуль позволит создать локальную копию, при этом допустима запись во время процесса клонирования.

5. Реализована защита, запрещающая запись в активные файлы подкачки.

6. Включена поддержка exFAT от Microsoft.

7. Флаги MADV_COLD и MADV_PAGEOUT позволяют определить, какие данные в памяти не критичны для работы процесса. Они перемещают эти данные в SWAP освобождая память.

8. Алгоритма сжатия ядра Linux LZ4 и загрузочного образа initramfs позволяет сократить время загрузки операционной системы.

9. Десятки других изменений, который затронули работу с дисковой и файловой подсистемой, памятью, сетевой подсистемой, аппаратной архитектурой и оборудованием.

Кроме того, в Ubuntu 20.04 реализована полная поддержка Кubernetes 1.18 (MicroK8s и kubeadm), при установке доступны Prometheus, Docker, NextCloud и многое другое. Так же в Ubuntu 20.04 улучшена поддержка ZFS.

Как поменять шлюз в Ubuntu. Ubuntu -> Настройка шлюза локальной сети, на базе Ubunt. 04

     Если у вас есть локальная сеть, то для ее клиентов необходимо предоставить доступ в интернет. Для обеспечения данной возможности необходимо настроить шлюз, который будет принимать запросы клиентов и пересылать их во внешний мир, а поступающие ответы, передавать обратно.
В этой статье, я расскажу как настроить шлюз для локальной сети на Ubuntu, схема его работы очень простая, но и защиты он не обеспечивает. Существует распространенное заблуждение что NAT ( Network Address Translation -транслятор сетевых адресов) обеспечивает защиту от внешних угроз, но это далеко не так, у него совершенно другое назначение, фактически это дверь, которая открывается в обе стороны, со всеми вытекающими последствиями…
Если есть необходимость в повышении уровня безопасности, а такая необходимость есть всегда, то тут нужно настраивать «фаерволл», я намеренно не привожу никаких правил на этот случай, т.к. они настраиваются исходя из конкретных задач.
В целом, данная статья планировалась как база, для статей на ближайшие пару лет, на ее основе можно развернуть целую кучу серверов, фактический, данный сервер может обрастать функционалом, исходя из ваших задач и потребностей.
Для работы нам понадобится
1) Система с двумя сетевыми картами-которая будет выполнять функцию шлюза.
2) Клиентский ПК, с которого мы будем тестировать работу шлюза.
Схема работы:
Как поменять шлюз в Ubuntu. Ubuntu - Настройка шлюза локальной сети, на базе Ubunt. 04Предполагается, что операционная система у вас установлена, на сервере который имеет 2 сетевых интерфейса.
eth0 — подключение к интернет. (может получать IP адрес динамически, может иметь статический, я опишу оба варианта)
eth1 — подключение к локальной сети, будет иметь статический IP 192.168.10.1 и маску 255.255.255.0
Также, для тестирования нам понадобится клиентская машина, которая будет находиться в локальной сети (операционная система значения не имеет).
Первым делом, настраиваем сетевые интерфейсы сервера:
Поднимаем права до root

sudo su

Вводим пароль.
Редактируем настройки сетевых интерфейсов:

nano /etc/network/interfaces

Навастриваем eth0 (по которому осуществляется подключение к интернет)
Вариант №1- Получение IP по DHCP от провайдера:

auto eth0 iface eth0 inet dhcp

Вариант №2-Статический IP

auto eth0 iface eth0 inet static address XXX.XXX.XXX.XXX netmask 255.YYY.YYY.YYY gateway XXX.XXX.XXX.XXX dns-nameservers ZZZ.ZZZ.ZZZ.ZZZ

Где:
Вместо XXX.XXX.XXX.XXX вписываем IP адрес, который мы получили от провайдера
Вместо 255.YYY.YYY.YYY -выписываем маску подсети.
Ну и вместо ZZZ.ZZZ.ZZZ.ZZZ вписываем IP адрес DNS сервера.
Настраиваем eth1 (по которому подключается локальная сеть)

auto eth1 iface eth1 inet static address 192.168.10.1 netmask 255.255.255.0

В результате действий у на должен получиться файл interfaces, примерно, следующего содержания:

auto lo iface lo inet loopback auto eth0 iface eth0 inet static address XXX.XXX.XXX.XXX netmask 255.YYY.YYY.YYY gateway XXX.XXX.XXX.XXX auto eth1 iface eth1 inet static address 192.168.10.1 netmask 255.255.255.0

Сохраняем изменения, выходим.
Перезапустим сеть:

/etc/init.d/networking restart

Из написанного, думаю понятно, что в локальной сети адрес шлюза и dns сервера, будет 192.168.10.1.
Переходим на к нашему тестовому клиенту, т.к. у нас в сети нет DHCP сервера, то IP адрес мы будем назначать в ручную.
Присваиваем клиенту:
IP 192.168.10.2
маску подсети 255.255.255.0
шлюз 192.168.10.1
DNS 192.168.10.1
пробуем с клиента принговать 192.168.10.1 — запросы должны бегать нормально.
Переходим на наш шлюз.
Установим пакет dnsmasq , он необходим для перенаправления DNS запросов, вышестоящим серверам.

apt-get install dnsmasq

Возвращаемся к клиенту, выполняем на нем


Сервер: UnKnown
Address: 192.168.10.1
Имя: mail.ru
Addresses: 94.100.191.201
94.100.191.204
94.100.191.203
94.100.191.202
Отлично, разрешение имен работает, но если мы попробуем открыть страницу mail.ru , то у нас ничего не получится, потому что не настроена маршрутизация пакетов.
Настроим ее:
Первым делом, разрешаем перенаправление пакетов:


net.ipv4.ip_forward=1

Сохраняем изменения и выходим
Теперь, нам необходимо добавить правила для маршрутизации пакетов:

nano /etc/rc.local

Добавим перед строкой exit 0

iptables -F iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth0 -o eth0 -j REJECT iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Значение можно разобрать самостоятельно (будет в качестве домашнего задания), на форуме ubuntu был отличный FAQ по настройке iptables.
Сохраняем изменения, и перезагружаем сервер

reboot

Дождемся загрузки сервера и перейдя к клиентской системе, пробуем открыть сайт Mail.ru-все должно открываться!
Вот так, настраивается шлюз для локальной сети. Это, одно из самых простых решений.

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

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

$ sudo nano /etc/sysctl.conf

net.ipv4.ip_forward=1

Чтобы внесенные изменения вступили в силу:

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

После этого настраиваемnetfilterс помощью утилитыiptables:

$ sudo iptables -P FORWARD DROP

$ 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 781 packets, 4517K 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 57 4213 ACCEPT all -- enp0s8 enp0s3 192.168.30.0/24 anywhere 2 52 87384 ACCEPT all -- enp0s3 enp0s8 anywhere 192.168.30.0/24 Chain OUTPUT (policy ACCEPT 639 packets, 49312 bytes) num pkts bytes target prot opt in out source destination

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