RouterOS на офисном шлюзе, часть 4: DHCP и DNS
Описанная ранее схема «Счастье для всех» очень скоро перестанет нас удовлетворять, так как обязательно появятся новые требования, например:
- количество компьютеров в офисе вырастет, и настраивать сеть на каждом из них станет утомительным занятием,
- всему офису нужно будет закрыть выход на «нехорошие сайты» вообще, и на некоторые — в частности,
- загрузка видео и музыки — удовольствие дорогое, а потому оно должно быть доступно только «избранным»,
- компьютеру тов. Иванова нужно будет полностью закрыть доступ, а компьютеру тов. Петрова — закрыть только http,
- офис будут посещать гости, которых нужно будет пустить в интернет, и при этом к ним не должны будут применяться описанные выше ограничения, однако для них нужно будет установить минимально-комфортную скорость канала,
- когда-нибудь руководство потребует огласить имена героев-любителей «покачать» в рабочее время.
DHCP
Издержки, связанные с настройкой сети на рабочих местах, можно устранить с помощью встроенного в RouterOS сервера DHCP.
Настройка сервера DHCP проводится в три этапа. Сначала задаем пул IP-адресов, которые будут раздаваться клиентским компьютерам:
/ip pool add name="OfficePool" ranges="192.168.0.2-192.168.0.254"
Затем создаем экземпляр DHCP-сервера, который будет слушать указанный интерфейс (в нашем случае это «зеленый» ether4) и выдавать IP-адреса из ранее созданного пула:
/ip dhcp-server add name="OfficeDHCP" interface="ether4" address-pool="OfficePool" disabled="no"
И, наконец, определяем адреса шлюза по умолчанию и сервера DNS, которые будут использоваться в нашей сети. В качестве этих адресов укажем IP-адрес «зеленого» интерфейса:
/ip dhcp-server network add address="192.168.0.0/24" gateway="192.168.0.1" dns-server="192.168.0.1" domain="office"
Готово. Для проверки подключим клиентский компьютер к нашему маршрутизатору, и посмотрим реакцию DHCP-сервера:
/ip dhcp-server lease print Flags: X - disabled, R - radius, D - dynamic, B - blocked # ADDRESS MAC-ADDRESS HOST-NAME SERVER RATE-LIMIT STATUS 0 D 192.168.0.254 00:1B:38:4F:38:8C acer5720g OfficeDHCP bound
и клиентского компьютера:
C:\ipconfig /all Ethernet adapter Подключение по локальной сети: DNS-суффикс подключения . . . . . : office Описание. . . . . . . . . . . . . : Broadcom NetLink (TM) Gigabit Ethernet Физический адрес. . . . . . . . . : 00-1B-38-4F-38-8C DHCP включен. . . . . . . . . . . : Да Автонастройка включена. . . . . . : Да IPv4-адрес. . . . . . . . . . . . : 192.168.0.254(Основной) Маска подсети . . . . . . . . . . : 255.255.255.0 Аренда получена. . . . . . . . . . : 19 июня 2009 г. 6:39:49 Срок аренды истекает. . . . . . . . . . : 22 июня 2009 г. 6:39:49 Основной шлюз. . . . . . . . . : 192.168.0.1 DNS-серверы. . . . . . . . . . . : 192.168.0.1 NetBios через TCP/IP. . . . . . . . : Включен
Все выглядит замечательно, так что попробуем достучаться до интернета:
C:\>ping intacta.ru При проверке связи не удалось обнаружить узел intacta.ru. Проверьте имя узла и повторите попытку.
Не работает! Впрочем, так и должно быть, ведь мы не настроили сервер DNS.
DNS
Зачем нам нужен свой DNS-сервер, если провайдерские DNS-серверы успешно справляются со своими задачами? Собственный DNS-сервер позволит, во-первых, организовать адресацию хостов нашей сети по человеко-удобным именам вместо IP-адресов, и, во-вторых, построить первый барьер на пути доступа к «нехорошим» сайтам.
Настройка DNS-сервера выполняется командой:
/ip dns set primary-dns="208.67.220.220" secondary-dns="194.85.61.20" allow-remote-requests="yes"
С этого момента наш маршрутизатор будет отвечать на DNS-запросы клиентов. Ответы он будет искать в собственной базе данных (/ip dns static), а не найдя их там, переадресует запрос первичному (primary-dns) или, при необходимости, вторичному (secondary-dns) DNS-серверу.
Пополнить собственную базу DNS-сервера можно командой:
/ip dns static add address="192.168.0.100" name="printer.office"
после чего можно будет обращаться к хосту по имени:
C:\>ping printer Обмен пакетами с printer.office [192.168.0.100] с 32 байтами данных: Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64
Если в команде /ip dns static add указать фиктивный IP-адрес:
/ip dns static add address="127.0.0.1" name="porno.com"
то по имени хост может быть и будет пинговаться (однако это будет уже совсем другой хост), но любой другой доступ к нему, например, из браузера, будет невозможен.
Начиная с версии 3.0rc7 RouterOS позволяет в качестве DNS-имени хоста использовать регулярные выражения в нотации POSIX basic. Это значит, что одной командой можно заблокировать сразу группу хостов. Так команда:
/ip dns static add address="127.0.0.1" name=".*porno.*"
заблокирует доступ к любому хосту, в имени которого в любом месте встречается слово porno.
По команде:
/ip dns static add address="127.0.0.1" name=".*\\.porno\\.com"
будет закрыт доступ ко всем хостам в домене porno.com.
А команда:
/ip dns static add address="127.0.0.1" name=".*porno\\.com"
прикроет доступ ко всем хостам, чье имя заканчивается сочетанием porno.com.
OpenDNS
Вы, наверное, обратили внимание на адрес 208.67.220.220 (первичный сервер DNS), который ранее не фигурировал в списке параметров подключения к интернету. Это адрес одного из двух DNS-серверов службы OpenDNS.
Служба OpenDNS после бесплатной регистрации и несложной настройки позволяет в задаче блокирования доступа к «нехорошим» сайтам задействовать ресурсы мирового сообщества, которое занимается категоризацией сайтов. На момент написания этой заметки доступно 54 категории, таких как «Порнография», «Социальные сети» и «Политика». При настройке OpenDNS можно выбрать категории, доступ к которым необходимо запретить.
К сожалению, иногда в работе OpenDNS случаются сбои. Например, этой зимой были проблемы с доступом к сайту mail.ru и к сайтам, которые хостятся в RU-Center. Для страховки от таких сбоев в качестве вторичного DNS-сервера необходимо использовать DNS-сервер провайдера.
Больше не будет статей по микротику?..
Пишите еще, очень полезные практичные знания, которые трудно найти.