Защищенный шлюз на FreeBSD часть вторая. Named и Natd.

 

Кеширующий DNS нужен для преобразования имен в ip адреса и наоборот. Начиная с Freebsd 10.0 кеширующий DNS по умолчанию в FreeBSD был заменен, с named на unbound. Тем не менее, named, как часть пакета Bind, можно установить, как при помощи пакетного менеджера, так и из портов.

pkg install bind910

 

Посмотреть состояние сетевых интерфейсов можно при помощи ifconfig.
 
На этом сервере есть 2 сетевые карты. em0 смотрит в локальную сеть. em1 внешний интерфейс, через него поступает интернет.
 
Отредактируем конфигурационный файл named.conf.

ee /usr/local/etc/namedb/named.conf

 

В options к listen-on добавим наш локальный интерфейс. У меня это em0 c ip 192.168.56.111.

listen-on {127.0.0.1; 192.168.56.111; };

 

Указываем ip, которым будут разрешены рекурсивные запросы к серверу.

allow-recursion { 127.0.0.1; 192.168.56.0/24; };

 

Согласно этим правилам наш DNS сервер будет отвечать только самому себе и нашей локальной сети.
 
Укажем куда перенаправлять запросы клиентов.

forwarders { 192.168.0.110; };

 

У меня это будет вышестоящий DNS сервер. Если такого нет, то указывается DNS сервер провайдера. Этот DNS прописывается в файле конфигурации resolv.conf, что находится в каталоге etc.
 
На этом конфигурация DNS сервера закончена. Должно получиться что-то вроде такого:

...
options {
        directory       "/usr/local/etc/namedb/working";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";
        listen-on       { 127.0.0.1; 192.168.56.111; };
        allow-recursion { 127.0.0.1; 192.168.56.0/24; };
        disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
        disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
        disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
        forwarders      { 192.168.0.110; };
};
...

 

Пропишем в rc.conf соответствующую строку

ee /etc/rc.conf
named_enable=”YES”

 

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

gateway_enable=”YES”

 

Для организации совместного доступа в интернет помимо DNS сервера нам потребуется NAT. Используем для этого natd.

natd_enable=”YES”

 

Указываем через какой интерфейс передавать пакеты. Это будет внешний интерфейс.

natd_intetface=”em1”

 

Изменим настройку для файрволла.

firewall_script=”/etc/rc.ipfw”

 

Получим примерно такое:

hostname=""
ifconfig_em0="inet 192.168.56.111"
ifconfig_em1="DHCP"
defaultrouter="192.168.0.110"

sshd_enable="YES"
dumpdev="AUTO"
firewall_enable="YES"
firewall_script=”/etc/rc.ipfw”

named_enable=”YES”
gateway_enable=”YES”
natd_enable=”YES”
natd_intetface=”em1”

 

Создадим файл с правилами для файрволла.

touch /etc/rc.ipfw
ee /etc/rc.ipfw
#!/bin/sh
cmd=”ipfw –q add”
# Сбрасываем все правила
ipfw –q –f flush
# Первым правилом мы отправляем пакеты на наш нат
$cmd 014 divert natd ip from any to any via em1
# Добавим разрешающее правило для всего
$cmd 100 allow ip from any to any

 

Пока этого достаточно. Запустим named и natd.

service named start
service natd start

 

Проверим работу на одной из машин в локальной сети. Для этого надо указать ip адрес сервера в качестве шлюза и DNS сервера. А также задать ip адрес.

 

Видео

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