Title: πŸ“ netplan β€” Network Configuration Group: Network Icon: πŸ“ Order: 21 # Netplan β€” Network Configuration for Ubuntu Netplan is the default network configuration abstraction layer used by Ubuntu 17.10+ and other modern Ubuntu-based distributions. It uses YAML configuration files and can render configurations for NetworkManager or systemd-networkd as backends. ## Table of Contents - [Installation & Configuration](#installation--configuration) - [Core Management](#core-management) - [Static & DHCP Configuration](#static--dhcp-configuration) - [Advanced Networking](#advanced-networking) - [WiFi Configuration](#wifi-configuration) - [Troubleshooting & Tools](#troubleshooting--tools) - [Migration Guide](#migration-guide) - [Comparison Tables](#comparison-tables) --- ## Installation & Configuration ### Install Netplan / Установка Netplan ```bash sudo apt update && sudo apt install -y netplan.io # Install netplan / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ netplan ``` ### Configuration Paths / ΠŸΡƒΡ‚ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ - **Main config directory:** `/etc/netplan/` - **Common config file:** `/etc/netplan/01-netcfg.yaml` or `/etc/netplan/50-cloud-init.yaml` - **Rendered configs:** `/run/netplan/` (read-only) > [!IMPORTANT] > Netplan files must have `.yaml` extension and use valid YAML syntax (indentation with spaces, not tabs). ### Backend Selection / Π’Ρ‹Π±ΠΎΡ€ бэкСнда `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: networkd # Use systemd-networkd / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ systemd-networkd # renderer: NetworkManager # Use NetworkManager / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ NetworkManager ``` --- ## Core Management / ОсновноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ### Apply Configuration / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ```bash sudo netplan apply # Apply netplan config / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ sudo netplan --debug apply # Apply with debug output / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ sudo netplan try # Try config with auto-rollback / ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ ``` > [!TIP] > Use `netplan try` in production to test changes safely. It will revert automatically after timeout if you don't confirm. ### Validate Configuration / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ```bash sudo netplan generate # Generate backend config / Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ бэкСнда sudo netplan --debug generate # Generate with debug / Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ ``` ### View Current Configuration / ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ```bash cat /etc/netplan/*.yaml # View all netplan configs / ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ sudo netplan get # Show merged config / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ``` --- ## Static & DHCP Configuration ### DHCP Configuration / ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ DHCP `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: networkd ethernets: enp0s3: # Replace with your interface / Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° ваш интСрфСйс dhcp4: true dhcp6: false ``` ```bash sudo netplan apply # Apply configuration / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ``` ### Static IP Configuration / БтатичСский IP `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: networkd ethernets: enp0s3: addresses: - 192.168.1.100/24 # Static IP / БтатичСский IP routes: - to: default via: 192.168.1.1 # Gateway / Шлюз nameservers: addresses: [8.8.8.8, 8.8.4.4] # DNS servers / DNS сСрвСры ``` ### Multiple IP Addresses / НСсколько IP адрСсов `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 ethernets: enp0s3: addresses: - 192.168.1.100/24 - 192.168.1.101/24 # Second IP / Π’Ρ‚ΠΎΡ€ΠΎΠΉ IP - 2001:db8::1/64 # IPv6 / IPv6 адрСс ``` --- ## Advanced Networking / ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ настройки ### Bridge Configuration / Настройка моста `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: false bridges: br0: interfaces: [enp0s3] # Bridge member / Π§Π»Π΅Π½ моста addresses: [192.168.1.100/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8] parameters: stp: true # Enable Spanning Tree / Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ STP forward-delay: 4 ``` ```bash sudo netplan apply # Apply bridge config / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ моста ``` ### Bond (Link Aggregation) / ОбъСдинСниС ΠΊΠ°Π½Π°Π»ΠΎΠ² `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: false enp0s8: dhcp4: false bonds: bond0: interfaces: [enp0s3, enp0s8] # Bond members / Π§Π»Π΅Π½Ρ‹ bond addresses: [192.168.1.100/24] routes: - to: default via: 192.168.1.1 parameters: mode: active-backup # Bond mode / Π Π΅ΠΆΠΈΠΌ bond primary: enp0s3 # Primary interface / Основной интСрфСйс mii-monitor-interval: 100 ``` ### VLAN Configuration / Настройка VLAN `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: false vlans: vlan10: id: 10 # VLAN ID / VLAN ID link: enp0s3 # Parent interface / Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс addresses: [192.168.10.100/24] ``` --- ## WiFi Configuration / Настройка WiFi ### Basic WiFi / Базовая настройка WiFi `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: NetworkManager wifis: wlp2s0: # WiFi interface / WiFi интСрфСйс access-points: "": password: "" dhcp4: true ``` ### WiFi with Multiple Networks / WiFi с нСсколькими сСтями `/etc/netplan/01-netcfg.yaml` ```yaml network: version: 2 renderer: NetworkManager wifis: wlp2s0: access-points: "Home_WiFi": password: "" "Office_WiFi": password: "" dhcp4: true ``` > [!NOTE] > WiFi configuration typically requires NetworkManager as the renderer. systemd-networkd has limited WiFi support. --- ## Troubleshooting & Tools / УстранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ ### Common Issues / Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ```bash # YAML syntax errors / Ошибки синтаксиса YAML sudo netplan --debug generate # Check for YAML errors / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ошибки YAML # Configuration not applying / ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π½Π΅ примСняСтся sudo netplan apply sudo systemctl restart systemd-networkd # Restart backend / ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ бэкСнд # OR for NetworkManager: sudo systemctl restart NetworkManager # Revert to previous config / Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ sudo cp /etc/netplan/01-netcfg.yaml.bak /etc/netplan/01-netcfg.yaml sudo netplan apply ``` ### Debug Mode / Π Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ```bash sudo netplan --debug apply # Verbose apply / ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ sudo networkctl status # Check systemd-networkd status / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ статус journalctl -u systemd-networkd -f # Follow networkd logs / Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ ``` ### Backup Configuration / Бэкап ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ```bash sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak # Backup / Бэкап ``` --- ## Migration Guide / Руководство ΠΏΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ### Production Runbook: Migrate from ifupdown to netplan / ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ с ifupdown Π½Π° netplan 1. **Backup current configuration / Бэкап Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ** ```bash sudo cp /etc/network/interfaces /etc/network/interfaces.bak # Backup old config / Бэкап старой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ip addr show > /tmp/current-network-config.txt # Save current state / Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ``` 2. **Create netplan configuration / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ netplan** ```bash sudo nano /etc/netplan/01-netcfg.yaml # Create new config / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ``` 3. **Test the configuration / Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ** ```bash sudo netplan try # Try with auto-rollback / ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ с Π°Π²Ρ‚ΠΎΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ ``` 4. **Apply permanently / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ постоянно** ```bash sudo netplan apply # Apply configuration / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ``` 5. **Verify connectivity / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ связь** ```bash ip addr show # Check IP addresses / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ IP адрСса ping -c 3 8.8.8.8 # Test connectivity / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ связь ``` 6. **Disable old ifupdown (optional) / ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ старый ifupdown (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)** ```bash sudo systemctl disable networking # Disable ifupdown / ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ifupdown ``` --- ## Comparison Tables / Π’Π°Π±Π»ΠΈΡ†Ρ‹ сравнСния ### Netplan Renderers Comparison / Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ бэкСндов Netplan | Renderer | Best For | WiFi Support | Desktop Integration | | :--- | :--- | :--- | :--- | | **systemd-networkd** | Servers, minimal systems / Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ систСмы | Limited / ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ | No / НСт | | **NetworkManager** | Desktops, laptops / ДСсктопы, Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ | Full / Полная | Yes / Π”Π° | ### Bond Modes / Π Π΅ΠΆΠΈΠΌΡ‹ Bond | Mode | Description (EN / RU) | Use Case | | :--- | :--- | :--- | | **balance-rr** | Round-robin / ЦикличСская балансировка | Maximum throughput | | **active-backup** | Failover only / Волько ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ | Simple HA, no switch config | | **802.3ad** | LACP aggregation / LACP агрСгация | Enterprise, switch support required |