Работа с IP-адресами

Материал из ISPWiki
Перейти к: навигация, поиск

В состав модуля 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
маска подсети - модуль 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

После выполнения системной команды выполняется удаление информации об адресе из файлов конфигурации сервера.