ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 16
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Конфигурация сетевой инфраструктуры
Конфигурация сетевых интерфейсов
В современных дистрибутивах для манипуляции сетевыми устройствами присутствует пакет iproute, в состав которого входят такие утилиты как: ip, ss, tc, и т.д. Минимально необходимые команды, которые нужно знать:
-
Посмотреть список физических интерфейсов
# ip link ( или ip l) -
Посмотреть список интерфейсов с IP-адресами
# ip address show (или ip a s) -
Добавить IP адрес на интерфейс
# ip address add {ip-address/mask} dev {interface} -
Удалить IP адрес с интерфейса
# ip address del {ip-address/mask} dev {interface} -
Посмотреть список маршрутов
# ip route show (или ip r s) -
Добавить маршрут
# ip route add {network/mask} via {gateway ip} -
Удалить маршрут
# ip route del {network/mask} via {gateway ip} -
Добавить маршрут по умолчанию
# ip route add default via {gateway ip} -
Удалить маршрут по умолчанию
# ip route del default
Данные команды применяются на лету, но не переживают ребут системы. Чтобы изменения переживали ребут, существует несколько способов.
Способ номер #1 - Network Scripts и файлы конфигурации.
В предыдущих релизах RedHat, основным способом конфигурации сети было использование shell скриптов. Под шел скриптами подразумевается в основном “/etc/init.d/network” и всё что он в дальнейшем вызывает. Пользователь предоставлял файлы, рассматриваемые как конфигурационные, но которые могли быть интерпретируемые как дополнения, содержащие переменные для скриптов. В настоящее время, данный способ является дополнительным, в то время как в Debian, этот способ всё ещё является способом по умолчанию.
В RedHat-подобных дистрибутивах, конфигурационные файлы интерфейсов хранятся в директории “/etc/sysconfig/network-scripts/” с именами “ifcfg-*”, где “*” – имя интерфейса.
Создать файл конфигурации можно обычным текстовым редактором
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 |
Узнать, что нужно написать в этом файле можно в файле документации “sysconfig.txt”:
less /usr/share/doc/initscripts-version/sysconfig.txt |
Посмотреть примеры файлов конфигурации сети можно в директории
ls /usr/share/doc/initscripts-version/examples/networking/ |
Не нужно запоминать эти пути! Нужно помнить, что их всегда можно найти. Логика следующая:
-
Нужно узнать какому пакету принадлежит “/etc/sysconfig/network-scripts/”
# rpm -qf /etc/sysconfig/network-scripts/ -
Вывести список всех файлов, установленных данным пакетом
# rpm -ql initscripts или rpm -ql $(rpm -qf /etc/sysconfig/network-scripts/) -
Отфильтровать вывод можно с помощью команды grep
# rpm -ql initscripts | grep doc
Пример конфигурации статики:
DEVICE=enp0s3
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.0.254
DNS1=192.168.0.254
USERCTL=no
Чтобы задать статический маршрут/маршруты, нужно создать файл “/etc/sysconfig/network-scripts/route-*”, где “*” – имя исходящего интерфейса. В данном файле, нужно перечислить необходимые маршруты. Пример: “172.16.2.0/24 via 192.168.0.254”.
После выполнения вышеперечисленных действий нужно сделать: systemctl restart networking.
В Debian-подобных файл конфигурации сетевых интерфейсов находится тут “/etc/network/interfaces”. Информацию о том, как заполнять этот файл можно найти в мануле
man interfaces vim /etc/network/interfaces |
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.0.6
netmask 255.255.254.0
gateway 192.168.1.237
Как добавить статические маршруты? iface поддерживает следующие опции (что конечно же описано в man interfaces): pre-up, up, post-up, pre-down, down. Данные опции позволяют выполнить любую команду, перед тем как интерфейс поднимется или выключится. Поэтому…
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.0.6
netmask 255.255.254.0
gateway 192.168.1.237
post-up ip route add 172.16.2.0/24 via 192.168.0.254
pre-down ip route del 172.16.2.0/24 via 192.168.0.254
DNS-сервера для статически настроенных машин должны быть перечислены в файле “/etc/resolv.conf” в формате “nameserver X.X.X.X”. Данный файл может быть перезаписан, например - dhcp-client’ом, если есть интерфейсы, получающие IP-адрес динамически, поэтому как-то нужно убедиться, что данные настройки будут перманентными.
В Debian настроить через interfaces просто так не получится. Для этого нужно установить пакет “resolvconf”.
apt install resolvconf |
После этого в “man resolvconf” можно подсмотреть, что необходимые опции можно добавить так: “dns-nameservers 192.168.0.254 8.8.8.8”.
auto enp0s3
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.0.6
netmask 255.255.254.0
gateway 192.168.1.237
dns-nameservers 192.168.0.254 8.8.8.8
dns-search mycorp.un
Способ номер #2 - NetworkManager (Уневерсальный!!!)
Более современным путём настройки сети будет являться NetworkManager. NetworkManager – дефолтный (в RHEL) сетевой демон, который позволяет настраивать IP-адреса, создавать алиасы интерфейсов, добавлять статические маршруты, информацию о DNS, создавать VPN подключения. NetworkManager запускается как демон и предоставляет API через шину D-Bus, который предоставляет способ запрашивать и контролировать состояние устройств.
В стандартную поставку для NM входят следующие утилиты:
nmtui | Простой псевдо-графический интерфейс. |
nmcli | Command-line утилита, позволяющая пользователям и скриптам взаимодействовать с NetworkManager’ом. |
nm-connection-editor | GTK+ приложение. |
Хоть в RHEL NetworkManager и является сетевым сервисом по умолчанию, разработчики сделали всё возможное чтобы shell-скрипты (network scripts) могли взаимодействовать с NM и работать параллельно. NM запускается первым, а /etc/init.d/network согласуется с NM что бы избежать вмешательства в его конфигурацию.
Что касается Debian, то там NetworkManager требует отдельной установки.
Внимание! На машинах с GUI network-manager уже должен быть установлен. Так как апплеты конфигурации сети его и используют.
apt install network-manager |
Конфигурация в “/etc/network/interfaces” не должна конфликтовать с NM, поэтому там должны остаться только настройки loopback интерфейса.
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
Дальше необходимо выполнить перезагрузку Debian-машин:
reboot |
После чего можно будет воспользоваться утилитой nmtui для настройки:
-
ip адресов -
DNS -
hostnames -
статических маршрутов -
gre-туннелей
nmtui |
Можно редактировать соединения, активировать/деактивировать и задать хостнейм.
Выполните схожие действия для всех остальных машин!
NetworkManager - имба! Используйте его!!!!
Форвардинг пакетов
Некоторые участники сети будут выступать в качестве маршрутизаторов, поэтому нужно включить возможность форвардинга.
Просматривать и настраивать системные переменные, можно с помощью утилиты sysctl.
Найти опцию, которая отвечает за форвардинг ipv4 пакетов
sysctl -a | grep forward | grep ip |
Включить форвардинг на работающей системе
sysctl -w net.ipv4.ip_forward=1 |
Для того чтобы изменения сохранялись при перезапуске системы, “net.ipv4.ip_forward=1” нужно добавить в файл “/etc/sysctl.conf”.
На L-FW и R-FW
sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf |
NTP
Для нормальной работы многих сервисов (ОСОБЕННО с TLS), необходимо чтобы часы были синхронизированы.
Установка NTP сервера на L-SRV
[root@L-SRV]# apt install chrony [root@L-SRV]# echo "allow 0.0.0.0/0" >> /etc/chrony/chrony.conf [root@L-SRV]# echo "local stratum 2" >> /etc/chrony/chrony.conf [root@L-SRV]# timedatectl set-timezone Asia/Yekateringburg [root@L-SRV]# timedatectl set-ntp 0 [root@L-SRV]# systemctl restart chrony |
Подключение клиентов.
[root@ANY]# timedatectl set-timezone Asia/Yekateringburg [root@ANY]# timedatectl set-ntp 1 [root@L-ANY]# apt install chrony [root@L-ANY]# vim /etc/chrony/chrony.conf [root@R-ANY]# vim /etc/chrony.conf [root@ANY]# systemctl restart chronyd |
DHCP Server
- DHCP server на Linux:
http://www.k-max.name/linux/dhcp-server-na-linux/
Устанавливаем DHCP сервер и делаем backup конфига.
[root@L-FW]# apt install isc-dhcp-server [root@L-FW]# mkdir dhcp_bak [root@L-FW]# cp /etc/dhcp/dhcpd.conf dhcp_bak/ |
Хорошим тоном будет убедится, что isc-dhcp-server был добавлен в автозагрузку.
[root@L-FW]# systemctl enable isc-dhcp-server |
Нужно указать на каких интерфейсах должен работать isc-dhcp-server.
[root@L-FW]# vim /etc/default/isc-dhcp-server |
INTERFACESv4="enp0s8"
После чего можно приступить к конфигурации. В dhcpd.conf уже все что необходимо есть, нужно просто отсечь всё ненужное.
[root@L-FW]# vim /etc/dhcp/dhcpd.conf |
# Суффикс доменного имени по умолчанию
option domain-name "skill39.wsr";
# Адрес/адреса DNS сервера/серверов
option domain-name-servers 172.16.20.10;
# Время аренды адреса по умолчанию
default-lease-time 600;
# Ограничение по максимальному времени аренды
max-lease-time 7200;
# Данный сервер является авторитетным для этой сети
authoritative;
# Отключить DDNS. (Опция понадобиться в будущем)
ddns-update-style none;
subnet 172.16.100.0 netmask 255.255.255.0 {
range 172.16.100.60 172.16.100.75; # Диапазон адресов
option routers 172.16.100.1; # Шлюз по умолчанию
}
Проверить конфигурацию DHCP сервера
[root@L-FW]# dhcpd -t |
Если с конфигурацией всё ОК, то dhcp-сервер нужно перезапустить:
[root@L-FW]# systemctl restart isc-dhcp-server