Настройка сети в Ubuntu 22.04 через Network Manager
Утилиты и команды для настройки сети в Ubuntu 18.04. В данном посте я расматриваю способы подключения через Network Manager, Wicd, WPA Supplicant.
Настройка через Netplan
Настройка сети по умолчанию для серверов.
Создайте файл /etc/netplan/10-enp0s3.yaml
Будет выдан адрес по dhcp4
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
dhcp-identifier: mac
Настройка статического ip адреса 192.168.1.2
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
dhcp6: no
addresses: [192.168.1.2/24]
gateway4: 192.168.1.1
nameservers:
addresses: 192.168.1.1
Подключение по WiFi
Создайте файл /etc/netplan/10-wlp3s0.yaml
Обратите внимание на wlp3s0 - это название интерфейса, у вас может быть другой. Проверьте через команду ip a
network:
version: 2
ethernets:
wlp3s0:
dhcp4: false
dhcp6: false
addresses: [192.168.1.2/24]
gateway4: 192.168.1.1
nameservers:
addresses: 192.168.1.1
access-points:
"SSID":
password: "password"
Примените настройки:
netplan apply
Настройка DNS
Работает, если у вас установлен systemd-resolved в качестве DNS резолвера. Обычно он установлен по умолчанию
Выполните
rm /etc/resolv.conf
nano /etc/resolv.conf
Укажите следующие настройки
nameserver 127.0.0.53
options edns0 trust-ad
ndots:1
search .
Настройка через Network Manager
Настройка сети для Desktop.
Пакеты:
Существует несколько способо управлять сетью в Ubuntu. Через Wicd, Network Manager, WPA Supplicant, ifupdown, ifconfig и т.д. Я рекомендую использовать Wicd. Потому что большинство задач он решает. Особенно для ноутбуков.
Network Manager может потребоваться, если вы хотите одновременно подключится по wifi и по локальной сети, или раздвать интернет с wifi в локальную сеть. При этом у wicd убрать управление Ethernet и дать это управление Network Manager.
- Network Manager - пакет, который позволяет подключаться к WiFi и управлять сетевыми подключениями. Он позволяет автоматически выполнять переподключение к WiFi, если сеть недоступна по какой-то причине.
- nmcli - Команда управления Network Manager
- nm-tray - Иконка в трее
- nm-connection-editor - Интерфейс для управлением соединений
- ifupdown - Стандартный пакет для /etc/network/interfaces
- Dnsmasq - это кэширующий DNS сервер
- Resolvconf - программа, которая может обновлять список рекурсивных DNS серверов. При этом она умеет передавать Dnsmasq новые списки через файл /var/run/dnsmasq/resolv.conf
Установка:
apt install network-manager network-manager-gnome net-tools dnsutils
Измените файл /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=true
В файле /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf пропишите строчку:
[keyfile]
unmanaged-devices=*,except:type:ethernet,except:type:wifi,except:type:gsm,except:type:cdma,interface-name:lxc*,interface-name:docker*,interface-name:virtual*,interface-name:veth*
Этот файл задает какие интерфейсы будут управляться Network Manager. Запрещаем управлять мостами lxc, lxd, docker и virtualbox. Возможно нужно прописать еще. Локальной сетью и wifi разрешаем управлять. Более подробнее о командах здесь
Закоментируйте все строки в файле /etc/network/interfaces кроме строк для loopback интерфейса
#source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
Отключите управление сетью через systemd
systemctl disable systemd-networkd.socket
systemctl disable systemd-networkd.service
systemctl disable networkd-dispatcher
systemctl disable cloud-init
systemctl stop systemd-networkd.service
apt-get purge ifupdown
apt-get purge cloud-init
rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/
Графический интерфейс
Чтобы настраивать network manager мышкой, установите:
apt install network-manager-gnome
Команды Network Managment
Посмотреть список устройств, которыми можно управлять nmcli d
DEVICE TYPE STATE CONNECTION
wlp3s0 wifi connected MyWiFi
enp2s0 ethernet connected Eth0
lxcbr0 bridge unmanaged --
virtualbox bridge unmanaged --
lo loopback unmanaged --
Если стоит unmanaged, то Network Managment не может управлять устройством.
Посмотреть список соединений nmcli c
NAME UUID TYPE DEVICE
MyWiFi 118f13de-b635-4332-9ef4-8151dfb5068f wifi wlp3s0
Eth0 f74f8a7a-ca6c-4d94-9c57-0ce7b37fd439 ethernet enp2s0
Это список соединений, для подключений. Этот список можно расширять через команды консоли, или через интерфейс nm-connection-editor.
Локальная сеть в Network Manager
Чтобы создать новую сеть, выполните команду:
nmcli connection add type ethernet con-name Eth0 ifname enp2s0
nmcli c m Eth0 ipv4.route-metric 100
nmcli c m Eth0 ipv4.dns 8.8.8.8 8.8.4.4
nmcli c m Eth0 ipv4.ignore-auto-dns yes
nmcli c m Eth0 connection.autoconnect-priority 999
Также можно создать файл
nano /etc/NetworkManager/system-connections/Eth0.nmconnection
[connection]
id=Eth0
uuid=311e72ed-fd9b-347d-9400-0e58a7171d73
type=ethernet
autoconnect-priority=-999
interface-name=enp2s0
timestamp=1708765081
[ethernet]
[ipv4]
dns=8.8.8.8;8.8.4.4;
ignore-auto-dns=true
method=auto
route-metric=100
[ipv6]
addr-gen-mode=stable-privacy
method=auto
Обратите внимание на параметр route-metric 100 в конфигах.
Route metric - это приоритет в таблице машрутизации, куда будут отправлены пакеты для выхода в интернет (Маршрутизация по умолчанию). Чем меньше число, тем выше приоритет.
Далее вы можете установить статический IP Адрес
nmcli c m Eth0 ipv4.method manual
nmcli c m Eth0 ipv4.address1 192.168.1.5/24,192.168.1.1
Подключиться к определенной сети:
nmcli c up Eth0
Отключиться от сети;
nmcli c down Eth0
Если по какой то причине локальная сеть не работает попробуйте сделать:
[ifupdown]
managed=true
А затем:
systemctl restart NetworkManager
Рекомендуется также создать файл /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf если его нет.
Список комманд:
Установка статического IP адреса
nmcli c m Eth0 ipv4.addresses "192.168.1.25/24"
nmcli c m Eth0 ipv4.gateway "192.168.1.1"
nmcli c m Eth0 ipv4.method manual
Файл nano /etc/NetworkManager/system-connections/Eth0.nmconnection
[connection]
id=Eth0
uuid=311e72ed-fd9b-347d-9400-0e58a7171d73
type=ethernet
autoconnect-priority=-999
interface-name=enp2s0
timestamp=1708765081
[ethernet]
[ipv4]
address1=192.168.1.25/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;
method=manual
route-metric=100
[ipv6]
addr-gen-mode=stable-privacy
method=auto
[proxy]
Подключение по WiFi через Network Manager
Включите WiFi:
nmcli radio wifi on
Просмотрите список доступных WiFi сетей:
nmcli device wifi list
Подключитесь к сети, используя логин и пароль:
nmcli device wifi connect "YourWifiNetwork" password "YourWifiPassword"
Установите параметры подключения
nmcli c m YourWifiNetwork ipv4.route-metric 10
nmcli c m YourWifiNetwork ipv4.ignore-auto-dns yes
nmcli c m YourWifiNetwork ipv4.dns 8.8.8.8 8.8.4.4
Количество попыток подключения к wifi если он не доступен:
nmcli c m YourWifiNetwork connection.autoconnect-retries 3
nmcli c m YourWifiNetwork connection.autoconnect-priority 0
Подключение к wifi через это соединение выполняется командой:
nmcli c up YourWifiNetwork
После этой команды, соединение будет автоматически подниматься, после появления WiFi сети
Установка статического адреса через команду ip
Этот способ использовать, если NetworkManger не работает.
Откройте файл командой
nano /etc/rc.local
Добавьте строчки в конец файла
ip addr add 192.168.1.25/24 dev eth0
ip route add 192.168.1.0/24 dev eth0 metric 100
ip route add default via 192.168.1.1 dev eth0 metric 10
Настройка dnsmasq
Нужно в том случае, если вы хотите поменять DNS резолвер
Установите
apt install dnsmasq
Пропишите в NetworkManager.conf
[main]
#auth-polkit=false
plugins=ifupdown,keyfile
systemd-resolved=false
dns=none
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
Отключите системный DNS.
systemctl disable systemd-resolved
Удалите пакет resolvconf
apt-get purge resolvconf
Поменяйте файл /etc/resolv.conf
rm -f /etc/resolv.conf
echo "nameserver 127.0.0.1" > /etc/resolv.conf
echo "options edns0 trust-ad" >> /etc/resolv.conf
Скопируйте конфиг:
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.example
echo "" > /etc/dnsmasq.conf
Создайте файл /etc/resolv.dnsmasq
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1
В /etc/dnsmasq.conf пропишите:
port=53
#listen-address=0.0.0.0
no-dhcp-interface=
bind-interfaces
expand-hosts
local-ttl=1
no-negcache
# Динамические настройки DNS
resolv-file=/run/NetworkManager/resolv.conf
# Настройки DNS по умолчанию
#resolv-file=/etc/resolv.dnsmasq
conf-dir=/etc/dnsmasq.d
cache-size=150
max-cache-ttl=600
min-cache-ttl=60
# Одновременный запрос ко всем DNS серверам
# all-servers
# Запрещаем резолвить домены без точки (нужно для Docker Swarm)
domain-needed
# Для отладки
#log-queries
Создайте файл /etc/NetworkManager/dispatcher.d/99-dnsmasq
#!/bin/bash
if [[ "$1" = "enp2s0" || "$1" = "wlp3s0" ]]; then
if [ "$2" = "up" ]; then
kill -9 `cat /var/run/dnsmasq/dnsmasq.pid`
sleep 1
systemctl start dnsmasq
fi
fi
Раскоментируйте строку в файле /etc/default/dnsmasq
IGNORE_RESOLVCONF=yes
Выключите резолвер из внешней сети интернет. Создайте файл /etc/dnsmasq.d/disable-external-network
bind-interfaces
except-interface=eth*
except-interface=enp*
except-interface=wlan*
except-interface=wlp*
Если вы хотите прописать свои хосты в системе, вы можете использовать файл /etc/hosts или создать новый файл в папке /etc/dnsmasq.d/examle.domain со следующим содержанием:
# Example
address=/.example/127.0.0.2
address=/ns.example/127.0.0.1
address=/test.example/127.0.0.5
Данный файл говорит dnsmasq резолвить домен .examle, учитывая wildcard запросы.
Также dnsmasq переодически будет проверять файл /var/run/NetworkManager/resolv.conf на наличие новых записей. Network Manager будут помещать туда DNS сервера при подключении к сети.
Также есть инструкция для настройки dnsmaq для Docker swarm.
Управление WiFi через Wicd
Устаревший способ. Wicd в новых версиях убунту уже не используется.
Установка:
apt install wicd resolvconf
Wicd управляет WiFi. В принципе этого достаточно для ноутбука.
После его установки нужно запретить Network Manager управлять WiFi.
Для этого в файле /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf нужно дописать вконце type:wifi и убрать except:type:wifi вначале.
Пример:
[keyfile]
unmanaged-devices=*,except:type:gsm,except:type:cdma,except:type:ethernet,interface-name:lxc*,interface-name:docker*,interface-name:virtual*,interface-name:veth*,type:wifi
Также нужно включить resolvconf в NetworkManager в файле /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
systemd-resolved=false
rc-manager=resolvconf
dns=default
[ifupdown]
managed=false
в /etc/dnsmasq.conf нужно поменять файл DNS
resolv-file=/var/run/dnsmasq/resolv.conf
Очистите файл original.resolvconf
echo "" > /etc/resolvconf/resolv.conf.d/original
rm /var/run/resolvconf/interface/original.resolvconf
пересоздайте файл resolv.conf
rm -f /etc/resolv.conf
echo "nameserver 127.0.0.1" > /etc/resolv.conf
и перезапустить Network Manager и dnsmasq
service NetworkManager restart
service dnsmasq restart
Если все сделано правильно, то через команду
resolvconf -l
service dnsmasq status
Будут показаны текущие ДНС
Добавьте Wicd в автозапуск. Создайте файл nano ~/.config/autostart/wicd-tray.desktop
[Desktop Entry]
Categories=Application;Network;
Comment=Display network connection status in the system tray
Comment[en_US]=Display network connection status in the system tray
Comment[he]=הצגת מצב חיבור רשת במגש מערכת
Exec=wicd-gtk --tray
GenericName=Network Manager
Icon=wicd-gtk
Icon[en_US]=wicd-gtk
Name=Wicd Network Manager Tray
Name[en_US]=Wicd Network Manager Tray
Terminal=false
Type=Application
Version=1.0
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel
Подключение к WiFi через WPA Supplicant
Создайте файл:
touch /root/wifi.sh
chmod +x /root/wifi.sh
Посмотрите название вашего Wi Fi модуля:
ip a
Он может называться как wlp3s0 или wlan0.
Измените содержимое файла /root/wifi.sh и укажите в нем название вашего Wi Fi модуля. Вместо mynetwork и passphrase укажите свои данные.
wpa_passphrase mynetwork passphrase > /root/wifi.conf
wpa_supplicant -i wlan0 -c /root/wifi.conf &
sleep 10
ip addr add 192.168.1.150/24 dev wlan0
ip route add 192.168.1.0/24 dev wlan0 metric 100
ip route add default via 192.168.1.1 dev wlan0 metric 10
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "Connected"
Подключитесь к Wi Fi:
/root/wifi.sh
Проверьте интернет:
ping ya.ru
Старый способ создания сети через interfaces
Данный способ не рекомендуется использовать. У меня не работал.
Установите пакет:
apt install ifupdown
Пропишите в /etc/network/interfaces настройте Localhost и Ethernet соединение
# ifupdown has been replaced by netplan(5) on this system. See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
# sudo apt install ifupdown
# Localhost
auto lo
iface lo inet loopback
# Ethernet
#allow-hotplug enp2s0
auto enp2s0
iface enp2s0 inet dhcp
metric 100
allow-hotplug - Позволяет перезапускать интерфейс, если он упадет
auto enp2s0 - Автоматическое подключение интерфейса при старте системы
Отключите systemd network daemon
systemctl stop systemd-networkd.socket systemd-networkd networkd-dispatcher systemd-networkd-wait-online
systemctl disable systemd-networkd.socket systemd-netword networkd-dispatcher systemd-networkd-wait-online
Запустите networking
systemctl enable networking
systemctl restart networking