И так в этой статье мы с вами научимся настраивать связку из DNS + DHCP + NAT на Ubuntu Server 16.04. Для чего это нам нужно? Да все очень просто. Наш сервер будет выступать шлюзом для всех остальных машин в нашей сети, т. е. он будет раздавать интернет, назначать IP адреса всем компьютерам в сети, а также отвечать на DNS запросы.

И так приступим к конфигурированию DNS + DHCP + NAT.

Сервер DHCP

Для того чтобы все клиенты нашей сети получали IP адреса из одной подсети при настройках по умолчанию (автоматически), нам необходимо настроить так называемый сервер DHCP. В Ubuntu для этой цели я использую пакет isc-dhcp-server

Установка DHCP сервера

Для установке isc-dhcp-server набираем в терминале следующую команду:

sudo apt install isc-dhcp-server

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

Настройка DHCP сервера

И так приступим к настройке dhcp на Ubuntu Server 16.04 | 17.04 | 18.04

для этого нам потребуется отредактировать два файла.

Откроем в редакторе файл isc-dhcp-server.

sudo nano /etc/default/isc-dhcp-server

и добавим в поле INTERFACES="" интерфейс карты, которая смотрит в локальную сеть (в моем случае это br0 объединяющая два интерфейса wlp1s0 и enp0s8).

Как настроить сетевой мост в Ubuntu Server 18.04 смотрим в этой статье

Сохраняем(Ctrl+O) и закрываем (Ctrl+X).

Файл настройки dhcp

Далее открываем файл настройки dhcp сервера:

sudo nano /etc/dhcp/dhcpd.conf

Снимем комментарий и внесем изменения в необходимые нам параметры.
Так как наш сервер DHCP единственный в сети, то в первую очередь снимаем знак # перед словом authoritative

authoritative;

Также закомментируйте параметры

#default-lease-time 600;
#max-lease-time 7200;

мы их укажем чуть ниже

Далее вносим параметры для нашей сети:

subnet 192.168.0.0 netmask 255.255.255.0 {
 range 192.168.0.100 192.168.0.120;
 option routers 192.168.0.1;
 option broadcast-address 192.168.0.255;
 option domain-name-servers 192.168.0.1;
 option domain-name "lan";
 option subnet-mask 255.255.255.0;
 default-lease-time 604800;
 max-lease-time 604800;
  • subnet – Параметр отвечает за подсеть (в нашем случае 192.168.0.0 с маской 255.255.255.0)
  • range – Диапазон выдаваемых адресов от 100 до 120
  • routers – Шлюз по умолчанию 192.168.0.1 (можно указывать как IP адреса так и URL адреса)
  • broadcast-address – Широковещательный адрес 192.168.0.255
  • domain-name-servers –  IP адрес DNS сервера 192.168.0.1 (в нашем случае указываем наш сервер – IP адрес сетевой карты enp0s8)
  • domain-name – Доменное имя “lan”
  • subnet-mask – Маска сети 255.255.255.0″
  • lease-time – Срок аренды адреса 604800 в секундах

также в настройках можно указать за какой машиной зафиксировать определенный IP адрес, за это отвечает параметр host

host home-asus {
 hardware ethernet AC:22:0B:4D:B2:1D;
 fixed-address 192.168.0.50;
 }
  • home-asus – имя машины в сети (можно написать все что угодно)
  • hardware – MAC адрес сетевой карты за которым закрепляем IP адрес
  • fixed-address – Здесь указываем какой IP адрес назначить данной машине

У нас IP адрес 192.168.0.50 будет зафиксирован за компьютером с именем home-asus ( у него MAC адрес сетевой карты AC:22:0B:4D:B2:1D)

Сохраняем (Ctrl+O) и закрываем (Ctrl+X), после этого перезапускаем службу DHCP

sudo /etc/init.d/isc-dhcp-server restart

Проверка статуса службы

sudo /etc/init.d/isc-dhcp-server status

Если появиться сообщение об ошибке, проверяйте что сделали не так.

Важное: если вы используете постоянные статические ip адреса в настройке dhcp сервера, то помните, что данные адреса ни в коем случае не должны попадать в пул динамических адресов.

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

DNS сервер

DNS – это система доменных имен для преобразования имени в ip адреса компьютера и наоборот. Зная имя компьютера, вам не нужно запоминать его ip адрес. Простыми словами набирая адрес интернет странички в Вашем браузере DNS сервер всемирной паутины преобразует его в ip-адрес хостинга на котором расположен данный домен.

Установка DNS сервера

Самый известный dns сервер в Linux системах без лишней скромности считается пакет bind9.
Для установки пакета bind9 в Ubuntu Server набираем в терминале:

sudo apt install bind9 -y

Настройка DNS сервера bind9

Открываем файл конфигурации DNS сервера

sudo nano /etc/bind/named.conf.options

Добавим в него следующий код:

options {
 directory "/var/cache/bind";
 listen-on {
 192.168.0.0/24;
 127.0.0.1;
 };
 forwarders {
 8.8.8.8;
 8.8.4.4;
 };
dnssec-validation auto;
 auth-nxdomain no;
 listen-on-v6 { all; };
 version "DNS server v1.0";
 };
  • forwarders – вышестоящий dns сервер (у меня в примере это сервера google), используется если URL запроса не найден в нашей базе.
  • listen-on – с каких сетей или IP адресов будут обслуживаться запросы нашим DNS сервером.
  • version – параметр задает версию DNS сервера (меняем для безопасности)

Перезапустим bind9

sudo service bind9 restart

На этом все наш DNS сервер должен принимать и обрабатывать запросы от других машин в сети.

Для настройки собственной зоны DNS смотрите эту статью.

Для проверки bind9, воспользуемся командой nslookup

nslookup ya.ru

В ответ должны получить

Server: 192.168.0.1
Address: 192.168.0.1#53
Non-authoritative answer:
Name: ya.ru
Address: 87.250.250.242

В выводе на наш запрос, ответ дал нам наш DNS сервер. Если вы видите вместо своего DNS другой, то смотрим что настроили не так.

Одной из причин может стать назначение не того ip адреса или отсутствие записи dns-nameservers вообще в файле /etc/network/interfaces

Настройка NAT

Для настройки NAT воспользуемся пакетом iptables. Создадим правило, а также включим перенаправление пакетов из одной сетевой карточки в другу.

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

ifconfig -a

У меня на Ubuntu Server 16.04 в локальную сеть смотрит интерфейс с названием br0 объединяющий в себе два интерфейса enp0s8 и wlp1s0, а в интернет enp0s3. Для изменения настроек сетевых интерфейсов откройте файл

sudo nano /etc/network/interfaces

Отредактируем его в соответствии с вашими настройками. У меня он выглядит так:

# The loopback network interface
 auto lo
 iface lo inet loopback
# The primary network interface
 auto enp0s3
 iface enp0s3 inet dhcp
# The primary local interface
 auto br0
 iface br0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 network 192.168.0.0
 broadcast 192.168.0.255
 bridge_ports enp0s8 wlp1s0
 dns-search lan
 dns-nameservers 192.168.0.1
auto wlp1s0
 iface wlp1s0 inet manual
post-up /etc/nat # Запись для запуска NAT

Второе: создадим правило iptables и включим перенаправление пакетов. Для этого в директории /etc создадим файл с именем nat

sudo touch /etc/nat

Откроем его для редактирования

sudo nano /etc/nat

добавим в него следующий листинг

#!/bin/sh
 # Включаем форвардинг (перенаправление) пакетов
 echo 1 > /proc/sys/net/ipv4/ip_forward
 # Включаем NAT
 iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.0.0/24 -j MASQUERADE

Если вдруг этот вариант не заработал то воспользуйтесь вот таким:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.0.0/24 -j MASQUERADE

После этого сохраняем файл.

Выставим права на запуск.

sudo chmod 755 /etc/nat

Запустим наш скрипт

sudo /etc/nat

Если видим такую ошибку:

/etc/nat: 3: iptables: not found
/etc/nat: 4: iptables: not found

То вам необходимо установить пакет iptables

sudo apt install iptables

Настройка связки DNS + DHCP + NAT на этом закончена. После наших манипуляций, сервер должен начать раздавать ip адреса всем участникам сети, отвечать на DNS запросы из локальной сети, а также раздавать интернет.

[endtxt]

. . . .

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

5 1 голос
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять