Как настраивать сеть на Linux
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
# Настройка сети в Linux
Настройка сети в Linux — фундаментальная задача для любого системного администратора или DevOps -инженера. Современные дистрибутивы используют два основных подхода: классический с помощью утилит ip, ifconfig (устаревшая) и конфигурационных файлов, а также динамический через систему NetworkManager (чаще в desktop-дистрибутивах). В серверной среде предпочтение отдается статической настройке через конфиги для обеспечения предсказуемости и воспроизводимости.
Основные сетевые утилиты и управление интерфейсами
Традиционно для просмотра и настройки использовался ifconfig, но в современных системах он считается устаревшим. Основной инструмент — пакет iproute2 и утилита ip.
Просмотр информации о сетевых интерфейсах
# Показать все интерфейсы с адресами и состоянием
ip addr show
# или кратко:
ip a
# Показать статистику по интерфейсам (пакеты, ошибки)
ip -s link show
# Показать таблицу маршрутизации
ip route show
Управление состоянием интерфейсов
# Включить интерфейс eth0
ip link set eth0 up
# Выключить интерфейс eth0
ip link set eth0 down
# Изменить MAC-адрес интерфейса (только при выключенном состоянии)
ip link set eth0 address 00:11:22:33:44:55
Настройка IP-адресации
Назначение IP -адреса может быть временным (до перезагрузки) или постоянным через конфигурационные файлы.
Временная настройка через ip command
# Назначить IPv4 адрес интерфейсу eth0
ip addr add 192.168.1.100/24 dev eth0
# Добавить дополнительный IP (alias)
ip addr add 192.168.1.101/24 dev eth0 label eth0:1
# Назначить IPv6 адрес
ip -6 addr add 2001:db8::1/64 dev eth0
# Удалить IP адрес
ip addr del 192.168.1.100/24 dev eth0
Постоянная настройка через конфигурационные файлы
Расположение конфигурационных файлов зависит от дистрибутива. Основные варианты:
1. Debian/Ubuntu (/etc/network/interfaces)
# Пример статической настройки для eth0
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
# Пример DHCP настройки
auto eth1
iface eth1 inet dhcp
После изменений применяем:
systemctl restart networking
# или
ifdown eth0 && ifup eth0
2. RHEL/CentOS/Fedora (/etc/sysconfig/network-scripts/ifcfg-<interface>)
# Файл /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
Применяем изменения:
systemctl restart network
3. Systemd-networkd (современные дистрибутивы)
Конфигурация в /etc/systemd/network/:
# /etc/systemd/network/10-eth0.network
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4
Активируем:
systemctl restart systemd-networkd
Настройка маршрутизации
Просмотр и управление таблицей маршрутизации
# Показать таблицу маршрутизации
ip route
# или
route -n
# Добавить маршрут по умолчанию
ip route add default via 192.168.1.1 dev eth0
# Добавить статический маршрут к конкретной сети
ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0
# Удалить маршрут
ip route del 10.0.0.0/8 via 192.168.1.254
Постоянная настройка маршрутов
В Debian/Ubuntu в файле /etc/network/interfaces:
up ip route add 10.0.0.0/8 via 192.168.1.254
В RHEL/CentOS в файле /etc/sysconfig/network-scripts/route-eth0:
10.0.0.0/8 via 192.168.1.254
Настройка DNS
Файл /etc/resolv.conf определяет DNS -серверы:
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
Важно: в системах с NetworkManager или systemd-resolved этот файл может быть автоматически перезаписан. Для постоянной настройки DNS прописывайте серверы в конфигах интерфейсов (как показано выше).
Полезные диагностические команды
ping— проверка доступности хостаtracerouteилиtracepath— трассировка маршрутаmtr— комбинированный инструмент (ping + traceroute)netstatилиss— информация о сетевых соединениях и портахdigилиnslookup— DNS -запросыtcpdump— сниффинг сетевого трафика
Безусловно важные моменты для DevOps
- Идемпотентность — конфигурация сети должна быть воспроизводимой. Используйте инструменты управления конфигурацией (Ansible, Puppet, Chef) для настройки сети на всех серверах одинаково.
- Проверка связности — автоматизируйте проверку сетевых настроек в скриптах развертывания.
- Понимание netplan — в Ubuntu начиная с 17.10 используется netplan (YAML -конфиги в
/etc/netplan/). Обязательно изучите его синтаксис. - Именование интерфейсов — современные системы используют Predictable Network Interface Names (enp3s0, ens1 и т.д.), что исключает проблемы с перестановкой сетевых карт.
- Виртуальные интерфейсы — умение настраивать VLAN (802.1q), bonding/teaming, bridge -интерфейсы критически важно в облачных и виртуализированных средах.
Пример Ansible-плейбука для настройки сети:
- name: Configure network
hosts: servers
tasks:
- name: Copy network configuration
template:
src: ifcfg-eth0.j2
dest: /etc/sysconfig/network-scripts/ifcfg-eth0
notify: restart network
handlers:
- name: restart network
systemd:
name: network
state: restarted
Настройка сети в Linux требует глубокого понимания сетевых концепций и особенностей конкретного дистрибутива. В продакшн-среде всегда тестируйте изменения в изолированном окружении, имейте план отката и используйте console доступ на случай, если сетевая настройка окажется некорректной и вы потеряете удаленный доступ к серверу.