Вопрос или проблема
Я хочу назначить статический IP-адрес для установленного на сервере локальной сети Debian Stretch.
Ранее я использовал /etc/network/interfaces
для этой цели, у сервера есть только один сетевой интерфейс, а в моей сети два роутера, сервер в основном подключен ко второму роутеру с подсетью 192.168.1.0, этот роутер не предоставляется моим интернет-провайдером. На случай, если мне потребуется подключить сервер к роутеру моего провайдера с подсетью 192.160.0.1, я хотел бы настроить сервер со статическим IP на каждой подсети следующим образом:
Роутер ISP: 192.168.0.250
2-й роутер: 192.168.1.250
Чтобы назначить статический IP на каждой подсети, я настроил dhcpcd.conf
следующим образом.
interface enp30s0
arping 192.168.0.1
arping 192.168.1.1
# Конфигурация статического IP 1 (по умолчанию):
profile 192.168.0.1
static ip_address=192.168.0.250/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.11 192.168.0.12 192.168.0.1
# Конфигурация статического IP 2:
profile 192.168.1.1
static ip_address=192.168.1.250/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.11 192.168.1.12 192.168.1.1
Странно, что это, похоже, работает, по крайней мере, когда сервер впервые включен, однако, если мне нужно перезагрузить роутер, при его перезагрузке сервер получает IP-адрес, который не является статическим IP, настроенным выше. Я не знаю, как решать эту проблему, любая помощь или указание в правильном направлении будут очень полезны.
В данный момент у меня не установлен dhcpcd
(я использую dhclient
), но, прочитав мануал по dhcpcd.conf для Debian 10, кажется, что когда вы используете arping
для выбора профиля статического IP, то имя профиля не должно быть IP-адресом, а аппаратным адресом (т.е. MAC-адресом) устройства, которое будет отвечать на ARP-пинг в каждом случае.
В соответствующем мануале для Debian Stretch пример использования arping
с profile
неясен: похоже, что ошибка в патче удалило некоторые строки из примера. В Debian 10 ошибка, похоже, была исправлена.
Когда вы перезагружаете роутер, по-видимому, проходит некоторое время после активации интерфейсов, прежде чем он сможет фактически ответить на ARP-запросы. Система Debian Stretch, вероятно, имеет процессор, который быстрее, чем у среднего роутера, поэтому она будет выполнять свои ARPing, как только увидит, что соединение установлено, и ARPing будет неудачным, так как роутер все еще находится в процессе загрузки.
Тогда dhcpcd
вернется к обычному DHCP, который имеет более длительные таймауты, и так он в конечном итоге получит ответ DHCP от роутера и использует его. Если вы не хотите этого, лучше всего, что вы можете сделать, вероятно, это использовать ключевое слово fallback
, чтобы выбрать самый распространенный случай и надеяться, что это правильный выбор.
Если вы можете настроить роутеры, вы также можете настроить каждый роутер так, чтобы он распознавал MAC-адрес сервера и всегда предоставлял ему желаемый IP-адрес, используя обычный DHCP. Это было бы обычным способом получения статических IP, используя DHCP, но я предполагаю, что вы не можете сделать этого по какой-то причине.
Таким образом, вам нужно что-то вроде этого:
interface enp30s0
# сначала самый часто используемый роутер, чтобы все происходило быстрее
arping 192.168.1.1 192.168.0.1
# Второй роутер 192.168.1.1 имеет MAC-адрес 11:22:33:44:55:66 в этом примере
# Роутер ISP 192.168.0.1 имеет MAC-адрес 22:33:44:55:66:77 в этом примере
# если arping не удался, следующим шагом обычно будет использование обычного DHCP.
# Предположим, что мы находимся на втором роутере в этом случае, так как это самый распространенный случай
fallback 11:22:33:44:55:66
# Конфигурация статического IP для второго роутера:
profile 11:22:33:44:55:66
static ip_address=192.168.1.250/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.11 192.168.1.12 192.168.1.1
# Конфигурация статического IP для роутера ISP:
profile 22:33:44:55:66:77
static ip_address=192.168.0.250/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.11 192.168.0.12 192.168.0.1
Ответ или решение
Использование dhcpcd для назначения статического IP-адреса на Debian
Если вам необходимо настроить статический IP-адрес для сервера на базе Debian Stretch, работающего в локальной сети с несколькими маршрутизаторами, вы на верном пути, выбрав dhcpcd
. Эта утилита позволяет гибко управлять конфигурацией сети, включая автоматические настройки для разных маршрутизаторов. Давайте подробно рассмотрим, как это сделать шаг за шагом.
Шаг 1: Установка dhcpcd
Прежде всего, убедитесь, что у вас установлена утилита dhcpcd
. Если вы ранее использовали dhclient
, вам нужно установить dhcpcd
, выполнив следующие команды:
sudo apt update
sudo apt install dhcpcd5
Шаг 2: Настройка конфигурации dhcpcd
Конфигурационный файл dhcpcd.conf
находится по пути /etc/dhcpcd.conf
. Откройте его для редактирования:
sudo nano /etc/dhcpcd.conf
В вашем случае, вам необходимо настроить два профиля для двух маршрутизаторов, чтобы получать статические IP-адреса.
Пример конфигурации:
interface enp30s0
# Пинг маршрутизаторов для определения, какой из них активен
arping 192.168.1.1 192.168.0.1
# Настройка профиля для второго маршрутизатора
profile 11:22:33:44:55:66
static ip_address=192.168.1.250/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.11 192.168.1.12 192.168.1.1
# Настройка профиля для маршрутизатора вашего провайдера
profile 22:33:44:55:66:77
static ip_address=192.168.0.250/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.11 192.168.0.12 192.168.0.1
# Параметр fallback для выбора наиболее частого маршрутизатора
fallback 11:22:33:44:55:66
Подробности конфигурации:
-
arping: Эта команда используется для проверки доступности маршрутизаторов. Порядок адресов имеет значение, так как
dhcpcd
попытается сначала выполнитьarping
на192.168.1.1
(второй маршрутизатор), а затем на192.168.0.1
(маршрутизатор провайдера). -
Профили: Каждому маршрутизатору соответствует свой профиль. Обратите внимание, что имя профиля — это MAC-адрес маршрутизатора, который отвечает на ARP-запросы.
-
fallback: Этот параметр определяет, какой профиль использовать в случае, если
arping
не смог установить контакт с маршрутизатором. В вашем случае, это будет самый частый маршрутизатор.
Шаг 3: Перезагрузка
После внесения изменений сохраните файл и выйдите из редактора. Теперь перезагрузите dhcpcd
, чтобы применить настройки:
sudo systemctl restart dhcpcd
Шаг 4: Тестирование конфигурации
Для проверки используйте команду ip a
, чтобы увидеть, какой IP-адрес у вашего интерфейса enp30s0
. Убедитесь, что он соответствует одной из настроенных статических адресов.
Заключение
С помощью вышеизложенных шагов вы сможете успешно настроить статические IP-адреса в Debian с использованием dhcpcd
, что позволит вашему серверу более надежно подключаться к двум разным маршрутизаторам. Если у вас возникнут дополнительные вопросы или необходимо будет внести изменения в конфигурацию, не стесняйтесь обращаться за помощью!