Hetzner - DokuWiki

Netzkonfiguration CentOS/ru

Inhaltsverzeichnis

Корректная настройка IPv4 адресов в CentOS/Fedora/RHEL

Сервер в Hetzner может обмениваться трафиком напрямую только со своим шлюзом и с локально настроенными IP-адресами. Все остальные пакеты должны маршрутизироваться через шлюз по умолчанию. Также, нужно настроить сеть /32 (из соображений сетевой безопасности).

Некорректная конфигурация (без сети /32) часто остаётся незамеченной, так как случаи, когда необходим контакт с IP-адресами из одной подсети, достаточно редки. Однако, без настройки, приведённой ниже, некоторые хосты остаются вне досягаемости!

Важно: конфигурация через DHCP также некорректна в этом смысле, так как в этом случае возможен только «нормальный» вариант, а не точка-точка (маска 255.255.255.255 не работает и маршруты не назначены, что делает подключение к сети невозможным).

Настройка соединения точка-точка

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=<MAC-адрес>
ONBOOT=yes
BOOTPROTO=static
IPADDR=<IP-адрес>
NETMASK=255.255.255.255
# потенциальные дополнительные записи о IPv6 безвредны

Настройка маршрутов

Настройка /etc/sysconfig/network-scripts/route-eth0

ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=<IP-адрес шлюза>

После перезапуска сетевой службы (например, при помощи команды «service network restart») все маршруты должны быть правильно настроены.

Возможные источники ошибок

Если после применения вышеупомянутых настроек сервер стал недоступен, необходимо проверить, установлена ли переменная «GATEWAYDEV» в значение /etc/sysconfig/network. Это может быть одной из причин недоступности, при этом после перезапуска сетевой службы выводится сообщение об ошибке "RTNETLINK answers: file exists".

Дополнительные IP-адреса (хост-система)

Настройка одиночного дополнительного IPv4 адреса

В настоящее время можно получить до трёх одиночных дополнительных IPv4 адресов. Если нужно большее количество, вы можете заказать подсеть.

Временно настроить IP-адрес можно двумя способами:

1. ifconfig eth0:1 10.4.2.1 netmask 255.255.255.255
или
2. ip addr add 10.4.2.1/32 dev eth0

CentOS

Постоянная конфигурация возможна только через интерфейсы алиасы (eth0:1, eth0:2 и т.д.). Для каждого IP-адреса должен быть создан файл:

/etc/sysconfig/network-scripts/ifcfg-eth0:1
/etc/sysconfig/network-scripts/ifcfg-eth0:2

Эти файлы должны содержать следующую информацию:

DEVICE=eth0:1
BOOTPROTO=none
ONBOOT=yes
IPADDR=<IP-адрес>
NETMASK=255.255.255.255

Наконец, нужно выполнить «service network restart» или перезапустить сервер («reboot»).

Обратите внимание: эти настройки не походят для использоваться IP-адресов на виртуальных машинах.

Fedora

Для постоянной конфигурации IP-адреса следует добавить в конфигурационный файл:

 # cat /etc/sysconfig/network-scripts/ifcfg-eth0
 DEVICE="eth0"
 ...
 IPADDR=192.0.2.1
 NETMASK=255.255.255.240
 IPADDR0=192.0.2.10 # дополнительный IP-адрес
 PREFIX0=28
 IPADDR1=192.0.2.11
 PREFIX1=28
 IPADDR2=...

Настройка IP-подсетей

Подсети маршрутизируются на основной IP-адрес сервера. Как правило, первый (адрес сети) и последний (широковещательный) адреса не могут быть использованы. Соответственно, в подсети /29 для использования доступно шесть адресов.

Подсеть /29, состоящая из восьми адресов будет выглядеть так:

aaa.aaa.aaa.aaa (IP-адрес сети)
bbb.bbb.bbb.bbb
ccc.ccc.ccc.ccc
ddd.ddd.ddd.ddd
eee.eee.eee.eee
fff.fff.fff.fff
ggg.ggg.ggg.ggg
hhh.hhh.hhh.hhh (широковещательный IP-адрес)

IP-адреса от «b» до «g» могут быть использованы. Как альтернатива, можно создать файл:

/etc/sysconfig/network-scripts/ifcfg-eth0-range0

IPADDR_START=<первый используемый IP-адрес>
IPADDR_END=<последний используемый IP-адрес>
BROADCAST=<широковещательный IP-адрес вашей сети>
CLONENUM_START=0
NETMASK=255.255.255.248 # маска для более крупных сетей будет другой

Перезапустите службу сети с помощью команды «service network restart».

Настройка дополнительной подсети для виртуализации

Для использования IP-адресов на виртуальных машинах потребуется особая конфигурация. Существует много возможных вариантов. Один из самых простых предполагает настройку моста с помощью одного IP-адреса подсети, который служит шлюзом для всех машин в подсети.

Установка утилиты bridge-utils

yum install bridge-utils

/etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=bbb.bbb.bbb.bbb
NETMASK=255.255.255.248 # укажите соответствующую маску. Это пример для подсети /29
STP=off
DELAY=0

Настройка IPv6 подсети

Для назначения IPv6 адреса на интерфейс, добавьте следующие строки в файл /etc/sysconfig/network-scripts/ifcfg-eth0:

IPV6INIT=yes
IPV6ADDR=<дополнительный IPv6 адрес>/<префикс>
IPV6_DEFAULTGW=fe80::1
IPV6_DEFAULTDEV=eth0

В Hetzner обычно назначается префикс /64.

Опционально: для добавления дополнительного IPv6 адреса на интерфейс добавьте следующую строку в файл /etc/sysconfig/network-scripts/ifcfg-eth0:

IPV6ADDR_SECONDARIES=<дополнительный IPv6 адрес>/<префикс>

Обратите внимание: таким образом можно добавить более одного дополнительного адреса. При этом адреса отделяются друг от друга пробелом.

Дополнительные IP-адреса (виртуализация)

С виртуализацией дополнительные IP-адреса используются через гостевую систему. Для их доступности из сети Интернет, на хост-системе необходимо корректно настроить пересылку пакетов. Существуют два способа это сделать для дополнительных одиночных IP-адресов: маршрутизация и сетевой мост.

Маршрутизация (brouter)

В этой схеме пакеты маршрутизируются. В добавок к eth0 нужно настроить мост с почти такими же значениями (без шлюза) как у eth0.

Хост:

# /etc/sysconfig/network-scripts/ifcfg-eth0 (стандартная установка Hetzner)
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=<основной IP-адрес>
IPV6INIT=yes
IPV6ADDR=2a01:4f8:XXX:YYYY::2/128
IPV6_DEFAULTGW=fe80::1
IPV6_DEFAULTDEV=eth0
NETMASK=255.255.255.255
SCOPE="peer <шлюз по умолчанию>"
# /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
TYPE="Bridge"
BOOTPROTO=static
IPADDR=<основной IP-адрес>
NETMASK=255.255.255.255
IPV6INIT=yes
IPV6ADDR=2a01:4f8:XXX:YYYY::2/64
STP=off
DELAY=0

В случае стандартной установки операционной системы с помощью скрипта installimage настройки eth0 для IPv4 остаются неизменными (шлюз по умолчанию прописывается в файле «route-eth0». Смотрите раздел настройка маршрутов). Для IPv6 префикс уменьшается с /64 до /128. Настройка маршрутов хоста для дополнительного IPv4 адреса делается через дополнительный конфигурационный файл:

# /etc/sysconfig/network-scripts/route-br0
ADDRESS0=<дополнительный IP-адрес>
NETMASK0=255.255.255.255

Дальнейшие маршруты могут быть добавлены таким же способом через ADDRESS1, NETMASK1, ADDRESS2, NETMASK2, и т.д. Для IPv6 дальнейшей настройки не требуется.

Гостевая система:

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=<дополнительный IP-адрес>
NETMASK=255.255.255.255
SCOPE="peer <основной IP-адрес>"
IPV6INIT=yes
IPV6ADDR=2a01:4f8:XXX:YYYY::4/64
IPV6_DEFAULTGW=2a01:4f8:XXX:YYYY::2

Схема с сетевым мостом

В схеме с сетевым мостом пакеты отправляются непосредственно в физическую сеть. Гостевая система ведёт себя так как будто она независима. Для корректной работы моста требуется, чтобы MAC адрес виртуальной машины был виден снаружи. Для одиночного дополнительного IP-адреса такой MAC адрес можно получить через панель Robot, и, потом назначить его сетевой карте виртуального компьютера.

# /etc/sysconfig/network-scripts/ifcfg-eth0
# device: eth0
DEVICE=eth0
BOOTPROTO=static
HWADDR=<MAC физической сетевой карты>
ONBOOT=yes
BRIDGE=br0
# /etc/sysconfig/network-scripts/ifcfg-br0 (pointopoint, Hetzner Standard)
DEVICE=br0
TYPE="Bridge"
BOOTPROTO=static
IPADDR=<основной IP-адрес>
NETMASK=255.255.255.255
SCOPE="peer <шлюз основного IP-адреса>"
ONBOOT=yes
DELAY=0

Шлюз по умолчанию задаётся в файле route-eth0. Просто переименуйте его в route-br0


Обратите внимание: при такой настройке ограничено использование IPv6. IPv6 подсеть может быть маршрутизирована через основной IP-адрес сервер или через один из дополнительных IP-адресов (если говорить точнее: через IPv6 link local адрес, сгенерированный для MAC адреса).



© 2020. Hetzner Online GmbH. Alle Rechte vorbehalten.