Настройка сети в Ubuntu 18.04 через Network Manager

Утилиты и команды для настройки сети в Ubuntu 18.04. В данном посте я расматриваю способы подключения через Network Manager, Wicd, WPA Supplicant.

Пакеты:

Существует несколько способо управлять сетью в 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

Настройка через Network Manager

Установка:

apt install network-manager dnsmasq resolvconf

Измените файл /etc/NetworkManager/NetworkManager.conf

[main]
#auth-polkit=false
plugins=ifupdown,keyfile
systemd-resolved=false
rc-manager=resolvconf
dns=default

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

В файле /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf пропишите строчку:

[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:gsm,except:type:cdma,except:type:ethernet,interface-name:lxc*,interface-name:docker*,interface-name:virtual*,interface-name:veth*

Этот файл задает какие интерфейсы будут управляться Network Manager. Запрещаем управлять мостами lxc, lxd, docker и virtualbox. Возможно нужно прописать еще. Локальной сетью и wifi разрешаем управлять. Более подробнее о командах здесь

Отключите управление сетью через systemd

systemctl disable systemd-networkd.socket
systemctl disable systemd-networkd.service
systemctl disable systemd-resolved
systemctl disable networkd-dispatcher
systemctl disable cloud-init

apt-get purge cloud-init
rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/

Настройка dnsmasq и resolvconf

Если используете Network Manager, то настройте dnsmasq.

Скопируйте конфиг:

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=/var/run/dnsmasq/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

Но лучше всегда задавать DNS параметры через менеджер подключений, такие как wicd или network manager. Чтобы он через resolvconf обновлял DNS сервера.

Если вы хотите прописать свои хосты в системе, вы можете использовать файл /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/dnsmasq/resolv.conf на наличие новых записей. Wicd и Network Manager будут помещать туда DNS сервера при подключении.

Также есть инструкция для настройки dnsmaq для Docker swarm.

Команды 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.

Подключиться к определенной сети:

nmcli c up Eth0

Отключиться от сети;

nmcli c down Eth0

Локальная сеть в 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

Обратите внимание на параметр 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

Список комманд:

Установка статического 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

Подключение по 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 сети

Графический интерфейс

Чтобы настраивать network manager мышкой, установите два пакета:

apt install nm-tray network-manager-gnome

Управление через WiFi Wicd

Установка:

apt install wicd

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

и перезапустить Network Manager

service network-manager restart

Добавьте 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

Способ через ip addr

ip addr add 192.168.1.150/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

Старый способ создания сети через 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

 

Остались вопросы?

Если вы хотите получить консультацию или оставить комментарий, опубликуйте свой вопрос на нашем форуме.