В данной заметке я покажу, как развернуть кэширующий 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
И ICMP-запросы идут с локальной станции в интернет, следовательно странички открываются.
Результат достигнут, на системе Ubuntu 10.10 поднят локальный DNS и DHCP, пошаговое руководство написано.