Настройка nat на сервере ubuntu 21

Обновлено: 03.07.2024

Общая сетевая инфраструктура может состоять из частной сети в изолированной подсети. Хотя входящие подключения могут не понадобиться для доступа к частной сети извне, бывают случаи, когда вам могут понадобиться серверы в частной подсети для подключения к службам за пределами подсети или к общедоступному Интернету. Примером может быть загрузка программного пакета, отправка резервных копий данных во внешнее хранилище или применение системных обновлений к серверам в частной подсети.

Сервер шлюза Linux с двумя сетевыми интерфейсами или сетевыми адаптерами можно использовать для объединения двух сетей. Одна сетевая карта будет подключаться к внешней или общедоступной сети, а другая сетевая карта будет подключаться к частной подсети. Затем переадресация IP и правило NAT используются для маршрутизации трафика из частной подсети во внешнюю сеть.

Трафик с внутренних серверов будет выглядеть как исходящий с IP-адреса шлюза. Сгенерированный извне трафик будет достигать шлюза и не будет виден в частной подсети.

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

Требования

  • Убунту 14.10
  • Один сервер шлюза с двумя сетевыми интерфейсами
    • Общедоступный сетевой адаптер: 203.0.113.110
    • Частный сетевой адаптер: 10.0.0.1
    • Частный сетевой адаптер: 10.0.0.2

    Развертывание инфраструктуры

    Пример инфраструктуры будет состоять из одного шлюзового сервера, соединяющего общедоступный Интернет и частную подсеть.

    Основному сетевому интерфейсу eth0 шлюза будет назначен общедоступный IP-адрес 203.0.113.110 с подключением к общедоступному Интернету через LAN 1. Второстепенному сетевому интерфейсу eth1 будет назначен IP-адрес 10.0.0. .0.1 с подключением к частной сети через LAN 2.

    Второй внутренний сервер с именем node1 будет находиться в частной сети в локальной сети 2 с IP-адресом 10.0.0.2. Дальнейшие внутренние серверы будут следовать той же конфигурации, что и этот сервер. Вот диаграмма примера инфраструктуры ProfitBricks Data Center Designer (DCD).


    < /p>

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

    По умолчанию DCD ProfitBricks динамически назначает серверу шлюза общедоступный IP-адрес. Это подходит для учебного пособия, однако также можно использовать статический общедоступный IP-адрес.

    Отредактируйте файл /etc/network/interfaces. Никаких изменений в eth0 не требуется, если не требуется статический IP-адрес. Вот настройки по умолчанию.

    разрешить горячее подключение eth0 iface eth0 inet dhcp

    Настройка вторичной сетевой карты шлюза

    Дополнительному сетевому интерфейсу необходимо назначить частный статический IP-адрес. В том же файле интерфейсов измените раздел для eth1 или создайте новый раздел, если он отсутствует.

    allow-hotplug eth1 iface eth1 inet статический адрес 10.0.0.1 сетевая маска 255.255.255.0

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

    Настройка сетевой карты внутреннего сервера

    Внутреннему серверу node1 необходимо назначить частный статический IP-адрес и IP-адрес шлюза, который соответствует частному IP-адресу исходящего шлюза. Обновите eth0 в файле /etc/network/interfaces, указав статический IP-адрес, сетевую маску и шлюз.

    allow-hotplug eth0 iface eth0 inet статический адрес 10.0.0.2 сетевая маска 255.255.255.0 шлюз 10.0.0.1

    Необходимо применить сетевые настройки (или перезагрузить сервер).

    Включить IP-переадресацию

    Следующий шаг — включить пересылку пакетов IPv4. Отредактируйте файл /etc/ufw/sysctl.conf и раскомментируйте строку IPv4 ip_forward.

    То же самое можно сделать, если переадресация необходима для трафика IPv6.

    Включить NAT

    Включите политику переадресации брандмауэра, изменив значение DEFAULT_FOWARD_POLICY в /etc/default/ufw .

    *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE COMMIT

    Если брандмауэр еще не включен, добавьте правило для входящего доступа по SSH и запустите брандмауэр.

    Если брандмауэр уже включен, перезагрузите брандмауэр.

    Теперь внутренний узел должен иметь доступ к общедоступному Интернету через сервер шлюза. Это можно проверить, отправив эхо-запрос на внешний сервер с node1.

    Следуйте этому руководству, чтобы узнать, как настроить Ubuntu 20.04 в качестве маршрутизатора Linux. Linux великолепен, он может работать как «что угодно», -:). Так же, как вы можете использовать любой другой маршрутизатор для перенаправления трафика между локальными сетями и даже в Интернет.

    Настроить Ubuntu 20.04 в качестве маршрутизатора Linux

    Настройка системы Linux для работы в качестве маршрутизатора — это еще не все.Однако в этом руководстве мы рассмотрим, как настроить маршрутизатор Linux для маршрутизации трафика в Интернет через интерфейс WAN, а также для маршрутизации трафика между локальными сетями через интерфейсы LAN.

    Ниже показана наша базовая схема настройки;

    Настроить Ubuntu 20.04 как Маршрутизатор Linux

    Назначение статических IP-адресов маршрутизатору Linux

    • enp0s3: интерфейс WAN с IP-адресом 192.168.100.101 (предложенный, статический)
    • enp0s8: локальная сеть, 172.16.0.1/24, (статический)
    • enp0s9: локальная сеть 172.16.1.1/24, (статическая)

    Информация об IP-адресе маршрутизатора

    Назначение IP-адресов;

    Сведения об IP-адресах на других серверах локальной сети;

    Хост в сети 172.16.1.0/24:
    Хост в сети 172.16.1.0/24:
    • ни одно устройство в локальной сети не имеет доступа к Интернету
    • только устройства в одной локальной сети могут получать доступ друг к другу
    • Ни одно устройство не может получить доступ к устройствам в другой локальной сети.

    Настроить Ubuntu 20.04 как маршрутизатор Linux

    Включить переадресацию IP ядра на маршрутизаторе Ubuntu Linux

    Затем вам нужно включить переадресацию IP, чтобы маршрутизатор Linux мог функционировать как маршрутизатор, получать и пересылать пакеты.

    После этого устройства с адресами 172.16.0.0/24 и 172.16.1.0/24 должны иметь возможность обмениваться данными.

    Чтобы включить переадресацию IP, необходимо раскомментировать строку net.ipv4.ip_forward=1 в файле конфигурации /etc/sysctl.conf.

    Итак, сначала проверьте, определена ли уже указанная строка в файле конфигурации;

    если строка присутствует в файле конфигурации и комментарии, просто раскомментируйте, выполнив команду ниже;

    В противном случае просто вставьте строку;

    Далее примените изменения;

    Проверьте статус, выполнив приведенную ниже команду;

    Значение должно быть 1.

    Проверьте переадресацию IP между двумя локальными сетями.

    Настроить Ubuntu 20.04 как Маршрутизатор Linux

    Настройка NAT и переадресации на маршрутизаторе Linux

    NAT и Forwarding можно выполнять с помощью iptables или интерфейсной утилиты iptables, такой как UFW .

    Настроить пересылку пакетов

    Настройте пакеты, полученные от интерфейсов локальной сети маршрутизатора (enp0s8 и enp0s9), для пересылки через интерфейс глобальной сети, в нашем случае это enp0s3 .

    Аналогичным образом настройте пересылку пакетов, связанных с существующими подключениями, полученными через интерфейс WAN, на интерфейсы LAN;

    Настройка NAT

    Далее настройте NAT;

    Чтобы убедиться, что две локальные сети также могут обмениваться данными, выполните приведенные ниже команды;

    Для получения дополнительной информации обратитесь к man iptables.

    Навсегда сохранить правила iptables в Linux

    Чтобы навсегда сохранить правила iptables, просто установите пакет iptables-persistent и выполните команду iptables-save следующим образом.

    Текущие правила будут сохранены во время установки пакета, но после этого их можно будет сохранить, выполнив команду;

    Теперь ваши локальные системы должны иметь возможность подключаться к Интернету через маршрутизатор Linux;

    Настроить Ubuntu 20.04 как маршрутизатор Linux

    И вот. Теперь ваша виртуальная машина может направлять трафик через маршрутизатор Linux.

    На этом мы завершаем наше руководство по настройке Ubuntu 20.04 в качестве маршрутизатора Linux.

    Ubuntu поставляется с рядом графических утилит для настройки сетевых устройств. Этот документ предназначен для администраторов серверов и посвящен управлению вашей сетью с помощью командной строки.

    Интерфейсы Ethernet

    Определение интерфейсов Ethernet

    Чтобы быстро определить все доступные интерфейсы Ethernet, вы можете использовать команду ip, как показано ниже.

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

    Логические имена интерфейса Ethernet

    Логические имена интерфейсов также можно настроить с помощью конфигурации сетевого плана. Если вы хотите контролировать, какой интерфейс получает конкретное логическое имя, используйте клавиши match и set-name. Ключ соответствия используется для поиска адаптера на основе некоторых критериев, таких как MAC-адрес, драйвер и т. д.Затем с помощью клавиши set-name можно изменить устройство на желаемое логическое имя.

    Настройки интерфейса Ethernet

    ethtool – это программа, которая отображает и изменяет параметры карты Ethernet, такие как автосогласование, скорость порта, дуплексный режим и Wake-on-LAN. Ниже приведен пример просмотра поддерживаемых функций и настроенных параметров интерфейса Ethernet.

    IP-адресация

    В следующем разделе описывается процесс настройки IP-адреса вашей системы и шлюза по умолчанию, необходимых для связи в локальной сети и Интернете.

    Временное назначение IP-адреса

    Для временной настройки сети вы можете использовать команду ip, которая также присутствует в большинстве других операционных систем GNU/Linux. Команда ip позволяет настроить параметры, которые вступают в силу немедленно, однако они не являются постоянными и будут потеряны после перезагрузки.

    Чтобы временно настроить IP-адрес, вы можете использовать команду ip следующим образом. Измените IP-адрес и маску подсети в соответствии с требованиями вашей сети.

    Затем IP-адрес можно использовать для установки связи вверх или вниз.

    Чтобы проверить конфигурацию IP-адреса enp0s25, вы можете использовать команду ip следующим образом.

    Чтобы настроить шлюз по умолчанию, вы можете использовать команду ip следующим образом. Измените адрес шлюза по умолчанию, чтобы он соответствовал требованиям вашей сети.

    Чтобы проверить конфигурацию шлюза по умолчанию, вы можете использовать команду ip следующим образом.

    Если вам требуется DNS для временной конфигурации сети, вы можете добавить IP-адреса DNS-серверов в файл /etc/resolv.conf . Как правило, непосредственное редактирование /etc/resolv.conf не рекомендуется, но это временная и непостоянная конфигурация. В приведенном ниже примере показано, как ввести два DNS-сервера в /etc/resolv.conf, которые следует изменить на серверы, подходящие для вашей сети. Более подробное описание правильного постоянного способа настройки DNS-клиента приведено в следующем разделе.

    Если вам больше не нужна эта конфигурация и вы хотите удалить всю IP-конфигурацию из интерфейса, вы можете использовать команду ip с параметром flush, как показано ниже.

    Примечание

    Сброс конфигурации IP с помощью команды ip не очищает содержимое /etc/resolv.conf . Вы должны удалить или изменить эти записи вручную или перезагрузиться, что также должно привести к перезаписи /etc/resolv.conf , который является символической ссылкой на /run/systemd/resolve/stub-resolv.conf .

    Динамическое назначение IP-адреса (DHCP-клиент)

    Чтобы настроить сервер на использование DHCP для динамического назначения адресов, создайте конфигурацию netplan в файле /etc/netplan/99_config.yaml . В приведенном ниже примере предполагается, что вы настраиваете свой первый интерфейс Ethernet, обозначенный как enp3s0.

    Затем конфигурацию можно применить с помощью команды netplan.

    Назначение статического IP-адреса

    Чтобы настроить систему на использование статического назначения адресов, создайте конфигурацию netplan в файле /etc/netplan/99_config.yaml . В приведенном ниже примере предполагается, что вы настраиваете свой первый интерфейс Ethernet, обозначенный как eth0. Измените значения addresses, gateway4 и nameservers в соответствии с требованиями вашей сети.

    Затем конфигурацию можно применить с помощью команды netplan.

    Интерфейс обратной связи

    Интерфейс обратной связи идентифицируется системой как lo и имеет IP-адрес по умолчанию 127.0.0.1. Его можно просмотреть с помощью команды ip.

    Разрешение имени

    Разрешение имен применительно к IP-сетям — это процесс сопоставления IP-адресов с именами хостов, упрощающий идентификацию ресурсов в сети. В следующем разделе объясняется, как правильно настроить систему для разрешения имен с помощью DNS и статических записей имен хостов.

    Конфигурация DNS-клиента

    Традиционно файл /etc/resolv.conf был статическим файлом конфигурации, который редко требовалось изменять или изменять автоматически с помощью клиентских ловушек DCHP. Systemd-resolve обрабатывает конфигурацию сервера имен, и с ним следует взаимодействовать с помощью команды systemd-resolve. Netplan настраивает systemd-resolved для создания списка серверов имен и доменов для помещения в /etc/resolv.conf , который является символической ссылкой:

    Чтобы настроить преобразователь, добавьте IP-адреса серверов имен, подходящие для вашей сети, в файл конфигурации netplan. Вы также можете добавить необязательные списки поиска суффиксов DNS, чтобы они соответствовали именам доменов в вашей сети. Результирующий файл может выглядеть следующим образом:

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

    Если вы попытаетесь пропинговать хост с именем server1, ваша система автоматически запросит у DNS полное доменное имя (FQDN) в следующем порядке:

    Если совпадений не найдено, DNS-сервер предоставит результат не найдено, и DNS-запрос завершится ошибкой.

    Статические имена хостов

    Статические имена хостов — это локально определенные сопоставления имен хостов и IP-адресов, расположенные в файле /etc/hosts . Записи в файле hosts по умолчанию имеют приоритет над DNS. Это означает, что если ваша система пытается разрешить имя хоста и оно совпадает с записью в /etc/hosts, она не будет пытаться найти запись в DNS. В некоторых конфигурациях, особенно когда доступ в Интернет не требуется, серверы, взаимодействующие с ограниченным числом ресурсов, можно удобно настроить на использование статических имен хостов вместо DNS.

    Ниже приведен пример файла hosts, в котором несколько локальных серверов идентифицируются простыми именами хостов, псевдонимами и эквивалентными им полными доменными именами (FQDN).

    Примечание

    В приведенном выше примере обратите внимание, что каждому из серверов были присвоены псевдонимы в дополнение к их собственным именам и полным доменным именам. Server1 сопоставлен с именем vpn, server2 называется mail, server3 как www и server4 как файл.

    Конфигурация коммутатора службы имен

    Порядок, в котором ваша система выбирает метод преобразования имен хостов в IP-адреса, контролируется файлом конфигурации переключателя службы имен (NSS) /etc/nsswitch.conf . Как упоминалось в предыдущем разделе, обычно статические имена хостов, определенные в системном файле /etc/hosts, имеют приоритет над именами, полученными из DNS. Ниже приведен пример строки, отвечающей за этот порядок поиска имен хостов в файле /etc/nsswitch.conf.

    files сначала пытается разрешить статические имена хостов, расположенные в /etc/hosts .

    mdns4_minimal пытается разрешить имя с помощью многоадресной рассылки DNS.

    [NOTFOUND=return] означает, что любой ответ notfound предыдущего процесса mdns4_minimal следует рассматривать как авторитетный и что система не должна пытаться продолжать поиск ответ.

    dns представляет собой устаревший одноадресный DNS-запрос.

    mdns4 представляет многоадресный DNS-запрос.

    Чтобы изменить порядок вышеупомянутых методов разрешения имен, вы можете просто изменить строку hosts: на значение по вашему выбору. Например, если вы предпочитаете использовать устаревший одноадресный DNS вместо многоадресного DNS, вы можете изменить строку в файле /etc/nsswitch.conf, как показано ниже.

    Связь

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

    Настройте мост, изменив конфигурацию сетевого плана в /etc/netplan/:

    Примечание

    Введите соответствующие значения для вашего физического интерфейса и сети.

    Теперь примените конфигурацию, чтобы включить мост:

    Теперь новый интерфейс моста должен быть запущен и работать. brctl предоставляет полезную информацию о состоянии моста, определяет, какие интерфейсы являются частью моста и т. д. Для получения дополнительной информации см. man brctl.

    networkd-dispatcher для pre-up, post-up и т. д. скриптов ловушек

    Пользователи предыдущего ifupdown могут быть знакомы с использованием скриптов-ловушек (например, pre-up, post-up и т. д.) в своих файлах интерфейсов. Конфигурация Netplan в настоящее время не поддерживает сценарии подключения в своем определении конфигурации.

    Вместо того, чтобы реализовать эту функциональность с помощью сетевого рендерера, пользователи могут использовать networkd-dispatcher. Пакет предоставляет пользователям и пакетам контрольные точки при достижении определенных состояний сети, чтобы помочь реагировать на состояние сети.

    Примечание. Если не на Ubuntu Server, а на рабочем столе, сеть управляется Network Manager — в этом случае вместо этого вам понадобятся сценарии NM Dispatcher.

    В FAQ по Netplan есть отличная таблица, в которой сравниваются тайминги событий между ifupdown / systemd-networkd / network-manager

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

    В FAQ Netplan также есть пример преобразования старого хука ifupdown в networkd-dispatcher .

    Ресурсы

    На странице Ubuntu Wiki Network есть ссылки на статьи, посвященные более сложной настройке сети.

    На веб-сайте netplan есть дополнительные примеры и документация.

    Справочная страница netplan содержит дополнительную информацию о netplan.

    Справочная страница systemd-resolved содержит дополнительную информацию о сервисе systemd-resolved.

    Конфигурация маршрутизатора Linux проста, вам просто нужно убедиться, что маршрутизатор имеет два интерфейса, подключенных к сети, которая будет маршрутизироваться, включить пересылку пакетов и iptables для NAT, если это необходимо. Есть более продвинутая конфигурация, но в этом посте мы создадим Linux-маршрутизатор на Ubuntu Server 20.04, чтобы разрешить трафик локальной сети в Интернет через интерфейс WAN с NAT.

    Как собрать маршрутизатор Linux с Ubuntu Server 20.04 LTS

    Как собрать маршрутизатор Linux с Ubuntu Server 20.04 LTS

    Ubuntu Server 20.04 поставляется с netplan в качестве инструмента настройки сетевого интерфейса по умолчанию. Если вы не знакомы с netplan, прочитайте предыдущий пост о Ubuntu Server 20.04 LTS — базовая конфигурация сети с netplan.

    Как собрать маршрутизатор Linux с Ubuntu Server 20.04 LTS

    • enp0s3 — это интерфейс WAN, он будет настроен на получение IP-адреса от DHCP-сервера.
    • enp0s8 — это интерфейс локальной сети, он будет настроен на использование IP-адреса 10.10.10.1/24.

    В приведенной ниже конфигурации добавлен интерфейс enp0s3 для получения DHCP и enp0s8 для использования IP-адреса 10.10.10.1/24. Просто добавьте строки красного цвета в файл конфигурации, если это только что установленный сервер Ubuntu.

    Командная строка iptables не будет сохранена после перезагрузки системы, есть много способов сделать ее постоянной после перезагрузки. На этот раз мы воспользуемся самым простым способом установки пакета iptables-persistent на сервер Ubuntu.

    Появится запрос на сохранение текущих правил iptables ipv4 и ipv6. Ответьте «да», чтобы сохранить их, или «нет», чтобы сохранить их позже.

    Эта команда сохранит правила iptables в /etc/iptables/rules.v4 , откуда позже они будут восстанавливаться с помощью iptables-persistent при каждой перезагрузке.

    Если все пойдет хорошо, мы закончили сборку Linux Router с Ubuntu Server 20.04 LTS. В соответствии с топологией клиенты используют сетевой адрес 10.10.10.0/24. Поэтому настройте клиентов соответствующим образом.

    Как собрать маршрутизатор Linux с Ubuntu Server 20.04 LTS

    Вы можете посмотреть все описанные выше действия по сборке Linux Router с Ubuntu Server 20.04 LTS из этого видео на YouTube ниже. Если у вас все еще есть какие-либо проблемы, оставьте свои комментарии.

    Читайте также: