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

Обновлено: 08.07.2024

Имеется сервер и подключенные к нему клиенты по локальной сети. Сервер имеет выход в интернет. Необходимо устроить раздачу интернета сервером.

Основная часть

Собственно, установка шлюза на базе Ubuntu Server занимает не больше 10-15 минут.

PPPoE

Если Вы используете для подключения по локальной сети PPPoE, вам необходимо просто-напросто ввести в терминале команду:

и дать ответы на вопросы. По окончании работы pppoeconf соединение должно быть установлено.

Если Вы используете для подключения к провайдеруL2TP, то для этого понадобится установить xl2tpd — демон l2tp и pppd — демон ppp. 1)

Редактируем файл настроек xl2tpd:

Записываем в файл chap-secrets логин и пароль:

соединение должно быть установлено.

На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в /etc/apt/source.list и выполнить:

Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета:

Установите и запустите пакет для раздачи пакетов по сети:

Или, вы можете использовать DNS провайдера.

Прокси-сервер squid

Для установки прокси-сервера squid необходимо выполнить команду:

Теперь редактируем конфигурационный файл. Открываем /etc/squid/squid.conf , ищем нужные строки и корректируем следующим образом:

Перезапускаем прокси-сервер командой:

Настраиваем браузеры на клиентских машинах на использование прокси: адрес прокси - пишем IP адрес интерфейса, обращенного в локальную сеть. Скорее всего,это будет 192.168.0.1, порт прокси - указанный в конфигурационном файле 3128.

Желающим сделать прозрачное проксирование необходимо изменить в файле настроек squid.conf одну строчку:

Затем для заворачивания нужных портов на прокси-сервер прописывается правило:

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

Для начала установим firestarter :

При настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1 2)

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

На сервере

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

Исходные данные: Оба компьютера соединены по сети. На сервере установлено две сетевые карты:

Это можно сделать вручную или используя терминал:

Разрешите направление пакетов. Чтобы сделать это, отредактируйте /etc/sysctl.conf . Откройте сам файл командой:

А затем вставьте следующую строчку:

Для того, чтобы применить это правило до перезагрузки выполните:

Затем добавляем правило для NAT:

Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе:

Установите и запустите пакет для раздачи пакетов по сети:

Или, вы можете использовать DNS провайдера.

Чтобы NAT работал после перезагрузки сохраняем настройки iptables в файл:

Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3

Более четырех лет назад мы опубликовали материал посвященный настройке роутера на базе Ubuntu Server. Тема оказалась весьма востребованной и популярной, но за прошедшее время некоторые настройки успели измениться, пусть и незначительно. В связи с этим мы решили вернуться к этой теме и опубликовать современную версию популярной статьи.

Мы не будем подробно останавливаться на установке системы и назначении тех или иных компонентов, об этом достаточно сказано в исходном материале, а уделим основное внимание отличиям в современных версиях Ubuntu Server и настраиваемых пакетах.

Настройка сети

В нашем примере внешний сетевой интерфейс - eth0 - имеет статические настройки, если же вы используете PPPoE или PPTP подключение, то для настройки подключения рекомендуем воспользоваться нашими материалами:

Начиная с версии 12.04 (мы рассматриваем только LTS версии и крайне не рекомендуем использовать на серверах промежуточные релизы) все сетевые настройки, в том числе и DNS-сервера указываются в одном месте, конфигурационном файле /etc/network/interfaces. Перед тем как приступать к настройке повысим права до суперпользователя:

затем откроем файл в штатном редакторе nano, работа с ним далека от удобства, но для изменения нескольких строк он вполне подойдет:

Приведем его к следующему виду (настройки внешнего интерфейса приведены исключительно для примера):

Для указания DNS-серверов теперь используется директива dns-nameservers, если серверов несколько, они указываются в одну строку, через пробел.

Если вы получаете сетевые настройки от провайдера по DHCP, то настройки будут иметь вид:

Последней строкой идет автоматическая загрузка правил iptables из файла /etc/nat, который мы создадим позже.

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

Представлять двухпанельный менеджер с удобным редактором Midnight Commander (mc) мы думаем не нужно, как и SSH-сервер, дающий возможность удаленного администрирования.

Настройка NAT и брандмауэра

Технология сетевой трансляции адресов - NAT - позволяет организовать выход в интернет компьютеров локальной сети через один сетевой адрес. Данная технология абсолютно прозрачна для клиентских устройств и способна работать с любыми сетевыми приложениями и протоколами. За функции NAT в Ubuntu отвечает сетевой фильтр iptables, который предоставляет также функции брандмауэра.

В зависимости от политики сетевой безопасности существуют различные подходы к настройке брандмауэра. Мы предпочитаем задавать только базовые правила, исходя внутри сети из принципа: все что не запрещено - разрешено. Это позволяет свободно работать любым сетевым службам во внутренней сети и без помех выходить в интернет, обеспечивая при этом достаточный уровень безопасности. Для внешней сети запрещено все, что не разрешено и доступ к сетевым службам администратор должен разрешать явно.

Создадим файл настроек:

и внесем в него следующее содержимое:

Сохраним изменения и дадим нашему файлу права на исполнение:

Теперь если вручную задать сетевые настройки для рабочей станции, указав в качестве шлюза наш роутер и любой доступный DNS-сервер, то не ней должен появиться доступ в интернет.

Настройка DHCP и кэширующего DNS

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

Все эти функции реализованы в одном пакете dnsmasq, который предельно прост в установке и настройке:

Функции кэширующего DNS-сервера становятся доступны сразу после установки и в настройке не нуждаются, однако следует явно указать интерфейсы, которые будет обслуживать dnsmasq. Для этого откроем файл /etc/dnsmasq.conf и изменим следующую строку (не забываем раскомментировать при необходимости):

Для настройки DHCP сервера достаточно указать диапазон пула адресов и срок аренды:

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

Настройка кэширующего прокси-сервера Squid3

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

Squid поддерживает кэширование двух типов, в оперативной памяти и на диске. Сегодня можно встретить рекомендации отказаться от дискового кэша, мол проще скачать объект заново, чем искать его на диске. Однако мы считаем, что разумный размер дискового кэша при большом количестве клиентов позволяет эффективно использовать канал за счет хранения в кэше статических элементов: картинок, скриптов, CSS-файлов для часто посещаемых ресурсов.

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

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

Внимание! Начиная с Debian 9 и Ubuntu 16.04 вместо пакета squid3 снова используется squid, также аналогичным образом следует изменить все пути, т.е. вместо /etc/squid3 использовать /etc/squid.

Для установки squid выполните команду:

Перейдем к настройкам. Для новичка конфигурационный файл squid может показаться излишне сложным, на самом деле большую часть его занимают подробные комментарии и примеры. Поэтому мы пойдем по файлу от начала к концу, указывая какие строки надо добавить или изменить. Откроем файл конфигурации /etc/squid3/squid.conf и перейдем к указанию группы доступа (acl) для локальной сети. Раскомментируем и исправим или добавим ниже строку:

ubuntu-nat-dhcp-squid-001.jpg

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

ubuntu-nat-dhcp-squid-002.jpg

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

Теперь укажем порт, интерфейс и режим работы прокси-сервера.

Параметр intercept указывает, что прокси работает в прозрачном режиме, т.е. не требует прямого указания прокси на клиентах.

Перейдем к указанию параметров кэша. Зададим доступный объем памяти и укажем максимальный объем кэшированного объекта в памяти:

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

После чего укажем размер дискового кэша и его расположение:

Размер кэша указывается в МБ, в нашем случае 2048 МБ - 2 Гб, следующие два числа указывают количество директорий первого и второго уровня, рекомендуем оставтить эти параметры без изменения.

Следующий параметр задает максимальный размер объекта в дисковом кэше:

Далее по файлу укажем место хранения логов и количество ротаций:

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

Внимание! В Ubuntu Server 12.04 (Squid 3.1) указанная выше строка должна иметь вид: access_log /var/log/squid3/access.log squid

Остальные параметры оставляем без изменений, сохраняем файл настроек.

Перед тем как перезапускать службу выполним проверку файла конфигурации:

Если команда отрабатывает без вывода - ошибок нет, в противном случае изучаем вывод и исправляем допущенные ошибки. После этого перезапустим службу, чтобы применить внесенные изменения.

В том случае, когда были изменены параметры кэша следует его перестроить:

Сохраняем изменения, перезагружаем сервер.

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

ubuntu-nat-dhcp-squid-004.jpg

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

network-logo

В этой статье разберем настройку сети в Ubuntu 18.04|20.04|21.04. Настройку будем производить через утилиту netplan.

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

Сперва давайте определим какие интерфейсы у нас присутствуют в системе:

  • необходимо установить утилиту net-tools

Вывод команды покажет все имеющиеся в системе сетевые интерфейсы. Вот пример вывода:

Настройки локальной сети. Динамический IP-адрес (DHCP)

Отредактируйте файл конфигурации netplan который находится в директории /etc/netplan/ . При открытии он должен выглядеть примерно так:

тут интерфейс enp0s3 настроен на автоматическое получение IP-адреса от DHCP сервера.

Настройки локальной сети. Статический IP-адрес.

Для локальной сети в которой используются статические ip-адреса подойдет следующая конфигурация:

Настройки беспроводной сети. Динамический IP-адрес.

Для корректной работы беспроводного интерфейса вам потребуется установить утилиту WPA supplicant, которая позволяет подключиться к точкам доступа с WPA и WPA2:

Добавьте новый файл конфигурации в каталог /etc/netplan/:

Отредактируйте файл конфигурации беспроводной сети с динамическим ip-адресом (DHCP):

Настройки беспроводной сети. Статический IP-адрес.

Для беспроводной сети в которой используются статические ip-адреса подойдет следующая конфигурация:

Применение конфигураций

Используйте netplan для генерации необходимой конфигурации:

Для подробного вывода информации при генерации, используйте опцию --debug:

Далее сохраняем изменения:

Пример конфигурации локальной сети с метриками

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.



На просторах интернета присутствует бесчисленное количество информации касательно настройки сервера на Ubuntu, но на каждом шагу можно встретить неочевидные для новичка моменты. Я хочу поделиться своим опытом и, возможно, решить чью-то проблему. В статье будет рассказано, как настроить многопортовый сервер (6 портов): Netplan, DHCP-сервер, UFW(Uncomplicated Firewall). А теперь обо всем по порядку.

Введение

Обновил я интернет до 500 Мбит/с, и пришло время заняться 100 Мбитным сервером, который работал на Pentium 3 и был уже на грани. Выбор пал на китайского зверя. Все, что нужно — имеется, потребление в обычном режиме не превышает 15W, запас производительности для дополнительных задач есть.

Установку ОС расписывать не буду («ОК — Далее — Далее»), отмечу только, что при установке требуется сконфигурировать хотя бы один сетевой интерфейс для доступа в интернет.

Для удобства я использую Midnight Commander и его текстовый редактор. Работать будем от root-пользователя:


Итак, у нас есть установленная Ubuntu Server, начнем с конфигурации остальных сетевых интерфейсов.

Netplan

В последних версиях Ubuntu появилась утилита Netplan, позволяющая настроить сеть в унифицированном формате и выбирать сетевой менеджер для работы. По умолчанию используется Systemd-networkd, я же выбрал NetworkManager, так как установил Web-интерфейс Cockpit, который использует именно NM для отображения части информации.
Синтаксис конфигурации Netplan очень строгий и лишний пробел или табуляция может вызвать ошибку.

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


Перейдем в директорию /etc/netplan и откроем (F4 для МС) файл 50-cloud-init.yaml. Для сетевого интерфейса, который будет использоваться для подключения к интернету, определим получение настроек по dhcp (dhcp4: true). В моем случае это enp6s0. Для остальных укажем false и добавим параметр optional: true, т.к. интерфейс может быть ни к чему не подключен.

