Настройка связки DNS + DHCP + NAT

И так в этой статье мы с вами научимся настраивать наш сервер на раздачу динамических или статических IP адресов нашим клиентам, а также настроим свой собственный DNS сервер.

Для чего это нам нужно?

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

Сервер DHCP

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

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

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

sudo apt install isc-dhcp-server

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

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

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

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

Откроем в редакторе первый фаил.

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

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

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

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

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

sudo nano /etc/dhcp/dhcpd.conf

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

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;

sebnet — Параметр отвечает за подсеть (в нашем случае 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 сервер для ubuntu 16.04 | 17.04 |18.04 без лишней скромности считается пакет bind9.
Для установки пакета bind9 набираем в терминале:

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";
 };

forwaders – вышестоящий dns сервер (у меня в примере это сервера google), используется если URL запроса не найден в нашей базе.
listen-on – с каких сетей или IP адресов будут обслуживаться запросы нашим DNS сервером.
version — параметр задает версию DNS сервера (меняем для безопасности)

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

188.165.200.156 (ns2.hau.fr)
89.18.27.167 (ns1.buh.ro)
172.104.136.243 (ns2.he.de)
5.135.183.146 (ns12.fr)

Перезапустим 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, создать правило, а также включить перенаправление пакетов из одной сетевой карточки в другу и присвоить статический IP адрес карточки которая смотрит в локальную сеть.

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

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

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

Настройка связки DNS + DHCP + NAT
5 (100%) 5 votes

6 комментариев

  1. Jgur 2018-07-10
  2. %username% 2018-05-30
  3. %username% 2018-05-30
  4. SYSadminАвтор 2018-05-30
  5. SYSadminАвтор 2018-05-30
  6. %username% 2018-05-30

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *