Network_Configuration_Linux
Настройка сети в Linux
Настройка сети Linux включает управление интерфейсами, IP-адресами, шлюзами, DNS, маршрутами, VLAN и Wi‑Fi. Команды ip удобны для диагностики и временных изменений. Постоянные настройки выполняют через NetworkManager, Netplan, systemd-networkd или ifupdown.
При изменении сети удалённого сервера не закрывайте текущую SSH-сессию, подготовьте консольный доступ и способ отката.
Основные понятия
| Понятие | Значение |
|---|---|
| Интерфейс | Физическое или виртуальное сетевое устройство: enp1s0, wlp2s0, lo, VLAN |
| IP-адрес | Адрес узла, например 192.168.10.20/24 |
| Шлюз | Маршрутизатор для доступа к другим сетям |
| DNS | Преобразование доменных имён в IP-адреса |
| DHCP | Автоматическая выдача адреса, шлюза и DNS |
| VLAN | Логическая сеть с тегом IEEE 802.1Q |
| Маршрут | Правило выбора интерфейса и следующего шлюза |
Современные имена интерфейсов обычно выглядят как enp1s0, ens18, eno1 и wlp2s0. Имена eth0 и wlan0 также встречаются.
Как определить сетевой менеджер
systemctl is-active NetworkManager
systemctl is-active systemd-networkd
nmcli general status
networkctl statusТипичные варианты:
- NetworkManager — рабочие станции, Fedora/RHEL и многие серверы;
- Netplan — Ubuntu; формирует настройки для NetworkManager или systemd-networkd;
- systemd-networkd — серверы и минимальные системы;
- ifupdown — традиционная конфигурация Debian;
- wicked — некоторые системы SUSE/openSUSE.
Не настраивайте один интерфейс одновременно несколькими менеджерами.
Просмотр текущей конфигурации
ip -brief link # интерфейсы и состояние
ip -brief address # IP-адреса
ip route # маршруты IPv4
ip -6 route # маршруты IPv6
ip route get 8.8.8.8 # выбранный маршрут до адреса
ip neigh # соседи ARP/NDP
ss -tulpn # слушающие TCP/UDP-сокетыСтатистика и физическое соединение:
ip -s link show dev enp1s0
sudo ethtool enp1s0
sudo ethtool -i enp1s0Временная настройка через iproute2
Настройки, заданные командой ip, обычно исчезают после перезагрузки.
Управление интерфейсом и адресом
sudo ip link set dev enp1s0 up
sudo ip link set dev enp1s0 down
sudo ip address add 192.168.10.20/24 dev enp1s0
sudo ip address del 192.168.10.20/24 dev enp1s0ip address flush dev enp1s0 удаляет все адреса интерфейса и может разорвать удалённое соединение.
Шлюз и маршруты
sudo ip route add default via 192.168.10.1 dev enp1s0
sudo ip route replace default via 192.168.10.1 dev enp1s0 metric 100
sudo ip route add 10.20.0.0/16 via 192.168.10.254 dev enp1s0
sudo ip route del 10.20.0.0/16 via 192.168.10.254 dev enp1s0При нескольких подходящих маршрутах сначала учитывается наиболее точный префикс, затем среди сопоставимых маршрутов — метрика. Обычно меньшее значение метрики означает более предпочтительный маршрут.
NetworkManager: nmcli и nmtui
NetworkManager управляет профилями соединений. Имя профиля может не совпадать с именем интерфейса.
nmcli device status
nmcli connection show
nmcli connection show --active
sudo nmtuiEthernet с DHCP
sudo nmcli connection add type ethernet ifname enp1s0 \
con-name lan-dhcp ipv4.method auto ipv6.method auto
sudo nmcli connection up lan-dhcpСтатический IPv4, шлюз и DNS
sudo nmcli connection add type ethernet ifname enp1s0 \
con-name lan-static ipv4.method manual \
ipv4.addresses 192.168.10.20/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns "192.168.10.53 1.1.1.1" \
ipv6.method disabled
sudo nmcli connection up lan-staticИзменение профиля и добавление маршрута:
sudo nmcli connection modify lan-static \
ipv4.addresses 192.168.10.25/24 \
+ipv4.routes "10.20.0.0/16 192.168.10.254 100"
sudo nmcli connection up lan-staticНе принимать DNS от DHCP:
sudo nmcli connection modify lan-dhcp \
ipv4.ignore-auto-dns yes ipv4.dns "192.168.10.53 1.1.1.1"Netplan
Netplan читает YAML-файлы из /etc/netplan/. В YAML используются пробелы, а не табуляция.
DHCP
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: true
dhcp6: trueСтатический адрес, DNS и маршруты
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: false
addresses:
- 192.168.10.20/24
nameservers:
search:
- example.internal
addresses:
- 192.168.10.53
- 1.1.1.1
routes:
- to: default
via: 192.168.10.1
metric: 100
- to: 10.20.0.0/16
via: 192.168.10.254Проверка и применение:
sudo netplan generate
sudo netplan try
sudo netplan applyДля удалённого сервера предпочтителен netplan try: без подтверждения система попытается вернуть прежнюю конфигурацию.
systemd-networkd
Файлы находятся в /etc/systemd/network/:
.network— адреса, DHCP, DNS и маршруты;.netdev— VLAN, bridge, bond и другие виртуальные устройства;.link— параметры канального уровня и именование.
DHCP
Файл /etc/systemd/network/20-wired.network:
[Match]
Name=enp1s0
[Network]
DHCP=yesСтатический адрес, DNS и маршрут
[Match]
Name=enp1s0
[Network]
Address=192.168.10.20/24
Gateway=192.168.10.1
DNS=192.168.10.53
DNS=1.1.1.1
Domains=example.internal
[Route]
Destination=10.20.0.0/16
Gateway=192.168.10.254
Metric=100Применение:
sudo networkctl reload
sudo networkctl reconfigure enp1s0
networkctl status enp1s0ifupdown
Традиционные файлы Debian: /etc/network/interfaces и /etc/network/interfaces.d/.
DHCP
auto enp1s0
iface enp1s0 inet dhcpСтатическая конфигурация
auto enp1s0
iface enp1s0 inet static
address 192.168.10.20/24
gateway 192.168.10.1
dns-nameservers 192.168.10.53 1.1.1.1
dns-search example.internal
up ip route add 10.20.0.0/16 via 192.168.10.254 dev enp1s0
down ip route del 10.20.0.0/16 via 192.168.10.254 dev enp1s0sudo ifdown enp1s0 && sudo ifup enp1s0Не выполняйте это по SSH без резервного доступа. При наличии ifupdown2 можно использовать sudo ifreload -a.
VLAN
VLAN создаёт логические сети поверх физического интерфейса. VLAN ID должен быть разрешён на порту коммутатора. В примерах используется VLAN 100 поверх enp1s0.
Временно через ip
sudo ip link add link enp1s0 name enp1s0.100 type vlan id 100
sudo ip link set enp1s0 up
sudo ip link set enp1s0.100 up
sudo ip address add 192.168.100.20/24 dev enp1s0.100
ip -d link show enp1s0.100Удаление:
sudo ip link delete enp1s0.100VLAN через NetworkManager
sudo nmcli connection add type vlan con-name vlan100 \
ifname enp1s0.100 dev enp1s0 id 100 \
ipv4.method manual ipv4.addresses 192.168.100.20/24 \
ipv4.gateway 192.168.100.1 ipv4.dns "192.168.100.53"
sudo nmcli connection up vlan100VLAN через Netplan
network:
version: 2
renderer: networkd
ethernets:
enp1s0: {}
vlans:
vlan100:
id: 100
link: enp1s0
addresses:
- 192.168.100.20/24
nameservers:
addresses:
- 192.168.100.53
routes:
- to: default
via: 192.168.100.1VLAN через systemd-networkd
/etc/systemd/network/10-vlan100.netdev:
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100/etc/systemd/network/20-enp1s0.network:
[Match]
Name=enp1s0
[Network]
VLAN=vlan100/etc/systemd/network/30-vlan100.network:
[Match]
Name=vlan100
[Network]
Address=192.168.100.20/24
Gateway=192.168.100.1
DNS=192.168.100.53Если физический интерфейс служит только trunk-портом, ему обычно не назначают IP-адрес.
Wi‑Fi
Проверка интерфейса и блокировки радиомодуля:
ip -brief link
rfkill list
sudo rfkill unblock wifiWi‑Fi через NetworkManager
nmcli radio wifi on
nmcli device wifi rescan
nmcli device wifi list
sudo nmcli --ask device wifi connect "Office-WiFi" ifname wlp2s0--ask безопаснее передачи пароля аргументом, который может сохраниться в истории shell.
Скрытая сеть:
sudo nmcli connection add type wifi ifname wlp2s0 \
con-name hidden-wifi ssid "Hidden-Network"
sudo nmcli connection modify hidden-wifi \
802-11-wireless.hidden yes wifi-sec.key-mgmt wpa-psk \
ipv4.method auto
sudo nmcli --ask connection up hidden-wifiWi‑Fi через wpa_supplicant
wpa_passphrase "Office-WiFi" | \
sudo tee /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf >/dev/null
sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf
sudo wpa_supplicant -B -i wlp2s0 \
-c /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf
sudo dhclient wlp2s0wpa_passphrase запросит пароль интерактивно. Не запускайте отдельный wpa_supplicant, если интерфейсом уже управляет NetworkManager.
DNS
/etc/resolv.conf
Традиционный формат:
search example.internal
nameserver 192.168.10.53
nameserver 1.1.1.1Во многих системах этот файл создаётся автоматически. Сначала проверьте, кто им управляет:
ls -l /etc/resolv.conf
cat /etc/resolv.confsystemd-resolved
resolvectl status
resolvectl dns
resolvectl domain
resolvectl query example.comВременное назначение DNS и search domain:
sudo resolvectl dns enp1s0 192.168.10.53 1.1.1.1
sudo resolvectl domain enp1s0 example.internalSplit DNS для внутренней зоны:
sudo resolvectl dns enp1s0 192.168.10.53
sudo resolvectl domain enp1s0 '~example.internal'Очистка кеша:
sudo resolvectl flush-cachesПроверка системного разрешения имён:
getent hosts example.com
dig example.comgetent использует системный NSS, поэтому лучше отражает результат, который получат обычные приложения.
/etc/hosts
127.0.0.1 localhost
192.168.10.20 app01.example.internal app01Порядок источников задаётся в /etc/nsswitch.conf, например:
hosts: files dnsСтатическая и policy-маршрутизация
Маршрут к сети и отдельному узлу:
sudo ip route add 10.20.0.0/16 via 192.168.10.254 dev enp1s0
sudo ip route add 10.20.5.10/32 via 192.168.10.254 dev enp1s0Просмотр выбранного пути:
ip route get 10.20.5.10При нескольких провайдерах или исходных адресах может потребоваться policy routing:
sudo ip route add default via 192.168.20.1 dev enp2s0 table 100
sudo ip rule add from 192.168.20.20/32 table 100
ip rule show
ip route show table 100Эти изменения временные; сохраняйте их средствами активного сетевого менеджера.
IP forwarding
Если хост должен маршрутизировать пакеты между интерфейсами:
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1Постоянно в /etc/sysctl.d/90-router.conf:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1sudo sysctl --systemFirewall также должен разрешать транзитный трафик. NAT требуется не во всех сценариях маршрутизации.
Диагностика по уровням
Интерфейс и адрес
ip -brief link
ip -brief address
sudo ethtool enp1s0Шлюз и внешний IP
ping -c 4 192.168.10.1
ip neigh show dev enp1s0
ping -c 4 1.1.1.1DNS
getent hosts example.com
resolvectl query example.com
dig @192.168.10.53 example.comМаршрут и TCP
ip route get 1.1.1.1
tracepath example.com
nc -vz example.com 443
curl -v https://example.com/Анализ трафика
sudo tcpdump -ni enp1s0
sudo tcpdump -ni enp1s0 port 53
sudo tcpdump -eni enp1s0 vlan 100Журналы
journalctl -u NetworkManager -b
journalctl -u systemd-networkd -b
journalctl -u systemd-resolved -b
journalctl -k -bТипичные проблемы
NO-CARRIER
Проверьте кабель, порт коммутатора, виртуальный адаптер, драйвер и согласование скорости.
IP доступен, доменное имя — нет
Проверьте /etc/resolv.conf, resolvectl status, доступность DNS-сервера и результат getent hosts.
Конфигурация перезаписывается
Вероятный источник — NetworkManager, Netplan, systemd-networkd, DHCP-клиент, cloud-init или система управления конфигурацией. Изменяйте исходную конфигурацию управляющего компонента, а не сгенерированный файл.
VLAN не работает
ip -d link show
ip address show dev enp1s0.100
sudo tcpdump -eni enp1s0 vlan 100Убедитесь, что VLAN разрешён на коммутаторе и режим порта соответствует схеме сети.
Несколько маршрутов по умолчанию
ip route show default
ip route get 8.8.8.8Проверьте метрики, таблицы маршрутизации и возможную асимметрию трафика.
Безопасное применение изменений
Перед настройкой сохраните состояние:
ip address show
ip route show
ip rule show
resolvectl status 2>/dev/null || trueРекомендации:
- Не закрывайте рабочую SSH-сессию до проверки новой конфигурации.
- Используйте консоль гипервизора, IPMI, iDRAC или iLO как резервный доступ.
- Для Netplan применяйте
netplan try. - Создавайте копии конфигурационных файлов.
- Проверяйте шлюз, DNS, SSH, маршруты и прикладные сервисы.
- Учитывайте firewall, настройки VLAN на коммутаторе и облачные security groups.
Краткая памятка
| Задача | Команда |
|---|---|
| Интерфейсы | ip -brief link |
| IP-адреса | ip -brief address |
| Маршруты | ip route |
| Маршрут до узла | ip route get 8.8.8.8 |
| Соседи ARP/NDP | ip neigh |
| Профили NetworkManager | nmcli connection show |
| Wi‑Fi-сети | nmcli device wifi list |
| Проверка Netplan | sudo netplan generate |
| Netplan с откатом | sudo netplan try |
| Состояние networkd | networkctl status |
| DNS | resolvectl status |
| Системный DNS-запрос | getent hosts example.com |
| Открытые порты | ss -tulpn |
| Трассировка | tracepath example.com |
| Захват пакетов | sudo tcpdump -ni enp1s0 |
Рекомендации
- Используйте современные
ipиssвместо устаревшихifconfig,routeиnetstat. - Храните постоянные настройки только в реально используемом сетевом менеджере.
- Документируйте IP-адреса, VLAN, шлюзы, DNS, маршруты и метрики.
- Не редактируйте автоматически создаваемый
/etc/resolv.confбез понимания его владельца. - При нескольких интерфейсах учитывайте метрики, policy routing и асимметричную маршрутизацию.
- Ограничивайте доступ к файлам с паролями Wi‑Fi.