Для объединения интерфейсов в локальную сеть я использовал bridge, но, возможно, правильнее было бы использовать vlan. Создадим мост lan-br, зададим общий IP-адрес, DNS-сервер и пропишем объединяемые интерфейсы:


У меня будет собственный DNS-сервер, поэтому указываю адрес своего сервера в поле nameservers, можно указать например 8.8.8.8 (Google). Указываем версию и менеджер. В итоге должно получиться примерно так:


Сохраняем файл и проверяем/применяем конфигурацию:

Если все сделано правильно, то 'ip a' покажет примерно такую картину:

DHCP-сервер

Настроим DHCP-сервер для того, чтобы клиенты могли получать IP-адреса автоматически.


В файле /etc/default/isc-dhcp-server правим строчку:


Переходим в /etc/dhcp, открываем dhcpd.conf и прописываем настройки:


Теперь клиенты должны получать адреса автоматически.

UFW (Uncomplicated Firewall) — инструмент для более легкой настройки iptables. Настроим фаервол и пересылку пакетов между интерфейсами. Переходим в/etc/ufw и в файле sysctl.conf раскомментируем строку:


Если Вы подключены через ssh перед началом откройте 22 порт:


Включим UFW, проверим состояние:


Зададим политики по умолчанию:


Разрешим доступ из локальной сети:


Сохраняемся и перезапускаем ufw:


Проверим iptables, должна появиться наша строчка:


На этом базовую настройку сервера можно считать законченной.

Заключение

Я не поднимал вопрос настройки DNS-сервера, так как планирую выпустить вторую часть, где будет изложена настройка Dnscrypt-proxy в роли DNS-сервера для локальной сети.

Имеется сервер и подключенные к нему клиенты по локальной сети. Сервер имеет выход в интернет. Необходимо устроить раздачу интернета сервером.

Основная часть

Собственно, установка шлюза на базе Ubuntu Server занимает не больше 10-15 минут.

PPPoE

Если Вы используете для подключения по локальной сети PPPoE, вам необходимо просто-напросто ввести в терминале команду:

и дать ответы на вопросы. По окончании работы pppoeconf соединение должно быть установлено.

Если Вы используете для подключения к провайдеруL2TP, то для этого понадобится установить xl2tpd — демон l2tp и pppd — демон ppp. 1)

Редактируем файл настроек xl2tpd:

Записываем в файл chap-secrets логин и пароль:

соединение должно быть установлено.

На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в /etc/apt/source.list и выполнить:

Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета:

Установите и запустите пакет для раздачи пакетов по сети:

Или, вы можете использовать DNS провайдера.

Прокси-сервер squid

Для установки прокси-сервера squid необходимо выполнить команду:

Теперь редактируем конфигурационный файл. Открываем /etc/squid/squid.conf , ищем нужные строки и корректируем следующим образом:

Перезапускаем прокси-сервер командой:

Настраиваем браузеры на клиентских машинах на использование прокси: адрес прокси - пишем IP адрес интерфейса, обращенного в локальную сеть. Скорее всего,это будет 192.168.0.1, порт прокси - указанный в конфигурационном файле 3128.

Желающим сделать прозрачное проксирование необходимо изменить в файле настроек squid.conf одну строчку:

Затем для заворачивания нужных портов на прокси-сервер прописывается правило:

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

Для начала установим firestarter :

При настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth1 2)

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

На сервере

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

Исходные данные: Оба компьютера соединены по сети. На сервере установлено две сетевые карты:

Это можно сделать вручную или используя терминал:

Разрешите направление пакетов. Чтобы сделать это, отредактируйте /etc/sysctl.conf . Откройте сам файл командой:

А затем вставьте следующую строчку:

Для того, чтобы применить это правило до перезагрузки выполните:

Затем добавляем правило для NAT:

Где eth0 название вашего интерфейса через который выходите в интернет. Измените его если используете другой интерфейс (напрмер ppp0) тогда команда будет выглядит иначе:

Установите и запустите пакет для раздачи пакетов по сети:

Или, вы можете использовать DNS провайдера.

Чтобы NAT работал после перезагрузки сохраняем настройки iptables в файл:

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