Зоны bind
Для возможности искать соответствия в собственной базе доменов, необходимо создать и настроить зоны. Существуют следующие типы зон:
- Первичная, она же master, она же локальная. База, которая пополняется и редактируется на текущем сервере. Подробнее как настроить первичную зону bind .
- Вторичная или slave. База копирует настройки с первичной зоны на другом сервере. Подробнее как настроить вторичную зону bind .
- Заглушка или stub. Хранит у себя только записи NS, по которым все запросы переводятся на соответствующие NS-серверы.
- Кэширующая или hint. Не хранит на сетбе никаких записей — только результаты уже обработанных запросов для ускорения ответов на повторные обращения.
Как настроить 2 IP адреса на одном интерфейсе
Если у вас появилась необходимость настроить 2 IP
адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:
# ifconfig
eno16777728: flags=4163 mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 254 bytes 30173 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 27658 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73
Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:
# ifconfig eno16777728:1 192.168.159.120 up
Проверим, что получилось:
# ifconfig
eno16777728: flags=4163 mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 254 bytes 30173 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 27658 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno16777728:1: flags=4163 mtu 1500
inet 192.168.159.120 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 11 bytes 940 (940.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 940 (940.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Все в порядке, мы добавили второй ip адрес на один и тот же интерфейс. Но после перезагрузки дополнительный адрес не сохранится. Чтобы его сохранить, необходимо создать файл настроек интерфейса в папке /etc/sysconfig/network-scripts
# mcedit /etc/sysconfig/network-scripts/ifcfg-eno16777728:1
DEVICE=eno16777728:1
BOOTPROTO=static
IPADDR=192.168.159.120
NETMASK=255.255.255.0
ONBOOT=yes
Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.
Подсказки при решении проблем
- У меня отключён SELinux.
- Убедитесь, что ваш файервол не блокирует UDP порт 53
- /var/log/messages должен содержать полезную информацию в случае, если что-то не так
- Убедитесь, что владельцев файлов зон является пользователь ‘named’
- Убедитесь, что IP адрес DNS сервера стоит на первом месте в /etc/resolv.conf
- Если вы используете example.tst в лабораторных условиях, убедитесь, что отсоединили сервер от Интернета, поскольку example.tst — это несуществующий домен.
Подытожим, этот урок фокусируется на хостинге домена example.tst в лабораторных условиях для демонстрационных целей. Пожалуйста, помните, что это не инструкция по созданию публичного DNS сервера, например DNS сервера, который отвечает на запросы от любых IP адресов. Если вы настраиваете рабочий DNS сервер, убедитесь, что проверили, какие политика относятся к публичным DNS. Другой урок освещает создание вторичного DNS, ограничение доступа к DNS серверу, и реализацию DNSSEC.
Conclusion
Now you may refer to your servers’ private network interfaces by name, rather than by IP address. This makes configuration of services and applications easier because you no longer have to remember the private IP addresses, and the files will be easier to read and understand. Also, now you can change your configurations to point to a new servers in a single place, your primary DNS server, instead of having to edit a variety of distributed configuration files, which eases maintenance.
Once you have your internal DNS set up, and your configuration files are using private FQDNs to specify network connections, it is critical that your DNS servers are properly maintained. If they both become unavailable, your services and applications that rely on them will cease to function properly. This is why it is recommended to set up your DNS with at least one secondary server, and to maintain working backups of all of them.
Verify Zones
Visit any client machine and add a DNS server ip address in /etc/resolv.conf.
nameserver 192.168.0.10
If Network Manager manages the networking then place the following entry in /etc/sysconfig/network-scripts/ifcfg-eXX file.
DNS1=192.168.0.10
Restart network service.
ADVERTISEMENT
systemctl restart NetworkManager
Use the following command to verify the forward lookup.
dig www.itzgeek.local
Output: The DNS server should give 192.168.0.100 as ip for www.itzgeek.local.
; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> www.itzgeek.local ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35563 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.itzgeek.local. IN A ;; ANSWER SECTION: www.itzgeek.local. 86400 IN A 192.168.0.100 ;; AUTHORITY SECTION: itzgeek.local. 86400 IN NS primary.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Wed Jul 03 02:00:40 EDT 2019 ;; MSG SIZE rcvd: 100
Install BIND utilities yum install -y bind-utils package to get nslookup or dig command.
Confirm the reverse lookup.
dig -x 192.168.0.100
Output: The DNS server gives www.itzgeek.local as a name for 192.168.0.100.
; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.1 <<>> -x 192.168.0.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4807 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;100.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.0.168.192.in-addr.arpa. 86400 IN PTR www.itzgeek.local. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Wed Jul 03 02:02:47 EDT 2019 ;; MSG SIZE rcvd: 124
It is now confirmed that both forward and reverse lookups are working fine.
Создание файла зоны и настройка записей
Создаем каталог master (если он отсутствует).
В CentOS / Red Hat:
mkdir /var/named/master
В Ubuntu / Debian:
mkdir /var/cache/bind/master
И создаем файл зоны (в нашем примере test.local).
CentOS / Red Hat:
vi /var/named/master/test.local
Ubuntu / Debian:
vi /var/cache/bind/master/test.local
Приводим его к следующему виду:
$TTL 14400
test.local. IN SOA ns1.test.local. admin.test.local. (
2017082401 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
604800 ; Negative Cache TTL
)
IN NS ns1.test.local.
IN NS ns2.test.local.
IN MX 10 mx.test.local.
IN MX 20 mx2.test.local.
@ IN A 192.168.1.1
localhost IN A 127.0.0.1
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
mx IN A 192.168.1.4
mail IN A 192.168.1.5
www IN CNAME test.local.
Формат записей: <имя узла> <класс (всегда ставится IN)> <тип записи> <значение>.
Немного подробнее:
Параметр | Описание |
---|---|
$TTL | Время актуальности записей в секундах. Необходим, чтобы указать другим DNS-серверам, как долго стоит хранить запись у себя в кэше. Слишком малое значение увеличит нагрузку на сервер, а большое приведет к слишком длительному процессу изменения записи. |
SOA-запись | В данном примере эта запись идет сразу после параметра TTL. Ее стоит описать отдельно. Она хранит общие настройки для зоны.
|
<имя узла> | Собственно доменное имя хоста. Может записываться без домена (как в данном примере) — он будет дописан автоматически. Также может быть записан полностью с доменом — в таком случае необходимо поставить точку на конце, например, mail.test.local. Если не указывается или обозначается знаком собаки (@), запись создается для имени зоны (в данном случае, test.local). |
<класс> | Всегда используется IN (Internet). Указывает на тип сети. |
<тип записи> |
Основные типы записей, использующиеся в DNS:
|
<значение> | Используется IP-адрес, имя узла, текстовая запись. |
Чтобы зона начала работать, перечитываем ее:
rndc reload
3: Настройка вторичного DNS-сервера
В большинстве сред рекомендуется создать вторичный DNS-сервер, который будет отвечать на запросы, если первичный сервер выйдет из строя. К счастью, вторичный DNS-сервер намного проще настроить.
На ns2 отредактируйте файл named.conf.options:
В начале файла добавьте ACL с внутренними IP-адресами доверенных серверов.
Под директивой directory вставьте такие строки:
Сохраните и закройте файл named.conf.options. Этот файл должен выглядеть точно так же, как и файл named.conf.options сервера ns1, за исключением того, что он должен прослушивать внутренний IP-адрес ns2.
Теперь отредактируйте файл named.conf.local:
Определите вторичные зоны, соответствующие зонам первичного DNS-сервера
Обратите внимание, что тип должен быть slave, файл не содержит пути, и в нем есть директива masters, которая должна указывать внутренний IP-адрес первичного DNS-сервера. Если вы определили несколько зон обратного просмотра на первичном DNS-сервере, обязательно укажите их все здесь
Сохраните и закройте файл.
Чтобы проверить файлы на наличие ошибок, введите:
Если ошибок нет, перезапустите BIND:
Разрешите подключения DNS, изменив правила брандмауэра UFW:
Теперь у вас есть первичный и вторичный DNS-сервер. Пора настроить клиентские серверы.
Устанавливаем Bind 9 (named) в CentOS 7
Первым делом проверим, установлен ли у нас днс сервер в системе:
# rpm -qa bind* bind-libs-lite-9.9.4-14.el7.x86_64 bind-license-9.9.4-14.el7.noarch
У меня не установлен, так как во время инсталляции centos выбрал минимальный пакет программ. Сервер имен у нас будет работать в chroot окружении, так что устанавливаем соответствующие пакеты:
# yum -y install bind bind-utils bind-chroot
Еще раз обращаю внимание, что мы будем использовать bind в chroot среде для увеличения безопасности. Это накладывает определенные особенности в настройке и управлении сервером
Нужно быть внимательным в этих мелочах. Итак, запускаем bind:
# systemctl start named-chroot # systemctl enable named-chroot ln -s '/usr/lib/systemd/system/named-chroot.service' '/etc/systemd/system/multi-user.target.wants/named-chroot.service'
Проверяем содержимое chroot каталога:
# ls -l /var/named/chroot/etc
Все в порядке, сервер запустился, необходимые файлы созданы, все готово для настройки. Займемся ей.
На сервере Slave
Открываем на редактирование конфигурационный файл bind.
CentOS:
vi /etc/named.conf
Ubuntu:
vi /etc/bind/named.conf.local
И дописываем туда следующее:
zone «dmosk.ru» {
type slave;
file «slaves/dmosk.ru»;
masters { 192.168.0.10; };
};
* где dmosk.ru — зона (домен); slave — указание, что эта зона вторичная; slave/dmosk.ru — файл с записями зоны
Стоит обратить внимание, что используется относительный путь до файла — это значит, что каталог slave должен находиться в рабочей папке bind (ее путь определяется опцией directory). Можно также прописать абсолютный путь, например, /etc/bind/slave/dmosk.ru; 192.168.0.10 — IP-адрес первичного сервера, с которого будут вытянуты записи для созданной зоны
Создаем каталог для хранения вторичных зон.
CentOS:
mkdir /var/named/slaves
Ubuntu:
mkdir /var/cache/bind/slaves
* используемые в нашем примере каталоги применяются по умолчанию, но в Вашем случае они могут быть другими. Сверяйте данные по опции directory.
Чтобы настройки применились, необходимо перезапустить вторичный bind-сервер одной из команд:
systemctl reload named
systemctl reload bind
service bind9 reload
и перечитать информацию о настроенных DNS-зонах:
rndc reload
Проверяем, что файл с записями появился в базе bind:
CentOS:
ls /var/named/slaves/
Ubuntu:
ls /var/cache/bind/slaves
* команда выведет список файлов, среди которых должен быть наш (в конкретном примере, dmosk.ru).
Чтобы проверить работоспособность вторичного сервера BIND, запускаем консоль на любом компьютере в сети и вводим команду:
nslookup dmosk.ru 192.168.0.15
* где dmosk.ru — домен, который мы создали; 192.168.0.15 — IP-адрес резервного DNS-сервера, на котором мы и создавали slave-зону (в моем примере).
Решение проблем с помощью log-файлов
По умолчанию, сервер Bind хранит логи в файле/var/named/data/named.run
.
Для его непрерывного просмотра вводим следующую команду:
tail /var/named/data/named.run
Степень детализации логов можно настроить в конфигурационном файле:
logging {
channel default_debug {
file «data/named.run»;
severity dynamic;
};
};
* где file
— путь к log-файлу; severity
— уровень чувствительности к возникающим событиям. Возможны следующие варианты для severity:
- critical
— критические ошибки.
- error
— ошибки и выше (critical).
- warning
— предупреждения и выше. Предупреждения не говорят о наличии проблем в работе сервиса, однако это такие событтия, которые могут привести с ошибкам, поэтому не стоит их игнорировать.
- notice
— уведомления и выше.
- info
— информация.
- debug
— отладка (подробный лог).
- dynamic
— тот же debug.
Настройка сети при установке CentOS 8
В окне «Network & Host Name» вы увидите список ваших сетевых интерфейсов, они по умолчанию отключены. В моем примере их два. Каждый сетевой интерфейс имеет отличительное имя, в моем примере, это ens33 и ens36. Видно, что текущий статус «Disconnected», чтобы это изменить переведите тумблер с состояния «Off» на «On».
Если в вашей с локальной сети есть сервер DHCP, в моем примере на CISCO, то вы должны получить нужные настройки, как видно я поймал IP адрес 192.168.31.10/24 и DNS 192.168.31.1, 192.168.31.2. Чуть ниже в левом нижнем углу вы можете сразу задать имя вашего сервера CentOS 8. Если вас не устраивает, что CentOS 8 будет получать настройки сети по DHCP и вы хотите задать статический IP-адрес, то нажмите кнопку «Configure».
В окне свойств сетевого интерфейса найдите вкладку IPV4 Settings, обратите внимание, что тут будет поле «Method», в котором по умолчанию стоит «Automatic (DHCP)», то есть динамическое получение сетевых настроек в CentOS 8. На выбор у вас будут вот такие пункты:
- Automatic (DHCP) — автоматическое получение всех настроек: IP, маску, DNS, Основной шлюз, маршруты
- Automatic (DHCP) addresses only — вы получите автоматически только IP-адрес
- Manual — ручная настройка сети CentOS 8
- Link-Local Only — Локальные ссылки назначаются автоматически, когда компьютер не настроен на использование статического IP-адреса и не может найти DHCP-сервер. По сути, то APIPA адрес из диапазона 169.254.0.0
- Shared to other computers — это совместное использование сетевого интерфейса. Простой пример у вас есть сервер с двумя сетевыми интерфейсами один LAN второй WAN, и есть другой сервер, где просто один сетевой интерфейс с LAN и без интернета. Вы можете выставить на первом сервере WAN в режим «Shared to other computers» и указать его в маршрутах для выхода в интернет.
- Disabled — отключение получения настроек
Давайте я настрою статический IP-адрес на моем сетевом интерфейсе ens33. Выставляю в методе получения «Manual». В поле «Address» я нажимаю кнопку «Add», для добавления новых настроек, задаю Ip-адрес, маску в «Netmask» и основной шлюз в «Gateway». Чуть ниже я указываю свои DNS сервера, у меня это 192.168.31.1, 192.168.31.2, так же можете в поле «Search domains» указать ваше имя домена Active Directory, у меня это root.pyatilistnik.org.
Галка «Require IPv4 addressing for this connection to complete (Требовать адресацию IPv4 для этого соединения)» — Чтобы разрешить системе устанавливать это соединение в сети с поддержкой IPv6, если конфигурация IPv4 завершится неудачно, но конфигурация IPv6 будет успешной. Кнопка «Routes» позволяет вам настроить дополнительные маршруты в CentOS 8.
Нажмите кнопку «Add», чтобы добавить IP-адрес, маску сети, адрес шлюза и метрику для нового статического маршрута. Можете выбрать «Use this connection only for resources on its network», чтобы ограничить подключения только к локальной сети.
Как изменить hostname в CentOS 7
По-умолчанию, во время установки CentOS ставит имя хоста localhost.localdomain
. Если вы его не поменяли, то можно это сделать позже. Для начала давайте проверим, какое имя хоста у вас установлено. Делается это с помощью команды в консоли hostname
, либо с помощью uname
:
# hostname
localhost.localdomain
# uname -n
localhost.localdomain
Для того, чтобы изменить имя хоста в CentOS, необходимо отредактировать файл /etc/hostname
. Проверим его содержимое:
# cat /etc/hostname
localhost.localdomain
Отредактируем этот файл, чтобы изменить hostname:
# mcedit /etc/hostname
centos.localhost
Сохраняем файл и проверяем:
# hostname
centos.localhost
Есть готовая команда, которая сразу устанавливает необходимое имя сервера:
# hostnamectl set-hostname centos.localhost
Все в порядке, мы изменили имя хоста на centos.localhost
Настройка дополнительного DNS-сервера
В большинстве сред правильным решением будет создание дополнительного DNS-сервера, который будет отвечать на запросы, если основной сервер окажется недоступным. К счастью, настройка дополнительного DNS-сервера выполняется намного проще.
На сервере ns2 отредактируйте файл :
В верхней части файла добавьте ACL с частными IP-адресами всех ваших доверенных серверов:
/etc/bind/named.conf.options — updated 1 of 2 (secondary)
Под директивой добавьте следующие строки:
/etc/bind/named.conf.options — updated 2 of 2 (secondary)
Сохраните и закройте файл . Этот файл должен выглядеть так же, как файл сервера ns1, за исключением того, что его необходимо настроить на прослушивание частного IP-адреса ns2.
Теперь необходимо отредактировать файл :
Определите slave-зоны, соответствующие master-зонам основного DNS-сервера
Обратите внимание, что в качестве типа используется slave, в файле отсутствует путь, и существует директива , которая должна быть настроена на частный IP-адрес основного DNS-сервера. Если вы определили несколько зон для обратного просмотра на основном DNS-сервере, обязательно проверьте, что все они были добавлены на этом этапе:
/etc/bind/named.conf.local — updated (secondary)
Сохраните и закройте файл .
Запустите следующую команду для проверки валидности ваших файлов конфигурации:
После выполнения проверки перезапустите BIND:
Разрешите подключение DNS к серверу, внеся изменения в правила брандмауэра UFW:
Теперь у вас есть основной и дополнительный DNS-серверы для имени частной сети и преобразования IP-адреса. Теперь вам нужно настроить ваши клиентские серверы, чтобы они могли использовать ваши частные DNS-серверы.
Start named-chroot service
To configure dns server on Red Hat Enterprise Linux 7 the installation of does NOT change how the named service is run. On the contrary it installs new service that needs to be started using command, if you want to run named service in a chroot environment.
But before, make sure to stop and disable any named service which is available and running on your RHEL 7 Linux host:
# systemctl stop named # systemctl disable named
Next start service using systemctl:
# systemctl start named-chroot # systemctl status named-chroot ● named-chroot.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2019-06-21 17:00:25 IST; 1min 1s ago Process: 5321 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS) Process: 5319 ExecStartPre=/bin/bash -c if ; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 5323 (named) Tasks: 4 CGroup: /system.slice/named-chroot.service └─5323 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot Jun 21 17:00:25 centos-8.example.com named: zone 2.0.10.in-addr.arpa/IN: loaded serial 1 Jun 21 17:00:25 centos-8.example.com named: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 Jun 21 17:00:25 centos-8.example.com named: zone localhost.localdomain/IN: loaded serial 0 Jun 21 17:00:25 centos-8.example.com named: zone example.com/IN: loaded serial 1 Jun 21 17:00:25 centos-8.example.com named: 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.0.0.0.0....ial 0 Jun 21 17:00:25 centos-8.example.com named: zone localhost/IN: loaded serial 0 Jun 21 17:00:25 centos-8.example.com named: all zones loaded Jun 21 17:00:25 centos-8.example.com named: running Jun 21 17:00:25 centos-8.example.com named: zone example.com/IN: sending notifies (serial 1) Jun 21 17:00:25 centos-8.example.com named: zone 2.0.10.in-addr.arpa/IN: sending notifies (serial 1) Hint: Some lines were ellipsized, use -l to show in full.
Now our configure dns server steps are almost done, enable the service to start the service automatically after every reboot:
# systemctl enable named-chroot Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service.
Установка на raid
Рассмотрим еще один, более специфичный вариант установки. Он может быть актуален, когда вы настраиваете, к примеру, железный сервер для работы на нем гипервизора KVM, либо отдельной ноды кластера Kubernetes, на которой будет использоваться локальное файловое хранилище. Мы будем ставить CentOS 8 на программный рейд. Для примера возьмем 2 диска и raid 1. Все установки будут такие же, как мы рассмотрели ранее, кроме одной — Installation Destination.
Подключаем 2 диска к системе, загружаемся с установочного диска и идем в раздел разбивки диска. Видим 2 жестких диска. Выбираем оба и отмечаем пункт Custom.
Если на дисках есть какие-то разделы, то все удаляем. Дальше наша задача выполнить такую же разбивку диска, как и ранее, только в качестве разделов использовать массивы mdadm, которые предварительно надо создать. Должно получиться примерно вот так.
К сожалению, через стандартный установщик не получится установить centos 8 не только на mdadm raid 1, но затем на lvm разделы поверх mdadm массивов. Я не увидел такой возможности. К примеру, позволяет это сделать. Там более гибкие варианты настройки разметки дисков и создания разделов.
Дальше можно запускать установку centos на программный рейд. Проверим его после того, как система успешно загрузится.
# df -h # cat /proc/mdstat
Проверим теперь, как сервер переживет выход из строя одного из дисков. Я выключил сервер, вынул первый диск, с которого загрузился сервер в первый раз и поставил загрузку со второго. Включаю и проверяю.
Сервер без проблем загрузился. Никаких ошибок загрузчика не было, кроме одного момента — загрузка была значительно дольше, чем обычно. Вместо нескольких секунд 3-5 минут. Все работает как и должно работать из коробки. Стандартный установщик отработал корректно, хотя так бывает не всегда. Проверим состояние массива.
# cat /proc/mdstat # mdadm -D /dev/md126
Одного диска нет, но при этом все работает стабильно. Можно планово выполнить замену сбойного диска и добавить его в массив. Правда, тут могут быть ошибки, одну из которых я недавно словил. После выхода из строя одного диска в составе mdadm, массив с /boot разделом почему то перешел в статус inactive и система не грузилась. Но я это легко исправил и загрузил сервер. Подробности в статье — восстановление raid 1.
Я рекомендую использовать софтовый raid mdadm, если у вас нет железного raid контроллера. Mdadm надежен и прост в эксплуатации. У меня с ним никогда не было серьезных проблем и потери информации. Да, бывает, что сервер не грузится после выхода из строя диска, есть нюансы, но данные всегда остаются целы. Все можно исправить. Он намного надежнее, понятнее и стабильнее встроенных в материнскую плату контроллеров. Отдавать предпочтение аппаратному рейду следует только в том случае, если он действительно аппаратный, имеет батарейку и действительно увеличивает производительность сервера за счет кэширования. Во всех остальных случаях рекомендую пользоваться mdadm.
Настройка netfilter (iptables) для DNS BIND
Собственно, настроив работу сервера, неплохо было бы его защитить. Мы знаем, что сервер работает на 53/udp порту. Почитав статью о том, что такое netfilter и правила iptables и ознакомившись с практическими примерами iptables, можно создать правила фильтрации сетевого трафика:
dns ~ # iptables-save # типовые правила iptables для DNS *filter :INPUT DROP :FORWARD DROP :OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP # разрешить доступ локальной сети к DNS серверу: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A OUTPUT -p icmp -j ACCEPT -A OUTPUT -p udp -m udp --sport 32768:61000 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 32768:61000 -j ACCEPT -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # разрешить доступ DNS серверу совершать исходящие запросы -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT COMMIT
Это типовой пример! Для задания правил iptables под Ваши задачи и конфигурацию сети, необходимо понимать принцип работы netfilter в Linux, почитав вышеуказанные статьи.
Заключение
С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.
Давайте разберемся в том, что мы сделали:
- Выполнили предварительную настройку сервера, подготовили его к работе.
- Включили маршрутизацию.
- Настроили firewall.
- Включили NAT.
- Установили и настроили dnsmasq для организации служб dns и dhcp.
- Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.
Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.
Онлайн курсы по Mikrotik
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .
Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:
- Знания, ориентированные на практику;
- Реальные ситуации и задачи;
- Лучшее из международных программ.