В данной заметке я покажу, как развернуть кэширующий DNS и DHCP сервер в локальной сети для малой организации с применением NAT. Система (Ubuntu 10.10) будет иметь две сетевые карточки, одна из них будет смотреть в локальную сеть, а другая будет иметь доступ в интернет.

И так, исходная система:

keiz@vkeiz:~$ uname -a && lsb_release -a

Linux vkeiz 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 i686 GNU/Linux

Distributor ID: Ubuntu

Description: Ubuntu 10.10

Release: 10.10

Codename: maverick

Сетевые интерфейсы:

keiz@vkeiz:~$ ifconfig eth1 | grep -E "inet|HWaddr" — смотрит в интернет

eth1 Link encap:Ethernet HWaddr 08:00:27:7d:72:07

inet addr:10.0.3.15 Bcast:10.0.3.255 Mask:255.255.255.0

inet6 addr: fe80::a00:27ff:fe7d:7207/64 Scope:Link

keiz@vkeiz:~$ ifconfig eth0 | grep -E "inet|HWaddr"

eth0 Link encap:Ethernet HWaddr 08:00:27:c4:6e:2d – смотрит в локальную сеть.

inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0

inet6 addr: fe80::a00:27ff:fec4:6e2d/64 Scope:Link

Включаем форвардинг пакетов:

keiz@vkeiz:~$ sudo nano /etc/sysctl.conf

net.ipv4.ip_forward=1

keiz@vkeiz:~$ sudo sysctl -p – применяем настройки

net.ipv4.ip_forward = 1

Настраиваем правила брандмауэра:

keiz@vkeiz:~$ sudo -s

root@vkeiz:~# iptables -F && iptables -X && iptables -t nat -F && iptables -t mangle -F

root@vkeiz:~# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE root@vkeiz:~# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

root@vkeiz:~# iptables-save > /etc/ip

root@vkeiz:~# chmod +x /etc/ip

root@vkeiz:~# nano /etc/network/interfaces

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 10.0.2.15

netmask 255.255.255.0

auto eth1

iface eth1 inet static

address 10.0.3.15

netmask 255.255.255.0

gateway 10.0.3.2

pre-up iptables-restore /etc/ip

Поиск пакета в репозитариях:

keiz@vkeiz:~$ apt-cache search dnsmasq

dnsmasq-base – A small caching DNS proxy and DHCP/TFTP server

dnsmasq – A small caching DNS proxy and DHCP/TFTP server

Информация по пакету в репозитариях:

keiz@vkeiz:~$ apt-cache show dnsmasq

Package: dnsmasq

Priority: optional

Depends: netbase, adduser, dnsmasq-base (>= 2.55-1)

Suggests: resolvconf

Устанавливаем в систему данный пакет:

keiz@vkeiz:~$ sudo apt-get install dnsmasq

[sudo] password for keiz:

Reading package lists… Done

Building dependency tree

Reading state information… Done

Suggested packages:

resolvconf

The following NEW packages will be installed:

dnsmasq

0 upgraded, 1 newly installed, 0 to remove and 384 not upgraded.

Need to get 14.3kB of archives.

After this operation, 123kB of additional disk space will be used.

Get:1 http://ru.archive.ubuntu.com/ubuntu/ maverick/universe dnsmasq all 2.55-1 [14.3kB]

Fetched 14.3kB in 0s (71.5kB/s)

Selecting previously deselected package dnsmasq.

(Reading database … 118561 files and directories currently installed.)

Unpacking dnsmasq (from …/dnsmasq_2.55-1_all.deb) …

Processing triggers for ureadahead …

ureadahead will be reprofiled on next reboot

Setting up dnsmasq (2.55-1) …

* Starting DNS forwarder and DHCP server dnsmasq [ OK ]

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

keiz@vkeiz:~$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup

Переходим к редактированию предварительно обнулив файл:

keiz@vkeiz:~$ sudo bash -c 'cat > /etc/dnsmasq.conf'

^C

keiz@vkeiz:~$ sudo nano /etc/dnsmasq.conf

# Указываем локальный интерфейс, где будет наш сервис. Наружу выставлять не нужно:

interface=eth0

#no-dhcp-interface=eth0

resolv-file=/etc/resolv.dnsmasq.conf

# настройка не обязательна, но если указана,

# то происходит следующее

# 1. позволяет DHCP хостам иметь FQDN имена,

#     если часть домена совпадает

# 2. устанавливает DHCP опцию "domain" для всех

#     систем настраиваемых по DHCP

# 3. устанавливает часть домена для настройки expand-hosts

domain=polygon.local

server=/polygon.local/10.0.2.15

server=/2.0.10.in-addr.arpa/10.0.2.15

# разрешить динамическую аренду адресов и срок аренды (7 дней)

dhcp-range=10.0.2.30,10.0.2.50,7D

# сообщить адрес шлюза клиентским машинам

# по умолчанию шлюзом назначается машина с DHCP сервисом

dhcp-option=3,10.0.3.15

# расположение файла аренды адресов

dhcp-leasefile=/var/lib/misc/dnsmasq.leases

# записывать дополнительную отладочную информацию

log-dhcp

# сообщить маску подсети

dhcp-option=1,255.255.255.0

# Если необходимо, можно задать привязку для выдачи постоянного IP по MAC адресу:

dhcp-host=08:00:27:9F:DD:6E,10.0.2.45

 

В файле /etc/resolv.conf добавляем первой строчкой следующую запись:
keiz@vkeiz:~$ sudo nano /etc/resolv.conf

nameserver 127.0.0.1 – эту запись

nameserver 192.168.1.1

keiz@vkeiz:~$ sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf

В файле настроек /etc/dhcp3/dhclient.conf снимаем коментарий с параметра prepend
(prepend domain-name-server 127.0.0.1, …(дописать можно несколько DNS адресов))

keiz@vkeiz:~$ sudo nano /etc/dhcp3/dhclient.conf

prepend domain-name-server 127.0.0.1

Перезагружаем службу dnsmasq:

keiz@vkeiz:~$ sudo service dnsmasq restart

* Restarting DNS forwarder and DHCP server dnsmasq [ OK ]

И перезагружаем систему:

keiz@vkeiz:~$ sudo reboot

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

keiz@vkeiz:~$ cat /var/lib/misc/dnsmasq.leases | sort

1356595398 08:00:27:9f:dd:6e 10.0.2.45 test1 01:08:00:27:9f:dd:6e

В итоге, рабочая станция по управлением Windows XP получила адрес – 10.0.2.45, в роли DNS-сервера выступила система Ubuntu 10.10 с адресом 10.0.2.15, DHCP-сервер с адресом 10.0.2.15

 Настройки сети на Windows XP выданные с нашего dnsmasq.

 

 

 

 

И ICMP-запросы идут с локальной станции в интернет, следовательно странички открываются.

ICMP-запросы идут в интернет, следовательно Web страницы будут открываться.

 

 

 

Результат достигнут, на системе Ubuntu 10.10 поднят локальный DNS и DHCP, пошаговое руководство написано.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru