И так в этой статье мы с вами научимся настраивать связку из 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]
. . . .
- Тест скорости дисков в Linux
- Как запустить команду в фоне в Linux
- Ошибка несоответствие размеров GPT PMBR
- nginx: [warn] protocol options redefined
- Как включить поддержку linux в windows 11