На этом уроке рассмотрим пакетные менеджеры apt и apt-get. Которые используются для работы с пакетами приложений в Linux.
Архив метки: Администрирование Linux
Репозитории Linux
Из этой статьи вы узнаете что такое репозитории в Linux. Мы научимся их настраивать на примере Debian 11 и Ubuntu 22.04.
Настройка фаервола — Nftables
В этой статье я покажу вам, как настраивается фаервол (netfilter) на сервере Debian 11 или Ubuntu 22.04 при помощи инструмента nftables.
Настройка сети на Ubuntu
Настройка сети – это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на Ubuntu 22.04.
Получение информации о сетевых интерфейсах
В прошлой статье мы разобрали настройку сети в системе Debian 11, а в этой разберём всё тоже самое но для Ubuntu 22.04.
Посмотреть на доступные сетевые интерфейсы мы точно также можем с помощью утилиты lshw. И на сервере Ubuntu эта утилита предустановлена.
$ sudo lshw -C network
*-network:0
description: Ethernet controller
product: Virtio network device
vendor: Red Hat, Inc.
physical id: 12
bus info: pci@0000:00:12.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: msix bus_master cap_list rom
configuration: driver=virtio-pci latency=0
resources: irq:11 ioport:e0e0(size=32) memory:fea93000-fea93fff memory:fe40c000-fe40ffff memory:fea00000-fea3ffff
*-virtio3
description: Ethernet interface
physical id: 0
bus info: virtio@3
logical name: ens18
serial: 02:6e:f0:fb:d4:71
capabilities: ethernet physical
configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=172.28.90.34 link=yes multicast=yes
*-network:1
description: Ethernet controller
product: Virtio network device
vendor: Red Hat, Inc.
physical id: 13
bus info: pci@0000:00:13.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: msix bus_master cap_list rom
configuration: driver=virtio-pci latency=0
resources: irq:10 ioport:e100(size=32) memory:fea94000-fea94fff memory:fe410000-fe413fff memory:fea40000-fea7ffff
*-virtio4
description: Ethernet interface
physical id: 0
bus info: virtio@4
logical name: ens19
serial: 82:dd:88:27:00:a5
capabilities: ethernet physical
configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 link=yes multicast=yes
В этом примере у меня два сетевых интерфейса: ens18 (02:6e:f0:fb:d4:71) и ens19 (82:dd:88:27:00:a5). При этом ip адрес назначен только на ens18 (172.28.90.34).
Мы уже знаем что утилита lshw в основном используется, чтобы узнать имя и возможности сетевой карты, то есть информацию о железе. А для получения настроек сетевых интерфейсов нужно использовать команду – ip. Работает эта команда точно также как в Debian, поэтому заострять на ней внимание не буду.
$ ip addr show ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 02:6e:f0:fb:d4:71 brd ff:ff:ff:ff:ff:ff
inet 172.28.90.34/20 brd 172.28.95.255 scope global dynamic ens18
valid_lft 258376sec preferred_lft 258376sec
inet6 fe80::6e:f0ff:fefb:d471/64 scope link
valid_lft forever preferred_lft forever
$ ip addr show ens19
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 82:dd:88:27:00:a5 brd ff:ff:ff:ff:ff:ff
inet6 fe80::80dd:88ff:fe27:a5/64 scope link
valid_lft forever preferred_lft forever
В примере выше видно, что ens18 имеет назначенный ip адрес, а ens19 нет. Но оба интерфейса активны (state UP).
Настройка IP адреса
Вот настройка сетевых интерфейсов при помощи конфигурационных файлов в Ubuntu значительно отличается от Debian. Это потому-что в Ubuntu используется система для управления сетью — Netplan. И нужно будет изучить конфигурационные файлы и команды этой системы.
Конфигурационные файлы Netplan находятся в каталоге «/etc/netplan«, а конфигурационный файл созданный при установки системы — «/etc/netplan/00-installer-config.yaml«.
Посмотрим на этот конфиг с помощью утилиты cat:
$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens18:
dhcp4: true
ens19:
dhcp4: true
version: 2
Такой формат конфигурационных файлов называется — YAML (произносится как «ямл»).
Разберём этот файл построчно:
network:— говорит о том, что сейчас будем настраивать сеть;ethernets:— начинается настройка сетевых интерфейсов;ens18:— настраиваем интерфейс ens18;dhcp4: true— ip адрес будет получен по dhcp;
ens19:— настраиваем интерфейс ens19;dhcp4: true— ip адрес будет получен по dhcp;
version: 2— версия YAML.
Разбирать формат YAML не буду, просто покажу как назначить статичные ip адреса и отключить dhcp.
Число в имени файла — означает приоритет, и чем оно выше, тем выше приоритет у файла. Создадим новый конфиг, имя можно придумать любое, но чтобы этот файл стал главнее текущего, установим приоритет 02-:
$ sudo nano /etc/netplan/02-network.yaml
network:
ethernets:
ens18:
dhcp4: no
addresses: [ 172.28.90.75/20 ]
routes:
- to: default
via: 172.28.80.10
nameservers:
addresses: [ 77.88.8.8, 77.88.8.1 ]
ens19:
dhcp4: no
addresses: [ 192.168.0.10/24 ]
version: 2
После создания конфигурационного файла проверим его на синтаксис:
$ sudo netplan generate
Если в выводе пусто, значит конфигурация верна.
Теперь можно применить настройки:
$ sudo netplan apply
После этого, вам придётся заново подключится к серверу по ssh, по другому ip адресу.
Итак, мы указали ip адреса для обоих интерфейсов, а также назначили на одном из низ шлюз по умолчанию (routes: — to default) и dns сервера (nameservers).
И запомните, на сервере Ubuntu 22.04, не нужно использовать утилиты ifdown и ifup. Здесь работает netplan, и применять настройки нужно с помощью этой утилиты, предварительно проверив конфигурацию.
Добавление статических маршрутов
Добавлять статические маршруты нужно также в уже знакомом файле «/etc/netplan/02-network.yaml«:
$ sudo nano /etc/netplan/02-network.yaml
network:
ethernets:
ens18:
dhcp4: no
addresses: [ 172.28.90.75/20 ]
routes:
- to: default
via: 172.28.80.10
- to: 192.168.5.0/24
via: 172.28.80.5
on-link: true
nameservers:
addresses: [ 77.88.8.8, 77.88.8.1 ]
ens19:
dhcp4: no
addresses: [ 192.168.0.10/24 ]
version: 2
При добавлении маршрута нужно указать:
- to: 192.168.5.0/24— префикс (сеть назначения);via: 172.28.80.5— через какой шлюз нужно добираться до сети назначения;on-link: true— активировать маршрут при поднятии интерфейса.
Применим настройки и проверим маршрут с помощью команды ip:
$ sudo netplan apply $ ip route show default via 172.28.80.10 dev ens18 proto static 172.28.80.0/20 dev ens18 proto kernel scope link src 172.28.90.75 192.168.0.0/24 dev ens19 proto kernel scope link src 192.168.0.10 192.168.5.0/24 via 172.28.80.5 dev ens18 proto static onlink
В примере выше — 192.168.5.0/24 via 172.28.80.5 dev ens18 proto static onlink — и есть наш дополнительный статический маршрут.
Итог
Вот мы и прошли тему “Настройка сети на Ubuntu“.
Мы познакомились с системой Netplan. Научились настраивать сеть с помощью конфигурационных файлов /etc/netplan/**-имя.yaml. Узнали как проверить и применить настройки с помощью команды netplan.
Теперь можем указать ip адрес, адрес шлюза, адрес dns сервера, а также можем создать отдельные маршруты в системе Ubuntu 22.04
Настройка сети на Debian
Настройка сети — это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на Debian 11.
Получение информации о сетевых интерфейсах
Так как в предыдущем уроке мы научились пользоваться и устанавливать sudo на debian, то для административных действий теперь будем использовать эту утилиту. А настройка сети — это административное действие на любой системе, в том числе и на Debian.
Определить какие интерфейсы есть у вашего сервера поможет утилита lshw. Но её предварительно нужно установить с помощью следующей команды:
$ sudo apt install lshw
Эта утилита предназначена для определения железа вашего сервера. Например, с её помощью можно посмотреть какой на сервере процессор или оперативная память. Используя параметр -С network получим информацию только по сетевым устройствам:
$ sudo lshw -C network
*-network
description: Ethernet controller
product: Virtio network device
vendor: Red Hat, Inc.
physical id: 12
bus info: pci@0000:00:12.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: msix bus_master cap_list rom
configuration: driver=virtio-pci latency=0
resources: irq:11 ioport:e0a0(size=32) memory:fea52000-fea52fff memory:fe408000-fe40bfff memory:fea00000-fea3ffff
*-virtio2
description: Ethernet interface
physical id: 0
bus info: virtio@2
logical name: ens18
serial: 2a:75:9e:4d:1d:fa
capabilities: ethernet physical
configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=172.28.90.31 link=yes multicast=yes
Из этого вывода вы можете получить следующую информацию:
- logical name: ens18 — имя сетевого интерфейса;
- serial: 2a:75:9e:4d:1d:fa — mac-адрес;
- ip=172.28.90.31 — ip-адрес;
- и другое.
Утилита lshw в основном используется, чтобы узнать имя и возможности сетевой карты. А для получения информации о mac и ip адресах нужно использовать другую утилиту — ip. Эта утилита командной строки не так проста, команда ip имеет множество подкоманд, которые мы изучим в этой статье. И первая подкоманда это address — она означает, что работать мы будем с ip-адресами. У подкоманды address, тоже есть свои подкоманды, например подкоманда show покажет информацию о назначенных ip-адресах. В самом конце команды можно указать имя сетевого интерфейса, чтобы получить информацию только по нему, а не по всем сетевым интерфейсам в системе.
Все эти подкоманды можно сокращать, например address = addr, show = sh. Но пока не будем этого делать, так как вначале нужно их запомнить.
Для того чтобы посмотреть, какие настройки использует сетевой интерфейс ens18 выполним команду ip address show ens18:
$ ip address show ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 2a:75:9e:4d:1d:fa brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 172.28.90.31/20 brd 172.28.95.255 scope global dynamic ens18
valid_lft 258476sec preferred_lft 258476sec
inet6 fe80::2875:9eff:fe4d:1dfa/64 scope link
valid_lft forever preferred_lft forever
Здесь мы также видим mac и ip адрес с маской подсети.
Этот ip адрес был получен по dhcp.
Настройка IP адреса
Чтобы изменить ip адрес на какой-нибудь другой, нужно отредактировать конфигурационный файл «/etc/network/interfaces». Но вначале глянем на него с помощью команды cat:
$ cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug ens18 iface ens18 inet dhcp
Посмотрим внимательнее на блок настроек для интерфейса ens18:
- # The primary network interface — это комментарий, так как в начале строки стоит символ #. Он ни на что не влияет, просто подсказывает нам, что следующие за ним настройки редактируют основной сетевой интерфейс (ens18).
- allow-hotplug ens18 — разрешает горячее подключение для интерфейса ens18. То есть этот сетевой интерфейс будет включен при старте системы.
- iface ens18 inet dhcp — интерфейс ens18 будет получать настройки с помощью dhcp.
Чтобы назначить другой статический ip адрес нужно отредактировать этот блок в файле, например с помощью текстового редактора nano.
$ sudo nano /etc/network/interfaces
***** пропущу другие блоки настроек *****
# The primary network interface
allow-hotplug ens18
iface ens18 inet static
address 172.28.90.77/20
gateway 172.28.80.1
То есть меняем dhcp на static и ниже указываем адрес интерфейса (address) и адрес шлюза по умолчанию (gateway).
Дальше нужно перезагрузить сетевую подсистему чтобы применились изменения. Для этого можно воспользоваться следующими командами:
- $ sudo systemctl restart networking.service — перезагружает службу отвечающую за сеть на сервере, но если сетевых интерфейсов несколько, то все они на время окажутся недоступными. Также эта команда у меня не всегда срабатывала, то есть после перезапуска службы, интерфейс оказывался без назначенного ip адреса. Поэтому я не рекомендую этот способ.
- $ sudo ifdown ens18; sudo ifup ens18 — это две команды, которые выполнятся по очереди. Первая команда (ifdown ens18) отключит сетевой интерфейс, а вторая (ifup ens18) включит. Эта команда меня ещё не подводила.
- $ sudo reboot — эта команда перезагрузит сервер полностью. После чего сервер загрузится уже с новыми сетевыми настройками.
В любом случае вы отвалитесь от сервера, так как были подключены к нему по ssh по другому ip адресу. Вам придется заново подключиться к серверу, но использовать уже новый ip адрес.
Настройка DNS сервера
Чтобы указать серверу, какой ему использовать dns сервер, нужно редактировать конфигурационный файл /etc/resolv.conf. Давайте взглянем на него:
$ cat /etc/resolv.conf nameserver 172.28.80.1
Этот адрес был получены от dhcp сервера. Но его можно изменить прям в этом файле:
$ sudo nano /etc/resolv.conf nameserver 77.88.8.8
После редактирования этого файла ничего перезагружать не нужно, настройки подхватятся на лету. Проверить это можно с помощью команды nslookup, которая определит ip адрес по имени используя указанный dns сервер.
$ nslookup ya.ru Server: 77.88.8.8 Address: 77.88.8.8#53 Non-authoritative answer: Name: ya.ru Address: 87.250.250.242 Name: ya.ru Address: 2a02:6b8::2:242
Как видим, был использован dns от Яндекса — 77.88.8.8. Именно его мы внесли в конфиг /etc/resolv.conf.
Утилита IP
Теперь более подробно разберем утилиту ip.
Работая с ней вы используете различные подкоманды. Все их рассматривать не будем. Разберём лишь некоторые из них:
- address — позволяет назначать и удалять ip адреса, просматривать их и тому подобное.
- link — можно включить или выключить сетевой интерфейс, посмотреть список интерфейсов и их mac адреса.
- neigh — можно добавить или удалить mac адрес из arp таблицы, или полностью её очистить.
- route — позволяет создавать новые маршруты и удалять их, а также просматривать уже созданные маршруты.

У этих подкоманд есть свои подкоманды. Например, чтобы посмотреть информацию используется общая подкоманда show:
# ip address show - посмотреть ip адреса # ip link show - посмотреть физические устройства # ip neigh show - посмотреть arp таблицу # ip route show - посмотреть таблицу маршрутизации
Во всех случаях можно указывать конкретный интерфейс:
# ip address show ens18
Помимо просмотра информации можем настраивать сеть, например можно добавить или удалить ip адрес на интерфейсе. Но в отличии от правки конфигурационного файла, изменённый ip адрес этим способом будет действовать только до перезагрузки сервера:
# ip address add 192.168.0.44/24 dev ens18 - добавить ip для ens18 # ip address del 192.168.0.44/24 dev ens18 - удалить ip для ens18
Также можем добавлять или удалять маршруты. Такие маршруты тоже будут действовать только до перезагрузки сервера:
# ip route add 192.168.5.0/24 via 192.168.0.10 - добавить маршрут # ip route delete 192.168.5.0/24 - удалить маршрут
Можем включать и выключать сетевые интерфейсы:
# ip link set ens18 up - включить # ip link set ens18 down - выключить
Кстати, выключение и включение сетевых интерфейсов с помощью ip link set не перечитывают настройки из /etc/network/interfaces, поэтому если вы что-то там изменили, то выполняйте ifdown и ifup.
Можем очистить arp таблицу:
# ip neigh flush
Если хотите, можете почитать мануал по команде ip. На русском языке он доступен тут.
Добавление статических маршрутов
Чтобы добавленный маршрут остался после перезагрузки его нужно вписать в уже знакомый файл /etc/network/interfaces в таком виде:
up ip route add 192.168.5.0/24 via 192.168.0.10
То есть в конце файла, с новой строки пишите up, а дальше команду с помощью которой вы создаете маршрут.
Итог
Вот мы и прошли тему «Настройка сети Debian«.
Мы познакомились с командами lshw, и ip. Научились настраивать сеть с помощью конфигурационных файлов /etc/network/interfaces и /etc/resolv.conf, а также с помощью команды ip. Научились включать и выключать сетевые интерфейсы с помощью команд ifup и ifdown.
Настраивая сеть мы теперь можем указать ip адрес, адрес шлюза, адрес dns сервера, а также можем создать отдельные маршруты. Это не все сетевые настройки, которые можно сделать, их намного больше, можно даже создать свой роутер на Debian, но это выходит за рамки этого курса.
Утилита sudo в Linux
В этой статье научимся устанавливать, настраивать и использовать утилиту sudo для выполнения административных действий в Linux.