Настройка сети в CentOS если провайдер сменил IP адрес сервера для BitrixVM
Интересная и поучительная история произошла со мной и с моими заказчиками. Проверяю работу всех серверов, сайтов и натыкаюсь на один недоступный проект - сервер выключен. Я не выключал, по словам заказчикам он даже не знает как это делать. Взлом? Ошибка? Непонятно. Зову фиксиков на помощь и начинаем новый рабочий день.
Запускаю сервер, работает 5 минут, дальше сайт снова отключается вместе с сервером. Интересно. Просмотрел все события логи, ничего подозрительного, хотя, у сервера вменился IP адрес. Как? Кто? Зачем? Пишу в техподдержку хостера с теми же вопросами, в ответ они говорят что проходит модернизация сети, мы вам IP и поменяли - дальше как хотите, решайте проблему самостоятельно, но любезно сообщили о том что у них есть платная поддержка и все выполнят за оверпрайс. Незаметно наступила ночь, с таким грузом ложится спать как то было неприятно - день впустую, но попробую начать действовать, а то сайт лежит сутки. К тому же с севера пропал драйвер сетевой карты, сеть упала. В общем и целом весь набор неприятностей. Доступа по SSH нет, сайт не работает, на сервер не попасть, воспользуемся VNC через браузер.
Первым делом узнаем существуют ли вообще драйвера для сетевой карты сервера. Команда для выполнения в терминале:
dmesg | grep eth
В идеале в ответе должно показать сообщение с текстом типа eth0 или другим соединением. Это будет говорить нам о том что все драйверы на своём месте. Значит лежащий сервер лежит не по этой причине. Идём дальше. Возможно дело в настройках сети и для её проверки необходимо выполнить ещё одну команду:
ifconfig
Если среди ответа вы не найдёте интерфейсы eth0, eth1, ..., необходимо проверить ещё раз действительно ли установлены все драйверы или, если всё таки драйверы установлены, остаётся поднять сетевой интерфейс. Да, это лунукс, и простые вещи тут выглядят сложно, но на самом деле поднимаем сетевой интерфейс командой:
ifconfig <имя-интерфейса> up
например:
ifconfig eth0 up
А отключается интерфейс так же легко, при помощи следующей команды:
ifconfig <имя-интерфейса> down
например:
ifconfig eth0 down
В моём варианте в ответ всё равно пришла ошибка, связанная с MAC адресом устройства. Лезем в конфигурацию параметров сети. Существует способ быстрой настройки через визуальный интерфейс, быстрые команды с параметрами, но я сразу расскажу как делать правильно, иначе после перезагрузки сервера всё придется делать заново, ведь введённые настройки не будут сохранены. На своих серверах я редко когда что-либо меняю в настройках, так как у меня удачно сконфигурированы сборки, не требующие дополнительных вмешательств. Но в случае когда сервер принадлежит клиенту и расположен он где-то там далеко, да и софт там используется специфический - я даже забываю где в линуксе расположены конфигурационные файлы. Гугление особой помощи не дало, странно, ведь настройки сети одно из главных действий и благодаря тому что в Интернете так мало информации я и решил написать этот пост.
Не буду томить и сразу скажу где лежат нужные нам файлы:
etc/sysconfig/network-scripts/<имя файла с нужным интерфейсом> - ip адрес, маска сети, шлюз, параметры DNS
/etc/resolv.conf - параметры DNS
/etc/sysconfig/network-scripts/route-ethX - маршруты
Два последних файла выглядели нормально, но первый, содержал в себе пустыне параметры, что и стало причиной нерабочего сервера, сети и потраченных нервов моих и заказчика. Ниже в таблице я опишу всевозможные параметры, которые нужно и необходимо указать, для того чтобы всё успешно работало.
Название параметра | Описание параметра | Значения | Пример использования |
---|---|---|---|
DEVICE | наименование интерфейса | eth0 eth1 ... |
device=eth0 device=eth1 |
BOOTPROTO | способ назначения IP | dhcp none static (пустое значение) |
bootproto=dhcp bootproto= bootproto=static bootproto=none |
HWADDR | MAC адрес | HWADDR="00:00:00:00:00:00" | |
NM_CONTROLLED | должен ли интерфейс управляться NetworkManager | "yes" "no" |
NM_CONTROLLED="yes" |
ONBOOT | должен ли этот интерфейс "подниматься" при запуске сетевой службы | "yes" "no" |
ONBOOT="yes" |
TYPE | тип интерфейса | "Ethernet" | TYPE="Ethernet" |
IPADDR | IP адрес интерфейса | IPADDR=192.168.1.3 | |
NETMASK | маска подсети интерфейса | NETMASK=255.255.255.0 | |
GATEWAY | шлюз интерфейса | GATEWAY=192.168.1.1 | |
DNS1 | 1-й DNS сервер интерфейса | DNS1=192.168.1.1 | |
DNS2 | 2-й DNS сервер интерфейса | DNS2=192.168.1.2 | |
DOMAIN | текущий домен | DOMAIN=MYDOMAIN.LOCAL |
Сохраняем файл, перезапускаем сетевой сервис командой:
service network restart
И наслаждаемся работой сайта на любимым Битрикс. Спросите меня а почему я всё делал не через BitrixVM? не спросите и правильно, ведь там так всё не удобно... Ниже представлены примеры конфигурационных файлов, только не забудьте туда добавить свои данные.
Пример файла /etc/sysconfig/network-scripts/ifcfg-eth0:
# название устройства:
DEVICE="eth0"
# в случае, если IP получаем автоматически:
#BOOTPROTO="dhcp"
# статический IP:
BOOTPROTO="none"
# MAC адрес сетевой карты (в этом случае привязка к MAC адресу, а не к положению в слоте и т.п.):
HWADDR="00:00:00:00:00:00"
NM_CONTROLLED="yes"
# инициализировать при загрузке (иначе нужен ifup):
ONBOOT="yes"
TYPE="Ethernet"
UUID="ffffffff-ffff-ffff-ffff-ffffffffffff"
IPADDR=192.168.1.3
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
Пример файла /etc/sysconfig/network-scripts/route-eth0:
192.168.5.50/24 via 192.168.0.2 dev eth0
Пример файла /etc/resolv.conf:
nameserver=192.168.1.5
nameserver=192.168.1.7
domain=mydomain.ru
Удачных вам рабочих дней, надеюсь эта статья поможет!