Работа с IP-адресами
В состав модуля COREmanager ipdb входит модуль ipbind, предназначенный для управления IP-адресами. В задачи этого модуля входит работа с сетевыми интерфейсами сервера — добавление и удаление реальных IP-адресов, привязанных к сетевому интерфейсу. Данная статья описывает логику работы данного модуля в разных операционных системах.
Добавление IP-адресов
Добавление IP-адресов происходит по-разному в зависимости от семейства, к которому принадлежит добавляемый адрес — IPv4, IPv6. А также в зависимости от того, настроен ли интерфейс на использование IP-адресов данного семейства, то есть имеются ли на сетевом интерфейсе IP-адреса того же семейства, что и добавляемый адрес. При добавлении первого IP-адреса семейства на сетевой интерфейс необходимо также настроить шлюз по умолчанию. Эти параметры предоставляет модуль ipdb.
При добавлении IP-адреса производится проверка, что он действительно закрепился на интерфейсе и имеется возможность начать прослушивание какого-либо сетевого порта на этом адресе.
Используемые обозначения для параметров:
- iface — имя интерфейса;
- if_alias — алиас для интерфейса. Для серверов на базе Linux, например eth0:0, eth0:1 и т.д.
- ip — IP-адрес;
- mask — маска подсети (длина префикса для IPv6). Модуль ipbind получает этот параметр от модуля ipdb;
- gateway — маска подсети (длина префикса для IPv6). Модуль ipbind получает этот параметр от модуля ipdb.
Для добавления первых IP-адресов конкретного семейства используются следующие команды:
Семейство | Linux | FreeBSD |
---|---|---|
IPv4 | ifconfig [iface] [ip] netmask [mask] route add default gw [gateway] | ifconfig [iface] inet [ip] netmask [mask] route add default [gateway] |
IPv6 | ifconfig [iface] add [ip]/[mask] route add --inet6 default gw [gateway] | ifconfig [iface] inet6 [ip] prefixlen [mask] route add -inet6 default [gateway] |
Для добавления IP-адресов в общем случае используются следующие команды:
Семейство | Linux | FreeBSD |
---|---|---|
IPv4 | ifconfig [if_alias] [ip] netmask 255.255.255.255 | ifconfig [iface] alias [ip]/32 |
IPv6 | ifconfig [iface] add [ip]/128 | ifconfig [iface] inet6 alias [ip]/128 |
После добавления IP-адреса на физический интерфейс необходимо также записать информацию о нем в конфигурационные файлы системы.
При добавлении первого IP-адреса семейства:
Семейство | Debian-подобные системы | RedHat-подобные системы | FreeBSD |
---|---|---|---|
Имя файла | /etc/network/interfaces | /etc/sysconfig/network-scripts/ifcfg-[iface] | /etc/rc.conf |
IPv4 | auto [iface] iface [iface] inet static address [ip] netmask [mask] gateway [gateway] | DEVICE=[iface] IPADDR=[ip] NETMASK=[mask] GATEWAY=[gateway] ONBOOT=yes | ifconfig_[iface]="inet [ip] netmask [mask]" defaultrouter="[gateway]" |
IPv6 | auto [iface] iface [iface] inet6 static address [ip] netmask [mask] gateway [gateway] | DEVICE=[iface] IPV6ADDR=[ip]/[mask] IPV6_DEFAULTGW=[gateway] IPV6INIT=yes | ifconfig_[iface]_ipv6="inet6 [ip] prefixlen [mask]" ipv6_defaultrouter="[gateway]" |
При добавлении последующих IP-адресов:
Семейство | Debian-подобные системы | RedHat-подобные системы | FreeBSD |
---|---|---|---|
Имя файла | /etc/network/interfaces | /etc/rc.conf | |
IPv4 | auto [if_alias] iface [if_alias] inet static address [ip] netmask 255.255.255.255 | /etc/sysconfig/network-scripts/ifcfg-[if_alias] DEVICE=[if_alias] IPADDR=[ip] NETMASK=255.255.255.255 BOOTPROTO=static ONBOOT=yes | ifconfig_[iface]_alias[N]="alias [ip] netmask 255.255.255.255" |
IPv6 | внутри секции iface [iface] inet6 static up /sbin/ifconfig [iface] inet6 add [ip]/[mask]"; | /etc/sysconfig/network-scripts/ifcfg-[iface] IPV6ADDR_SECONDARIES="[ip]/[mask]" | ifconfig_[iface]_alias[N]="inet6 alias [ip] prefixlen 128" |
Дополнительные IP-адреса
Когда сервер использует серый адрес, настроенный на публичный, можно добавить внешний IP-адрес, записав его в файле iplist.conf. Сам файл следует разместить в /usr/local/mgr5/etc/. Адреса, записанные в файле iplist.conf через перенос строки, появятся в списке IP-адресов.
Удаление IP-адресов
При удалении IP-адресов учитывается семейство удаляемого адреса. IP-адрес интерфейса не будет удалён, если этот адрес является основным адресом своего семейства на данном интерфейсе.
Для удаления IP-адреса с интерфейса выполняется системная команда:
Семейство | Linux | FreeBSD |
---|---|---|
IPv4 | ifconfig [if_alias] down | ifconfig [iface] delete [ip[ |
IPv6 | ifconfig [iface] del [ip]/128 | ifconfig [iface] inet6 [ip] delete |
После выполнения системной команды выполняется удаление информации об адресе из файлов конфигурации сервера.