Основные команды nmcli:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
Просмотр сетевых интерфейсов: 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
1 2 3 4 5 6 7 8 |
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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Установка пакетов: # 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
1 2 |
nmcli con add type ethernet ifname eth0 con-name eth0-dhcp ipv4.method auto nmcli con up eth0-dhcp |
Dhcp + статически адрес для eth0
1 2 3 |
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:
1 2 |
nmcli con add type ethernet ifname eth0 con-name eth0-static ipv4 10.10.10.1/24 nmcli con up eth0-static |
Создание нового подключения-алиаса eth:1
1 2 3 4 5 6 7 8 |
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 :
1 2 3 4 |
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):
1 2 3 4 |
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):
1 2 3 4 |
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 |
Файервол и форвард:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
Ставим пакеты: 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Создаем конфиг 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 |
Если что то не работает:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Проверьте логи 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 |