Основные команды nmcli:
Просмотр сетевых интерфейсов:
nmcli device status
Просмотр всех подключений (профилей):
nmcli connection show
Управление проводными соединениями (Ethernet, eth0):
nmcli con add type ethernet ifname eth0 con-name eth0-dhcp ipv4.method auto
nmcli con up eth0-dhcp
Подключение со статическим IP:
nmcli con add type ethernet ifname eth0 con-name eth0-static \
ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli con modify eth0-static ipv4.dns "8.8.8.8,8.8.4.4"
nmcli con up eth0-static
Отключение/удаление соединения:
nmcli con down eth0-static # Отключить
nmcli con delete eth0-static # Удалить профиль
Управление Wi-Fi (wlan0):
Поиск доступных Wi-Fi сетей:
nmcli device wifi list
Подключение к Wi-Fi:
nmcli device wifi connect "MyWiFi" password "mypassword"
Подключение к Wi-Fi через создание профиля:
nmcli con add type wifi ifname wlan0 con-name mywifi ssid "MyWiFi"
nmcli con modify mywifi wifi-sec.key-mgmt wpa-psk
nmcli con modify mywifi wifi-sec.psk "mypassword"
nmcli con up mywifi
Создание точки доступа (Wi-Fi Hotspot)
nmcli con add type wifi ifname wlan0 con-name hotspot \
ssid MyHotspot mode ap ip4 192.168.100.1/24
nmcli con modify hotspot wifi-sec.key-mgmt wpa-psk
nmcli con modify hotspot wifi-sec.psk "MyPassword123"
nmcli con up hotspot
Отключение Wi-Fi:
nmcli con down mywifi # Отключить
nmcli con delete mywifi # Удалить профиль
Полезные команды:
nmcli general status #Статус NetworkManager
nmcli device show wlan0 #Подробная информация об интерфейсе
nmcli connection edit mywifi #Редактировать профиль в интерактивном режиме
nmcli radio wifi on/off #Включить/выключить Wi-Fi
nmcli monitor #Режим мониторинга (показывает события сети)
Решение проблем:
Wi-Fi не включается?
nmcli radio wifi on # Включить Wi-Fi
rfkill unblock wifi # Разблокировать, если софт-блок
Точка доступа не запускается?
sudo systemctl restart NetworkManager
nmcli con up hotspot
journalctl -u NetworkManager -f # Логи
Нет интернета в Hotspot?
sudo iptables -t nat -L # Проверить правила
sudo sysctl net.ipv4.ip_forward # Должно быть =1
vpn
nmcli - network manager client nmcli connection show - показать доступные соединения nmcli connection up [vpnName] - подключение к VPN из командной строки nmcli connection down [vpnName] - отключение от VPN из командной строки Пример: nmcli connection up vpn.site.ru nmcli connection dowm vpn.site.ru
vpn openvpn / wg / l2tp/ ipsec / pptp :
Установка пакетов:
# Debian/Ubuntu
sudo apt install network-manager-openvpn network-manager-openvpn-gnome
sudo apt install network-manager-wireguard
sudo apt install network-manager-l2tp network-manager-l2tp-gnome
sudo apt install network-manager-pptp
# Arch Linux
sudo pacman -S networkmanager-openvpn
sudo pacman -S networkmanager-wireguard
sudo pacman -S networkmanager-l2tp
# OpenVPN
Импорт конфига .ovpn:
nmcli connection import type openvpn file /path/to/config.ovpn
Настройка вручную:
nmcli con add type vpn ifname eth0 con-name myvpn vpn-type openvpn \
vpn.data "username=your_login, password=your_pass, remote=server.com, port=1194, dev=tun, comp-lzo=yes"
Подключение:
nmcli con up myvpn
# WireGuard
Импорт конфига .conf:
nmcli connection import type wireguard file /path/to/wg0.conf
Настройка вручную:
nmcli con add type wireguard ifname wg0 con-name mywg \
wireguard.private-key "base64_private_key" \
wireguard.peer "public-key=base64_peer_key, endpoint=server.com:51820, allowed-ips=0.0.0.0/0"
Подключение:
nmcli con up mywg
# L2TP/IPsec
Создание подключения:
nmcli con add type vpn ifname eth0 con-name myl2tp vpn-type l2tp \
vpn.data "gateway=server.com, ipsec-enabled=yes, ipsec-psk=pre_shared_key, user=login, password=pass"
Подключение:
nmcli con up myl2tp
# Управление VPN
nmcli con show --active # Показать активные подключения (включая VPN)
nmcli con down myvpn # Отключить VPN
nmcli con delete myvpn # Удалить VPN-профиль
nmcli -p con show myvpn # Подробный просмотр настроек VPN
Настройка eth0 для получения интернета по dhcp
nmcli con add type ethernet ifname eth0 con-name eth0-dhcp ipv4.method auto nmcli con up eth0-dhcp
Dhcp + статически адрес для eth0
nmcli con add type ethernet ifname eth0 con-name eth0-dhcp ipv4.method auto nmcli con modify eth0-dhcp +ipv4.addresses "10.10.10.1/24" nmcli con up eth0-dhcp
Создание статики с адресом 10.10.10.1/24:
nmcli con add type ethernet ifname eth0 con-name eth0-static ipv4 10.10.10.1/24 nmcli con up eth0-static
Создание нового подключения-алиаса eth:1
nmcli con add type ethernet ifname eth0 con-name eth0-alias \
ipv4.addresses "10.10.10.1/24" \
ipv4.method manual \
ipv4.gateway "" \
ipv4.dns "" \
ipv4.ignore-auto-dns true \
ipv4.never-default true \
connection.autoconnect yes
Создание точки доступа MyWiFiAP с паролем MyPassword123 :
nmcli con add type wifi ifname wlan0 con-name hotspot ssid MyWiFiAP mode ap ip4 192.168.100.1/24 nmcli con modify hotspot wifi-sec.key-mgmt wpa-psk nmcli con modify hotspot wifi-sec.psk "MyPassword123" nmcli con up hotspot
Настройка VLAN (например, eth0.100):
nmcli con add type vlan ifname eth0.100 dev eth0 id 100 \
ipv4.addresses "192.168.100.1/24" \
ipv4.method manual
nmcli con up vlan-eth0.100
Создание моста (br0):
nmcli con add type bridge ifname br0 nmcli con add type bridge-slave ifname eth0 master br0 nmcli con modify bridge-br0 ipv4.addresses "10.0.0.1/24" ipv4.method manual nmcli con up bridge-br0
Файервол и форвард:
Ставим пакеты: apt install hostapd dnsmasq iptables Пример скрипта с помощью systemd 0. Создаем каталог и сервис mkdir /etc/iptables cat > /etc/systemd/system/iptablessh.service << "EOF" [Unit] Description= add firewale rule After=network.target [Service] Type=simple TimeoutStartSec=10 ExecStart=/etc/iptables/iptables.sh [Install] WantedBy=multi-user.target EOF 2. Создаем скрипт cat > /etc/iptables/iptables.sh << "EOF" #!/bin/bash iptables-restore /etc/iptables/iptable.4 ip6tables-restore /etc/iptables/iptable.6 sysctl -w net.ipv4.ip_forward=1 EOF chmod +x /etc/iptables/iptables.sh 3. Создаем правила iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables-save > /etc/iptables/iptable.4 cat > /etc/iptables/iptable.6 << "EOF" *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p ipv6-icmp -j ACCEPT COMMIT EOF 4. Включаем демон systemctl daemon-reload systemctl status iptablessh.service systemctl --failed systemctl enable iptablessh.service systemctl start iptablessh.service !!! Для автоматического запуска NAT после перезагрузки добавьте net.ipv4.ip_forward=1 в /etc/sysctl.conf или добавить в скрипт
конфиг /etc/dnsmasq.conf или /etc/dnsmasq.d/hotspot.conf
Создаем конфиг cat > /etc/dnsmasq.d/hotspot.conf << "EOF" port=0 #no-resolv server=10.10.99.1 # Google's nameservers, for example server=8.8.8.8 server=8.8.4.4 listen-address=10.10.99.1 no-hosts dhcp-range=10.10.99.100,10.10.99.200,15m dhcp-option=option:router,10.10.99.1 dhcp-option=option:dns-server,10.10.99.1,8.8.8.8,8.8.4.4 cache-size=1000 dhcp-host=b8:27:eb:93:94:9c,10.10.99.10,PC-5000 dhcp-host=b8:27:eb:78:08:57,10.10.99.20,PC-6000 EOF
Если что то не работает:
Проверьте логи NetworkManager: journalctl -u NetworkManager -f Убедитесь, что hostapd и dnsmasq работают: sudo systemctl status hostapd dnsmasq Если точка доступа не запускается, попробуйте вручную: sudo systemctl restart NetworkManager nmcli con up hotspot # Просмотр выданных адресов: cat /var/lib/misc/dnsmasq.leases # Или для NetworkManager: journalctl -u NetworkManager | grep -i dhcp