Centos 7 dhcp сервер локальной сети. Сетевые настройки на сервере CentOS
В данном материале я затрону актуальную тему, с которой начинается практически любая первоначальная работа с сервером. Настройка основных параметров сети в CentOS 7 и 8 — ip адрес, dhcp, ipv6, dns, hostname, статические маршруты, сетевые карты и другие network параметры. Двигаться по теме будем шаг за шагом от простого к сложному, разбирая все нюансы по порядку и отвечая на наиболее популярные вопросы.
- Рассказать, как выполнить базовые сетевые настройки на сервере centos версий 7 и 8.
- Показать дополнительные возможности по настройки сети.
- На нескольких примерах рассказать, как решать типовые проблемы с сетью.
- Показать некоторые полезные сетевые утилиты.
Данная статья является частью единого цикла статьей про сервер .
Сетевые настройки на сервере CentOS
Первый раз с сетевыми настройками сервера CentOS 7 или 8 мы сталкиваемся, когда производим установку. На экране первоначальной настройки есть отдельный пункт, касающийся настройки сетевых интерфейсов:
Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):
Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):
После выполнения остальных настроек начнется установка. После установки у вас будет сервер с указанными вами сетевыми настройками.
Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal , то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:
Bash: ifconfig: command not found
или в русской версии:
Bash: ifconfig команда не найдена
Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools . Сделаем это:
# yum install net-tools
Теперь можно увидеть настройки сети:
Если у вас нет желания устанавливать дополнительный пакет, то можно воспользоваться более простой командой ip с параметрами:
# ip addr
1: lo:
Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию и открываем на редактирование файл ifcfg-eth0 или ifcfg-ens18. Название файла будет зависеть от имени сетевого интерфейса. В Centos 8 по-умолчанию убрали поддержку настройки сети через конфигурационные скрипты, поэтому установите отдельно пакет network-scripts.
# yum install network-scripts
Файл ifcfg-eth0 имеет примерно следующее содержание:
По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:
Мы изменили параметры:
Чтобы изменения вступили в силу, необходимо перечитать сетевые настройки:
Проверяем, применилась ли новая конфигурация сети:
# ifconfig
eth0: flags=4163
Все в порядке, новые настройки сетевого интерфейса установлены.
Как получить сетевые настройки по DHCP
Теперь рассмотрим обратную ситуацию. Допустим, у вас сетевая карта имеет какие-то настройки, установленные вручную. Но вы хотите, чтобы ваш компьютер получал настройки сети по dhcp в качестве клиента. Для этого вам нужно произвести операцию, обратную той, что мы делали раньше. То есть открываем файл /etc/sysconfig/network-scripts/ifcfg-ens18 и удаляем там строки с параметрами DNS, IPADDR, PREFIX, GATEWAY а в параметре BOOTPROTO указываем значение «dhcp» .
Сохраняем файл и перезапускаем сеть:
# systemctl restart network
Затем проверяем, получил ли наш client по dhcp настройки.
Как настроить DNS в CentOS
Текущие настройки dns сервера в CentOS можно посмотреть в двух местах:
- В файле с настройками сетевой карты ifcfg-eth0, которым мы ранее неоднократно редактировали.
- В файле /etc/resolv.conf
Зачем они сейчас в двух местах, я не знаю, но раньше настройки dns сервера в каких-то дистрибутивах, не помню уже точно каких, указывались только в resolv.conf, но в какой-то момент это изменилось. И все сетевые настройки стали храниться в одном файле вместе с адресом, шлюзом, маской и прочим. Если сейчас отредактировать файл resolv.conf и внести туда какие-то dns сервера, то после перезагрузки они будут заменены на значения из файла ifcfg-eth0.
Так что для того, чтобы установить параметры dns сервера, нужно отредактировать файл сетевых настроек ifcfg-eth0, добавив туда столько серверов, сколько требуется. Например так:
DNS1="192.168.159.2" DNS2="8.8.8.8" DNS3="8.8.4.4"
Для применения настроек сохраняем файл и перезапускаем сеть, все как обычно. После перезагрузки сервера настройки dns будут записаны в файл resolv.conf
# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.159.2 nameserver 8.8.8.8 nameserver 8.8.4.4
Как отключить ipv6
В настоящее время активного использования протокола ipv6 в России нет и в обычной работе он чаще всего не нужен. Хотя нас уже много лет пугают, что свободных ip адресов уже практически не осталось, но на деле пока еще всем хватает. Так что с точки зрения практических соображений ipv6 в настоящее время на сервере не нужен и его можно отключить.
Перед отключением ipv6 в centos необходимо на всякий случай проверить, какие программы его используют в своей работе. Это нужно для того, чтобы избежать ошибок в их работе, предварительно отключив ipv6 в конфигурациях. Для того, чтобы увидеть, какие программы висят на ipv6 интерфейсе воспользуемся командой netstat:
# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2317/master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1333/sshd tcp6 0 0::1:25:::* LISTEN 2317/master tcp6 0 0:::22:::* LISTEN 1333/sshd udp 0 0 0.0.0.0:49252 0.0.0.0:* 694/avahi-daemon: r udp 0 0 0.0.0.0:123 0.0.0.0:* 715/chronyd udp 0 0 0.0.0.0:5353 0.0.0.0:* 694/avahi-daemon: r udp 0 0 127.0.0.1:323 0.0.0.0:* 715/chronyd udp6 0 0:::123:::* 715/chronyd udp6 0 0::1:323:::* 715/chronyd
Все строки с::: это ipv6 протокол. В моем случае это sshd, postfix и chronyd. Отключим им ipv6 и оставим только ipv4.
Начнем с sshd. Открываем файл настроек /etc/ssh/sshd_config и находим строки:
#AddressFamily any #ListenAddress 0.0.0.0
Раскомментируем их и изменим. Должно получиться вот так:
AddressFamily inet ListenAddress 0.0.0.0
Теперь открываем файл настроек постфикс /etc/postfix/main.cf . Ищем там строку:
#inet_protocols = all
Меняем на:
Inet_protocols = ipv4
Отключаем ipv6 в chronyd. Для этого создаем файл /etc/sysconfig/chronyd и добавляем строку:
OPTIONS=-4
Теперь отключаем ipv6 в CentOS. Открываем файл /etc/sysctl.conf и добавляем туда строки:
Net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Редактируем файл /etc/sysconfig/network , добавляя туда:
NETWORKING_IPV6=no IPV6INIT=no
Добавляем запрет на работу ipv6 в конфигурацию grub. Открываем конфиг /etc/default/grub и добавляем к параметру GRUB_CMDLINE_LINUX еще одно значение ipv6.disable=1 . Должно получиться примерно так:
GRUB_CMDLINE_LINUX="rd.lvm.lv=cl_centos8/root rhgb quiet ipv6.disable=1 "
После этого обновляем конфиг загрузчика.
# grub2-mkconfig -o /boot/grub2/grub.cfg
Перезагружаемся и проверяем результат:
# reboot
# ifconfig
eno16777728: flags=4163
Нигде нет упоминания про inet6 и адреса формата ipv6. Значит все в порядке, мы отключили ipv6 в CentOS. Теперь проверим список открытых портов:
# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2291/master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1322/sshd udp 0 0 0.0.0.0:123 0.0.0.0:* 2453/chronyd udp 0 0 0.0.0.0:5353 0.0.0.0:* 697/avahi-daemon: r udp 0 0 127.0.0.1:323 0.0.0.0:* 2453/chronyd udp 0 0 0.0.0.0:57259 0.0.0.0:* 697/avahi-daemon: r
Все порты ipv4. Все в порядке, наша задача выполнена.
Как изменить hostname в CentOS
По-умолчанию, во время установки 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
Установить шлюз по-умолчанию в CentOS
Если по каким-то причинам при настройке сетевых параметров у вас не установился шлюз по-умолчанию, то сделать это можно вручную. Для начала проверим, какой шлюз по-умолчанию установлен в системе в данный момент:
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 149.154.71.254 0.0.0.0 UG 0 0 0 eth0 10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0 10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 149.154.70.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0 192.168.1.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
Строка с Destination 0.0.0.0 определяет адрес шлюза. Если у вас ее нет, либо в поле Gateway установлен неверный шлюз, то можно это изменить. Устанавливаем шлюз по-умолчанию:
# route add default gw 192.168.0.1Или то же самое с помощью команды ip.
# ip r default via 10.20.1.1 dev ens18 proto dhcp metric 100 10.20.1.0/24 dev ens18 proto kernel scope link src 10.20.1.23 metric 100 # ip route add default 10.20.1.0/24 dev ens18
# ip route add default via 10.20.1.1
Network Manager в CentOS
В CentOS по-умолчанию имеется служба, которая управляет всеми сетевыми подключениями — NetworkManager . Она постоянно контролирует сетевые настройки и с помощью демона по управлению конфигурациями вносит соответствующие изменения в активные сетевые устройства. Она поддерживает стандартные файлы конфигураций ifcfg.
Список сетевых утилит и приложений:
Пользователи не взаимодействуют с NetworkManager в CentOS напрямую, для этого используются графические и утилиты командной строки. Одной из таких утилит является system config network tui . В Centos 8 по-умолчанию NetworkManager является рекомендованным способом по настройке сети. Все остальные способы объявлены deprecated.
System config network tui
Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui . Проверить ее наличие в системе очень просто. Достаточно запустить ее в консоли:
Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:
# yum install NetworkManager-tui
С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов network-scripts. Давайте сделаем это. Вызываем программу:
Выбираем первый пункт Edit a connection , затем выбираем сетевой интерфейс и жмем «Edit»:
Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек — ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:
После завершения редактирования сохраняем настройки, нажимая ОК.
Если в первом экране утилиты выбрать пункт Set System Hostname
, то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.
Если вы будете готовиться к сдаче сертификации по RHEL, то везде будете видеть рекомендацию использовать nmtui для настройки сети. Суть в том, что на экзамене время ограничено, а с помощью network manager его можно и нужно экономить. Считается, что так настраивать сеть быстрее.
Как добавить статический маршрут в CentOS
Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat :
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.
Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:
# route add -net 192.168.8.0/24 gw 192.168.159.5
Проверяем, появился ли добавленный маршрут в таблицу маршрутизации :
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
Все в порядке, маршрут добавлен. Делаем то же самое с помощью утилиты ip.
# ip r # ip route add 192.168.8.0/24 via 192.168.159.5
Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:
# mcedit /etc/sysconfig/network-scripts/route-eth0 192.168.8.0/24 via 192.168.159.5
Перезагружаемся и проверяем, на месте ли маршрут:
# reboot # netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
Все в порядке, статический маршрут добавлен.
Как настроить 2 IP адреса на одном интерфейсе
Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:
# ifconfig
eno16777728: flags=4163
Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:
# ifconfig eno16777728:1 192.168.159.120 up
Проверим, что получилось:
# ifconfig
eno16777728: flags=4163
То же самое, с помощью ip.
# ip a add 192.168.159.120/24 dev eno16777728:1
Все в порядке, мы добавили второй 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 адрес должен быть на месте.
Как сделать перезапуск сети в CentOS
Ранее я уже касался этого вопроса, но на всякий случай повторим отдельно. Допустим, вы внесли некоторые изменения в конфигурацию сети. Как применить эти настройки, не перезагружая сервер? Очень просто. Для перезапуска сети в CentOS достаточно воспользоваться командой systemd:
# systemctl restart network
Если увидите ошибку:
Failed to restart network.service: Unit network.service not found.
Значит у вас не установлен пакет network-scripts, а управление сетью выполняется с помощью NetworkManager, который сам перезапускает сеть после изменения настроек.
Если у вас старая версия Centos без systemd, а это 6-я версия и младше, то сеть перезапускается вот так.
# /etc/init.d/network restart
Сетевая служба перечитает все сетевые настройки и применит изменения.
Как узнать IP адрес в CentOS
Для того, чтобы быстро узнать текущий IP адрес в CentOS необходимо воспользоваться следующими командами:
# ifconfig | grep inet inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255 inet 127.0.0.1 netmask 255.0.0.0
Либо второй вариант определения локального ip адреса:
# ip addr | grep inet inet 127.0.0.1/8 scope host lo inet 192.168.159.129 /24 brd 192.168.159.255 scope global eno16777728
Обе команды позволяют быстро узнать свой ip адрес.
Что делать, если CentOS не видит сетевую карту?
Вы установили сервер, загрузились и обнаружили, что в системе нет ни одной сетевой карты. Что в таком случае делать? Первым делом посмотрите вывод команды dmesg и поищите там поминание о своей карте. Возможно, она в системе есть, просто не активирована. Активировать ее можно с помощью nmtui , а котором я рассказывал выше.
Там есть пункт меню Activate connection , нужно в него зайти и активировать вашу сетевую карту. После этого ее можно будет настраивать.
Если же вашей сетевой карты нет в системе, то нужно поискать в интернете по модели информацию об этой сетевой карте. Возможно в репозиториях будут драйвера для нее. Это достаточно распространенная ситуация. Чаще всего драйвера найдутся и их необходимо будет правильно установить.
Есть еще вероятность, что вы не увидите своей карточки при выводе команды ifconfig, если в эту карту не воткнут сетевой провод. Чтобы наверняка посмотреть все интерфейсы, необходимо использовать ключ -a:
# ifconfig -a
Есть еще один способ поискать сетевую карту в системе. Установите пакет pciutils :
# yum -y install pciutils
И посмотрите вывод команды:
# lspci | grep Ethernet
Если сетевая карта видится системой, то должно быть что-то в этом роде:
02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Если в выводе пусто, значит сетевая карта не определена.
Что делать, если сеть недоступна в CentOS?
Допустим, вы пытаетесь пинговать какой-то адрес, например 8.8.8.8 и получаете ответ, что сеть не доступна:
# ping 8.8.8.8
А в ответ получаете:
Connect: Network is unreachable
Такая ситуация может возникнуть, если у вас не установлен шлюз по-умолчанию. Добавить его можно с помощью команды:
# route add default gw 192.168.0.1
Если дело не в шлюзе, то нужно проверить настройки сетевых адаптеров. Если нет ни одного активного адаптера, то вы так же будете получать сообщение о том, что сеть не работает. Необходимо, чтобы в системе был правильно настроен хотя бы один сетевой адаптер. Как это сделать, написано выше.
Использование сетевых утилит traceroute, dig в CentOS
Для диагностики сетевых подключений в CentOS полезно использовать специальные утилиты. Но если вы использовали установку minimal, то их скорее всего в системе не будет. К примеру, популярная утилита traceroute при попытке ее запуска выдаст сообщение:
# traceroute ya.ru bash: traceroute: command not found
Ее нужно установить отдельно из репозитория:
# yum install traceroute
То же самое с популярной программой dig для работы с dns серверами и записями:
# dig ya.ru bash: dig: command not found
Чтобы эта сетевая утилита заработала, необходимо установить пакет bind-utils :
# yum install bind-utils
Настройка 802.1Q VLAN в CentOS
Для поднятия тегированного интерфейса на CentOS нужно в первую очередь проверить поддержку ядром 8021q :
# modprobe 8021q
Если сообщений об ошибке нет, значит все в порядке, модуль загрузился. Если же модуль не найден, необходимо пересобрать модули ядра, включив поддержку необходимого модуля. Проверим на всякий случай, загрузился ли модуль:
# lsmod | grep 8021q 8021q 29022 0 garp 14384 1 8021q mrp 18542 1 8021q
Все в порядке, модуль 8021q загружен, добавим его в автозагрузку:
# echo 8021q >> /etc/modules-load.d/8021q.conf
Теперь создаем файл конфигурации для vlan в /etc/sysconfig/network-scripts :
# mcedit ifcfg-eth0.2000 VLAN=yes DEVICE=eth0.2000 BOOTPROTO=static ONBOOT=yes TYPE=Vlan IPADDR=192.168.100.2 NETMASK=255.255.255.0
Обращаю внимание на выделенное жирным. Во всех инструкциях в интернете, что мне попались, этот параметр был указан как TYPE=Ethernet , но с такой настройкой интерфейс с vlan не поднимался, появлялась ошибка:
Error: no device found for connection "System eth0.2000".
Только после того, как я исправил, все заработало как надо. Так что сохраняем и активируем интерфейс:
# ifup eth0.2000 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Проверяем наш vlan:
# ip l ls
1: lo:
Все в порядке, тегированный интерфейс поднят. По аналогии можно создать еще несколько подобных интерфейсов, не забывая изменять им имена и адреса.
Заключение
На этом мой объемный материал на тему настройки сети в CentOS закончен. Буду очень рад комментариям, замечаниям, поправкам. Они наверняка будут. Создавая подобные материалы я в первую очередь учусь сам и подтягиваю свои знания в предметной области. Тут могут быть где-то ошибки и описки, хотя я и проверяю все на живых системах во время написания руководств, но все равно возможны неточности и опечатки.
Напоминаю, что данная статья является частью единого цикла статьей про сервер .
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
- Установить сервер DNS в chroot окружении. Так же он должен автоматически добавлять A и TXT записи от новых компьютеров
- Установить DHCP сервер для динамической раздачи IP адреса всем компьютерам в нашей сети с привязкой к DNS
- Настроить не просто кеширующий DNS, а как primary DNS
В качестве DNS сервера был выбран bind9, как наиболее распространенный. Вся установка будет происходить в консоле, т.к. это сервер и всякие DE и GUI нам не понадобятся.
Начнем с настройки сетевого интерфейса нашей карточки. Открываем конфигурационный файл с помощью вашего любимого редактора.
vim /etc/sysconfig/network-settings/ifcfg-eth0
Правим все значения как вам нужно.
DEVICE=eth0
IPADDR=192.168.1.150
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
ONBOOT=yes
DHCP_HOSTNAME=master
В данном примере видно что сеть у нас 192.168.1.0/24. Сервер у нас со статическим IP адресом 192.168.1.150 и именем хоста MASTER. Так же видно что GATEWAY(шлюз) 192.168.1.1 — это тот компьютер с которого идет раздача интернета.
Прошу заметить, без параметра DHCP_HOSTNAME могут быть проблемы, так что прошу его не пропускать.
Устанавливаем сам bind, если он еще не установлен.
yum -y install bind bind-chroot caching-nameserver
# rpm -q bind bind-chroot
bind-9.7.2-1.P3.el5
bind-chroot-9.7.2-1.P3.el5
Ну и собственно переходим к правке главного конфигурационного файла named.conf.
vim /var/named/chroot/etc/named.conf
options {
listen-on {localhost; 192.168.1.150; };
directory «/var/named/»;
dump-file «data/cache_dump.db»;
statistics-file «data/named_stats.txt»;
memstatistics-file «data/named_mem_stats.txt»;
allow-transfer {192.168.1.150; };
allow-query {trusted-networks; };
allow-recursion {trusted-networks; };
forwarders {192.168.1.1; };
};
logging {
channel default_ch {
file «data/named-base.log»;
severity info;
print-time yes;
print-category yes;
};channel security_ch {
file «data/named-security.log»;
severity info;
print-time yes;
print-category yes;
};
category default { default_ch; };
category security { security_ch; };acl «trusted-networks» {localhost; 192.168.1.0/24; };
zone «saikov.ru» IN {
type master;
file «saikov.ru»;
};zone «168.192.in-addr.arpa» {
type master;
file «168.192.rev»;
allow-update { key rndckey; };
};include «/etc/named.rfc1912.zones»;
include «/etc/rndc.key»;
Давайте разберем его более подробно.
Во первых, первая проблема возникла из-за прав на этот файл. Когда Вы его создадите, проследите что бы владельцем был пользователь named
# ls -l named.conf
-rw-r—— 1 named named 1053 Фев 7 19:06 named.conf
options — секция, где описываются глобальные настройки. Состоит она из нескольких параметров. Давайте их разберем.
listen-on — указываем IP и порты на котором named будет работать
directory — путь к каталогу, где размещены все необходимые файлы для работы named
dump-file — здесь указываем путь к кешу
statistics-file — опция указывающая расположение файла статистики
memstatistics-file — опция указывающая расположение файла статистик использования памяти
allow-transfer — указываем IP, которым разрешено передавать зону
allow-query — указываем IP с которыми DNS будет работать
allow-recursion — указываем IP, рекурсивные запросы которых будем обслуживать
forwarders — если наш сервер не сможет ответить на запрос, то он перенаправит их на указанные DNS в этом параметре.
Опять же. Не забывайте проверять права на файлы. Как указано выше, они лежат у нас в /var/named/chroot/var/named/data
# ll /var/named/chroot/var/named/data/
итого 96
-rw-r—r— 1 named named 81286 Фев 10 14:54 named-base.log
-rw-r—r— 1 named named 5934 Фев 7 21:04 named_mem_stats.txt
-rw-r—r— 1 named named 685 Фев 7 18:22 named-security.log
logging — секция отвечающая за логирование нашего DNS сервера. Она у меня разбита, как видно из конфигурационного файла, на две части.
Первая отвечает за стандартные (default) логи и пишет все в /var/named/chroot/var/named/data/named-base.log
Вторая отвечает за логи безопасности и пишет все в /var/named/chroot/var/named/data/named-security.log
Так же имеются еще три одинаковых параметра
severity info; — работать в информационном уровне важности
print-time yes; — указывать в логах время
print-category yes ; — разрешить регистрировать категории
Делаем привязку к нашим двум каналам, указывая что default будет идти в канал default_ch, а security в канал security_сh
category default { default_ch; };
category security { security_ch; };
Создаем Access control list и водим переменную в которой пишем список наших сетей. Эта переменная используется в allow-query и allow-recursion . Это нужно для упрощения настройки. Если поменяются IP адреса, то можно будет поменять только тут, а не во всем конфигурационном файле.
acl «trusted-networks» {localhost; 192.168.1.0/24; };
zone «saikov.ru» IN {
type master;
file «saikov.ru»;
allow-update { key rndckey; };
};zone «168.192.in-addr.arpa» {
type master;
file «168.192.rev»;
allow-update { key rndckey; };
};
Ну тут все понятно я думаю
type master; — говорим что он является основным DNS (master)
file «saikov.ru»; — файл где описана прямая зона домена saikov.ru
allow-update { key rndckey; }; — работа с ключом
Точно так же и для обратной зоны. Только файл описывающий обратную зону называется 168.192.rev
Файлы зоны лежат в /var/named/chroot/var/named/ , права на них named.named
В данной заметке я хочу рассмотреть простой и быстрый вариант настройки шлюза для организации доступа в интернет из локальной сети на базе CentOS 7. Не будет никакого дополнительного функционала, только самое необходимое для доступа к интернету компьютеров за шлюзом.
Данная статья является частью единого цикла статьей про сервер .
Введение
В нашем распоряжении будет следующий сервер для настройки шлюза:
# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)
Предварительная настройка сервера
# yum -y update
После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:
# mcedit /etc/sysconfig/selinux
Приводим строку с соответствующим параметром к следующему виду:
SELINUX=disabled
Чтобы применить изменения, перезагружаем сервер:
# reboot # yum -y install epel-release
Устанавливаем iftop на CentOS 7:
# yum -y install iftop
Теперь мы можем смотреть загрузку сети на шлюзе в режиме реального времени. Чтобы увидеть сетевую активность, достаточно запустить iftop:
По-умолчанию она слушает интерфейс eth0. Это внешний интерфейс шлюза, на нем все подключения будут отображены от имени самого шлюза и определить, кто же в сети занимает канал мы не сможем. Чтобы это увидеть, необходимо запустить просмотр сетевой активности на локальном интерфейсе. Сделать это не сложно, достаточно запустить iftop с параметром:
# iftop -i eth1 -P
В моем случае это пользователь с ip 192.168.10.98, на котором я запустил проверку скорости интернета с серверов Яндекса.
Если у вас не большая сеть и не много пользователей, то с помощью этой простой и эффективной утилиты вы сможете легко определить, кто, к примеру, качает торренты или чем-то еще загружает канал.
Заключение
С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.
Давайте разберемся в том, что мы сделали:
- Выполнили предварительную настройку сервера, подготовили его к работе.
- Включили маршрутизацию.
- Настроили firewall.
- Включили NAT.
- Установили и настроили dnsmasq для организации служб dns и dhcp.
- Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.
Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.
Напоминаю, что данная статья является частью единого цикла статьей про сервер .
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.