Введение
Я буду работать со следующим сервером:
# uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux # cat /etc/debian_version 8.3
Если у вас еще нет готового сервера, то рекомендую статью на тему установки debian. Там подробно описан весь процесс от и до.
На сервере имеются 2 сетевых интерфейса:
Интерфейс | Описание | IP |
eth0 | внешний интерфейс, подключен к провайдеру, настройки получает по dhcp автоматически | 192.168.1.24 |
eth1 | внутренний интерфейс, смотрит в локальную сеть, статический ip адрес | 10.0.15.1 |
Файл конфигурации сетевых интерфейсов выглядит следующим образом:
# cat /etc/network/interfaces source /etc/network/interfaces.d/* auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug eth1 iface eth1 inet static address 10.0.15.1 netmask 255.255.255.0
Как настроить сеть в debian я подробно рассказал отдельно. Если вы еще не сделали это и не выполнили предварительную настройку debian, то рекомендую ознакомиться с материалами.
Если у вас недостаточно опыта и вы не чувствуете в себе сил разобраться с настройкой шлюза самому с помощью консоли сервера — попробуйте дистрибутив на основе centos для организации шлюза и прокси сервера в локальной сети — clearos. С его помощью можно через браузер настроить весь необходимый функционал. В отдельной статье я подробно рассказал об установке clearos.
Как установить драйвера Wi-Fi в Debian 8/9
Для ноутбуков свои модули поставляют сразу несколько производителей. Самых популярные из них:
- Realtek;
- Broadcom.
И первый шаг настройки – изучение информации относительно того, какой модуль установлен в ноутбуке изначально. Для этого при помощи терминала набирают команду из нескольких символов – lspci. Перед пользователем откроется список со всеми модулями, установленными на текущий момент. Если Debian не видит Wi-Fi, значит возникла проблема с одним из них.
На следующем шаге нужно отредактировать список репозиториев. Его обозначение выглядит как «/etc/apt/sources.list». После каждой строки, где стоит слово main, следует добавить «contrib non-free». Тогда можно будет устанавливать не свободные компоненты, а использовать определённые решения.
Когда добавление нужной строчки завершено, список с пакетами рекомендуется обновить. После этого подключиться к Интернету удастся сразу.
Обратите внимание! Для установки библиотек 32bit нужно добавлять соответствующую архитектуру. После список с пакетами снова обновляется
Что предстоит сделать далее:
- Установить заголовки и модули ядра.
- Выбрать дополнительный бинарок.
- Установить дополнительные инструменты для управления расширениями в Linux.
- Откорректировать менеджер сети Gnome.
Такова общая инструкция для всех модулей. У каждого производителя она будет несколько отличаться для Debian, как создать соединение далее, разберётся любой пользователь.
Network init script config
Into /etc/modules add line:
8021q
In /etc/network/interfaces to section iface add parameter:
vlan-raw-device eth0
The interface name should be the raw interface name (the same as specified by vlan-raw-device), then a dot, then the VLAN ID, for example eth0.100. It can instead be «vlan» then the VLAN ID, for example vlan100. In either case, the VLAN ID is on the end, and this is the only place that it is configured. Eg:
auto eth0.222 iface eth0.222 inet static address 10.10.10.1 netmask 255.255.255.0 network 10.10.10.0 broadcast 10.10.10.255 vlan-raw-device eth0
Howto create fault tolerant bonding with vlan (Etch)
Howto configure one of the above server active backup bonding 3 vlan {vlan10,vlan20,vlan30} Debian networking without SPOF without native vlan.
aptitude install vlan ifenslave-2.6
DHCP Client Configuration
Setting additional DNS Servers
Example: dhclient3 uses /etc/dhcp/dhclient.conf. The setting you want is
supersede domain-name-servers 12.34.56.78, 12.34.56.79;
or perhaps
prepend domain-name-servers 12.34.56.78, 12.34.56.79;
Setting additional search domains
adding search domains for VPNs or local virtual networks:
append domain-name " virt vpn";
Note the leading space since the string is literally appended to the search domain provided by other configurations.
See the dhclient.conf(5) manual page for details.
Bridging
Bridging puts multiple interfaces into the same network segment. This is very popular when connecting a server to multiple switches for high availability or with virtualization. In the latter case it is usually used to create a bridge in the host (eg. dom0) and put the virtual interfaces of the guests (domU) into the bridge.
The bridge-utils package is required to create bridged interfaces.
Example: Connect a server to 2 switches (via eth0 and eth1) by defining bridge 0 and give the server an IP address in this subnet:
auto br0 iface br0 inet static address 10.10.0.15/24 gateway 10.10.0.1 bridge_ports eth0 eth1 up /usr/sbin/brctl stp br0 on
If a server is connected to multiple switches then you usually need to run the spanning tree protocol to avoid loops. Therefore STP must be turned on via an «up» command as shown above.
Example: Bridge setup without IP address configuration (use «manual» instead of «static») to «forward» an interface to a guest VM. (The static bridge config contains only 1 physical interface. The virtual interface will be added to the bridge when the VM is started.)
auto br1 iface br1 inet manual bridge_ports eth4 up /usr/sbin/brctl setageing br1 0 up /usr/sbin/brctl stp br1 off
Note: The Linux bridge supports only STP, no RSTP (Rapid Spanning Tree). Therefore it supports only the old STP Costs, not the new RSTP Costs (see ). This is usually fine with Cisco Switches, but eg. Juniper switches use the RSTP costs and therefore this may lead to different spanning tree calculations and loop problems. This can be fixed by settings the costs manually, either on the switch or on the server. Setting the cost on the switch is preferred as Linux switches back to the default costs whenever an interface does down/up.
Файл hosts — как первый шаг к созданию DNS
Для решения задачи разработчики решили использовать словарь, который связывал уникальное имя и IP-адрес каждого компьютера в сети. Таким словарём стал файл hosts.txt, который и отвечал за привязку IP-адреса к имени компьютера. Файл лежал на сервере Стэнфордского исследовательского института, и пользователи сети регулярно вручную скачивали этот файл на свои компьютеры, чтобы сохранять актуальность словаря, ведь новые компьютеры появлялись в сети почти каждый день.
Выглядел hosts.txt тогда (да и сейчас) таким образом:
При наличии такого файла на компьютере пользователя для связи с компьютером Майка, можно было не запоминать цифры, а использовать понятное латинское имя «MIKE-STRATE-PC».
Посмотрим, как выглядит файл и попробуем добавить туда новое имя, чтобы подключиться к компьютеру с использованием данного имени. Для этого отредактируем файл hosts. Вы можете найти его на своём компьютере по следующему адресу:
- В Unix-системах:
- В Windows-системах:
Компьютеру с IP-адресом 192.168.10.36, который находится внутри локальной сети мы указали имя «MIKE-STRATE-PC». После чего можно воспользоваться командой ping, которая пошлёт специальный запрос на компьютер Майка и будет ждать от него ответа. Похоже на то, как вы стучитесь в дверь или звоните в звонок, чтобы узнать, «есть ли кто дома?» Такой запрос можно послать на любой компьютер.
По мере развития сети и «обрастания» её новыми клиентами, такой способ становился неудобным. Всем пользователям компьютеров было необходимо всё чаще скачивать свежую версию файла с сервера Стэнфордского исследовательского института, который обновлялся вручную несколько раз в неделю. Для добавлений же новых версий было необходимо связываться с институтом и просить их внести в файл новые значения.
В 1984 году Пол Мокапетрис (Paul Mockapetris) описал новую систему под названием DNS (Domain Name System / Система доменных имён), которая была призвана автоматизировать процессы соотнесения IP-адресов и имён компьютеров, а также процессы обновления имён у пользователей без необходимости ручного скачивания файла со стороннего сервера.
Сетевые интерфейсы в статичных сетях
Полное описание синтаксиса файла настроек интерфейсов /etc/network/interfaces доступно по команде
man interfaces
Основные опции настройки:
Опция |
Значение |
---|---|
auto <Имя_интерфейса> |
Автоматический запуск указанного интерфейса при запуске системы |
allow-auto <Имя_интерфейса> |
Автоматический запуск указанного интерфейса при запуске системы |
allow-hotplug <Имя_интерфейса> |
Автоматический запуск указанного интерфейса при обнаружении ядром события подключения к этому интерфейсу |
Опции, начинающиеся с «iface <config_name> …» |
Определяют сетевую конфигурацию <config_name> и имеют следующий синтаксис: iface <config_name> <address_family> <method_name><option1> <value1><option2> <value2>… |
Опции, начинающиеся с «mapping <interface_name_glob>» |
Определяют соответствие значения <config_name> и <interface_name>.Для простых конфигураций не применяются. |
Опции, начинающиеся с симовола «#» |
Игнорируются, как комментарии. Комментарии, начинающиеся не с начала строки не поддерживаются. |
Опции, заканчивающиеся символом «\» | Продолжение опции в следующей строке |
Интерфейс локальная петля (loopback)
Автоматическое включение интерфейса локальной петли при запуске системы задаётся в /etc/network/interfaces следующими командами:
Этот интерфейс всегда присутствует в стандартном файле /etc/network/interfaces.
Интерфейс со статическим адресом
В примере подразумевается следующее:
- Диапазон IP-аресов локальной сети: 192.168.11.0 — 192.168.11.255
- IP-адрес шлюза: 192.168.11.1
- Собственный IP-адрес интерфейса 192.168.11.100
- The resolvconf package: installed
- Имя домена: «example.com» (используется пакетом resolvconf)
- IP-адрес сервера DNS: 192.168.11.1 (используется пакетом resolvconf)
При этом, если не используется пакет resolvconf, соответствующая настройка параметров DNS должна быть выполнена вручную в файле /etc/resolv.conf:
Systemd-networkd / systemd-resolved
Для использования служб systemd-networkd / systemd-resolved во избежание конфликтов следует отключить, остановить и заблокировать все остальные службы управления сетевыми интерфейсами:
sudo systemctl —now mask NetworkManagersudo systemctl —now mask networkingsudo systemctl —now mask resolvconf
И разблокировать и запустить systemd-networkd / systemd-resolved:
sudo systemctl unmask systemd-networkdsudo systemctl enable systemd-networkdsudo systemctl start systemd-networkdsudo systemctl unmask systemd-resolvedsudo systemctl enable systemd-resolvedsudo systemctl start systemd-resolved
Конфигурациионные файлы сетевых служб systemd хранятся в каталоге /etc/systemd/network. Доступны следующие типы конфигурационных файлов:
- .link – описывают физические параметры каждого интерфейса: имя, MAC, MTU и другие
- .network – описывают параметры сети: IP, маршруты, DNS и другие
- .netdev – описывают виртуальные интерфейсы, мосты
Описания содержимого конфигурационных файлов доступны в общей системе документации:
man systemd-networkdman systemd.linkman systemd.networkman systemd.netdevman systemd-resolved
Мобильный режим
В мобильном режиме используется сетевой менеджер connman, а файл /etc/resolv.conf заменяется на ссылку на файл /var/run/connman/resolv.conf.
Сетевой менеджер connman поддерживает собственный интерфейс командной строки connmanctl.Описание команд commanctl доступно в системе документации:
man connmanctl
Графический интерфейс для работы с connman доступен в мобильной версии ОС Astra Linux.
Сетевые настройки на сервере Debian
Вопрос настройки сети я уже кратко поднимал в теме начальной настройки Debian. Я рекомендую с ней ознакомиться и выполнить некоторые подготовительные действия, чтобы было удобнее работать далее. Сейчас мы подробно разберем все наиболее значимые нюансы сетевых настроек, которые могут пригодиться в повседневной работе.
Первоначальная настройка сети начинается во время установки сервера. Если у вас есть сетевой интерфейс и dhcp сервер в сети, то сеть сконфигурируется автоматически на основе полученных настроек и будет готова к работе. В последствии вы можете выполнить настройку сети в Debian через консоль с помощью программ ip или ifconfig. Наиболее популярным и современным средством на текущий момент является ip, поэтому в дальнейшем рассмотрим вопрос конфигурации сетевых интерфейсов с ее помощью. Про ifconfig тоже не забудем. Рассмотрим ее позже отдельно.
Отдельно стоит такой инструмент управления сетевыми подключениями как Network manager. Он используется в сочетании с графическими оболочками, которых на сервере обычно нет, поэтому вопрос его настройки я не буду рассматривать. Мне просто не на чем это делать, да и не вижу смысла.
Есть 2 различные возможности изменить сеть в Debian:
- Настройка сети из консоли с помощью указанных ранее консольных программ.
- С помощью редактирования конфигурационного файла сетевых интерфейсов /etc/network/interfaces.
Мы рассмотрим оба этих варианта. Вводная теоретическая часть окончена, приступаем к практике.
Пользователи
Чтобы создать пользователя user1 нужно ввести команду
adduser user1
Если Вы получили сообщение
прочитайте решение
Если этот пользователь вам надоест его можно удалить командой
deluser user1
Если вы забудете пароль пользователя, то из-под root его можно будет поменять командой
passwd user1
Список пользователей лежит в файле /etc/passwd чтобы его открыть вводим
cat /etc/passwd
Узнать в каких группах состоит пользователь user1
groups user1
Добавить пользователя user1 в группу group1
usermod -G group1 user1
Добавить пользователя sinij и в группу group1 и в группу bks_fans
usermod -G group1,bks_fans sinij
Изменить основную группу пользователя user1 на group2
(по умолчанию обычно группа называется так же как пользователь)
usermod -g group2 user1
Узнать список всех групп
cat /etc/group
Чтобы получить не весь список, а только обычные пользовательские группы
cat /etc/group | grep 1
chgrp -R users /home/movies
Пользователь и система
Используя bash, вы можете легко получить любую необходимую вам техническую информацию о пользователях и системе.
Если вы хотите идентифицировать, под каким пользователем авторизованы в данный момент, вам нужно ввести в командную строку следующую команду:
whoami
Если вам нужно узнать не только о вашем, но и о других пользователях, находящихся в данный момент в этой операционной системе, используйте команды:
who
или
w
В отличие от whoami, эти команды показывает более подробную информацию: кроме имени пользователя вы также узнаете о том, какая используется терминальная линия, время начала сеанса, IP-адрес и некоторые другие данные.
Что касается данных о системе, то с ними можно ознакомиться, используя команду uname. Сама по себе эта команда даст вам не так много информации – только название системы. Однако если вы будете использовать ключи, то сможете узнать гораздо больше.
Ключи – это специальные аргументы, которые пишутся через пробел после команды и начинаются с одного или двух дефисов. Они определяют параметры, которые будут применены к команде. Как правило, узнать о доступных ключах вы можете, написав команду и —help (либо -help): к примеру,
uname --help
У команды uname вы можете задать ключ -a (или —all), и тогда на экран будет выведена вся информация об операционной системе:
uname -a
Если вас интересуют конкретно данные о ядре, то наберите следующую команду:
uname -rv
В этом случае вы узнаете о релизе и версии ядра операционной системы.
Получить информацию обо всех процессах можно при помощи этой команды:
ps -a
А команда pstree выведет информацию в виде дерева процессов.
Узнать сетевое имя машины вы можете с помощью команды hostname.
Монтирование дисков
Подготовка
Нужно создать папку к которой примонтируется диск. Например, для диска
/mnt/w7free
mkdir /mnt/w7free
Или для флешки
mkdir /mnt/flashcard
Шаг 1.
Перед тем как монтировать диск нужо сначала понять какие диски подключены к компьютеру.
Есть несколько способов сделать это: lsblk, ls/dev/sd*, fdisk -l и другие
Получить список всех устройств, включая не примонтированные
lsblk | grep sd
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 461.4G 0 part /
└─sda3 8:3 0 3.9G 0 part
sdb 8:0 0 100.0G 0 disk
└─sdb1 8:1 0 512M 0 part /home
Существуют также диски
NVM (Non-Volatile Memory)
которые начинаются на nvm.
Их придётся смотреть другой командой — либо воспльзуйтесь
lsblk | grep nvm
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/efi
├─nvme0n1p2 259:2 0 976.6M 0 part /boot
└─nvme0n1p3 259:3 0 475.5G 0 part
└─nvme0n1p3_crypt 253:0 0 475.5G 0 crypt /
Реальные физические диски получают буквы a,
b и так далее. То есть sda это первый диск, sdb — второй и так далее.
Виртуальные разделы получают цифры. Диск sda поделен на три части а sdb состоит целиком из sdb1
Следующие два способа я делал на другом компьютере.
Второй способ — ls/dev/sd* и ls /dev/nvm*
ls /dev/sd*
/dev/sda /dev/sda2 /dev/sda5 /dev/sdb1 /dev/sdb5 /dev/sdb7
/dev/sda1 /dev/sda3 /dev/sdb /dev/sdb2 /dev/sdb6 /dev/sdb8
И для NVM дисков
ls /dev/nvm*
/dev/nvme0 /dev/nvme0n1 /dev/nvme0n1p1 /dev/nvme0n1p2 /dev/nvme0n1p3
Третий способ — fdisk -l, возможно нужно ввести sudo fdisk -l
debian:/home/andrey# fdisk -l
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63e54f64
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sda2 206848 100558847 50176000 7 HPFS/NTFS/exFAT
/dev/sda3 100558848 1953521663 926481408 f W95 Ext’d (LBA)
/dev/sda5 100560896 1953521663 926480384 7 HPFS/NTFS/exFAT
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xbbc1fe9a
Device Boot Start End Blocks Id System
/dev/sdb1 * 63 41785064 20892501 83 Linux
/dev/sdb2 41785126 976768064 467491469+ f W95 Ext’d (LBA)
/dev/sdb5 41785128 54283634 6249253+ 82 Linux swap / Solaris
/dev/sdb6 54283698 521887589 233801946 83 Linux
/dev/sdb7 521887653 585826289 31969318+ b W95 FAT32
/dev/sdb8 585826353 976768064 195470856 7 HPFS/NTFS/exFAT
Из этих данных можно сделать вывод о том, что физически жестких дисков видно два: sda и sdb, один из них на 1 Тб а другой
на 500 Гб. Предположим, что примонтировать нужно диск sda5 — можно
Шаг 3 (для флэш карты)
Снова используем команду
ls /dev/sd*
или
fdisk -l
Все новое по сравнению с предыдущим разом и есть ваша флешка. Причем, если появилось, например,
sdb и sdb1, то sdb — это флешка в целом (не знаю как это понять), а sdb1
— обычно и есть раздел, который нужно будет монтировать.
Шаг 4
Монтирование образа.
Само слово «монтирование» может смутить начинающего пользователя. Смысл всей манипуляции —
показать системе как связать какой-то из видимых дисков с какой-то папкой.
mount /dev/sda5 /mnt/w7free
Для флэшкарты
Предположим, что новый диск который мы нашли в Шаге 3. называется
sdс1
mount /dev/sdс1 /mnt/flashcard
Если нужно указать файловую систему, то пишем, например
mount -t vfat /dev/sdb /mnt/flashcard
где vfat — это указание файловой системы (fat),
-t это от слова type тип.
Установка Дебиан 9 на raid
Рассмотрим вариант установки debian на софтовый рейд mdadm. Эта актуальная ситуация, когда вы разворачиваете систему на железе, а не виртуальной машине. К примеру, такая конфигурация будет полезна для установки proxmox. В этой статье я уже рассматривал установку debian на raid1. Но там версия 8-я, а у нас сейчас 9-я. Так что рассмотрю еще раз эту тему, но уже в варианте графического инсталлятора, а не консольного.
Итак, начинаем установку системы по приведенной ранее инструкции. Доходим до этапа разбивки диска и выбираем режим Manual.
Видим состояние наших дисков. В моем случае они полностью чистые, без разделов.
Выбираем режим Guided partitioning и настраиваем разделы на дисках, чтобы получилась такая картинка.
То есть мы на каждом диске создаем по одному пустому разделу, без точки монтирования и файловой системы. Эти пустые разделы мы объединим в raid и там уже сделаем корень системы — . Для swap я не создаю отдельный раздел, чтобы не делать потом отдельный raid для него. Swap сделаем в виде файла после установки системы. Итак, создаем рейд — Configure Software raid. Соглашаемся с предложением сохранить изменения.
Выбираем Create MD device, затем RAID1.
Указываем, что у нас будет 2 устройства в массиве и spare device не будет вовсе.
Далее выбираем 2 наших пустых раздела на каждом из дисков.
В конце соглашаемся на запись изменений. В разделе конфигурирования рейда нажимаем Finish и выходим из него.
Создаем на только что собранном массиве точку монтирования для нашей системы и указываем тип файловой системы. Должно получиться вот так.
На этом завершаем создание рейда и разметку диска и переходим дальше к установке debian, как было описано выше. Никаких принципиальных изменений больше не будет. Единственное, будет задан вопрос о том, что вы не создали раздел swap и будет предложено вернуться и исправить это.
Можно отказаться и продолжить установку.
После установки на raid нужно выполнить несколько важных действий.
- Зайти в систему и создать swap.
- Установить загрузчик на оба диска. Во время установки он был установлен только на один диск.
- Протестировать отказ одного из дисков.
# dpkg-reconfigure grub-pc
Выскочат пару запросов на указание дополнительных параметров. Можно ничего не указывать, оставлять все значения по-умолчанию.
А в конце выбрать оба жестких диска для установки загрузчика.
После установки загрузчика на оба диска, можно проработать вариант отказа одного из дисков. Для начала проверим статус нашего рейда:
# cat /proc/mdstat md0 : active raid1 sdb1 sda1 20953088 blocks super 1.2 [2/2]
Все в порядке, рейд на месте. Выключим сервер, отсоединим один диск и включим снова. Сервер замечательно загрузился с одним диском. Проверяем raid:
# cat /proc/mdstat md0 : active raid1 sda1 20953088 blocks super 1.2 [2/1]
Одного диска нет. Теперь снова выключим сервер и воткнем в него чистый диск такого же объема. То есть имитируем замену сломанного диска на новый. Запускаем сервер и проверяем список дисков в системе:
# fdisk -l | grep /dev Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors /dev/sda1 * 2048 41940991 41938944 20G fd Linux raid autodetect Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Disk /dev/md0: 20 GiB, 21455962112 bytes, 41906176 sectors
Старый диск sda c разделом sda1 и новый диск sdb без разделов. Нам нужно так же на нем создать один раздел на весь диск с типом Linux raid. Сделаем это с помощью cfdisk.
# cfdisk /dev/sdb
Записываем изменения и проверяем, что получилось:
# fdisk -l | grep /dev Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors /dev/sda1 * 2048 41940991 41938944 20G fd Linux raid autodetect Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors /dev/sdb1 * 2048 41943039 41940992 20G fd Linux raid autodetect Disk /dev/md0: 20 GiB, 21455962112 bytes, 41906176 sectors
То, что надо. Второй раздел идентичный первому. Добавим его теперь в рейд.
# mdadm --add /dev/md0 /dev/sdb1 mdadm: added /dev/sdb1
Проверяем статус рейда:
# cat /proc/mdstat md0 : active raid1 sdb1 sda1 20953088 blocks super 1.2 [2/1] recovery = 4.5% (954304/20953088) finish=6.6min speed=50226K/sec
Идет ребилд массива. Надо дождаться его окончания, а пока поставим на новый диск загрузчик, как проделали это ранее. После пересборки массива замена сбойного диска завершена, можно продолжать эксплуатировать сервер в штатном режиме.
Навигация по файловой системе
При навигации по файловой системе в Linux можно использовать как абсолютный, так и относительный пути к ресурсу.
Абсолютный (или полный) путь начинается с корневого каталога, обозначаемого символом , а относительный путь начинается с текущего каталога (в котором в данный момент работает пользователь).
Команда pwd
Команда pwd (от англ. «present working directory») позволяет узнать, в каком каталоге вы находитесь в данный момент:
Результатом будет путь к текущему рабочему каталогу:
Команда cd
Команда cd (от англ. «change directory») используется для смены текущего рабочего каталога. При использовании без каких-либо параметров, команда перенесет вас в ваш домашний каталог:
Чтобы перейти в другой каталог, вы можете использовать абсолютный или относительный путь. Например, перейти в папку Downloads, расположенную в текущем каталоге, можно как через относительный путь:
Так и через абсолютный путь:
Две точки обозначают родительский каталог или каталог уровнем выше текущего. Предположим, что в данный момент вы находитесь в каталоге usr/local/bin. Чтобы перейти в каталог usr/local (на один уровень выше текущего каталога), необходимо ввести:
Чтобы подняться на два уровня вверх:
Чтобы вернуться к предыдущему рабочему каталогу, используйте символ тире в качестве опции:
Если каталог, который вы хотите изменить, имеет пробелы в своем имени, то вы должны либо взять путь в кавычки, либо использовать символ обратной косой черты :
Подключение к Wi-Fi из командной строки с помощью nmcli
NMCLI — это интерфейс командной строки для NetworkManager, который можно использовать как альтернативу графическим менеджерам. NMCLI позволяет пользователю создавать, редактировать и удалять или включать и отключать соединения, а также отображать состояние устройства.
Следующий синтаксис показывает, как подключиться к сети LinuxHint (обнаруженной с помощью ранее использованной команды Iwlist) путем выполнения nmcli со следующими аргументами:
Где d wifi указывает беспроводное устройство, подключение LinuxHint указывает ессид и пароль морочита пароль.
Вы можете получить дополнительную информацию о nmcli на https://linux.die.net/man/1/nmcli
Тестирование сервера bind
Для тестирования новой конфигурации сервера имен bind нам пригодится команда dig из пакета dnsutils. Эту команду можно запустить на любом компьютере с сетевым доступом к вашему DNS-серверу, но лучше всего начать тестирование с локального узла. В рассматриваемом нами примере IP-адрес сервера имен 172.31.0.122. Сначала проверим прямое разрешение имени (получение IP-адреса по доменному имени):
dig @172.31.0.122 www.itproffi.ru
Теперь проверим обратную зону:
dig @172.31.0.122 -x 172.31.1.10
Если вы получили аналогичные результаты, то зона DNS настроена правильно. Вместо команды dig для тестирования можно также использовать команду nslookup.
nslookup 172.31.1.10 172.31.0.122
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Служба DNS (англ. Domain Name System — система доменных имён) используется для получения информации о доменах. Основное её предназначение — увязывать IP-адрес и доменное имя хоста. Посмотреть, к какому DNS-серверу подключен компьютер с Linux на борту, не просто, а очень просто. Как просто и поменять DNS в Linux.
Если Linux снабжён графическим интерфейсом, достаточно открыть сведения о сетевом соединении и посмотреть в строчку DNS.
По понятным причинам нас этот способ не очень интересует. Да и элементы интерфейса могут у разных сред рабочего стола различаться. Рассмотрим просмотр и настройку DNS в терминале Linux.
Традиционно DNS в Linux настраивалась через файл /etc/resolv.conf. Сейчас, однако, он может оказаться бесполезным. Откроем его любым консольным текстовым редактором, например nano:
Мы можем увидеть следующее:
Это значит, что в системе есть systemd, который содержит свой локальный сервер DNS. Его адрес и прописан в этом файле. Однако, в конечном итоге, используются другие DNS-серверы! Посмотреть их можно по-разному. Можно использовать команду
Вы увидите нечто подобное тому, что на скриншоте ниже. Если в системе несколько сетевых интерфейсов, информация будет предоставлена по каждому.
Другой способ — использовать утилиту nmcli. Введите команду
Как изменить DNS? Если в системе нет systemd, то это можно сделать редактированием файла /etc/resolv.conf. Откройте его любым текстовым редактором, найдите строку nameserver и впишите адреса DNS-серверов. Если их несколько, введите их адреса последовательно. Например:
Если в ОС есть systemd, вышеописанных способ бесполезен, поскольку настройки будут перезаписываться при перезагрузке системы. В данном случае нам нужно редактировать файл /etc/systemd/resolved.conf.
В разделе Resolve отредактируйте строку DNS. При необходимости уберите символ # для раскомментирования. Адреса DNS-серверов прописываются через запятую.
Как видим на этом примере, systemd несколько усложнил операционную систему Linux. Однако настроить DNS в ней до сих пор не составляет труда. Кроме того, в Linux можно пользоваться и файлом hosts.
Конфигурационный файл resolv.conf
Конфигурационный файл resolv.conf располагается в /etc/resolv.conf, и содержит информацию которая позволяет компьютеру подсоединяться к сети преобразовывать имя в адрес. (Прим. Не путайте этот конфигурационный файл с программой resolvconf , которая по неудачному стечению обстоятельств имеет такое же название.)
Файл resolv.conf обычно содержит IP адреса серверов имён (DNS) которые будут пытаться перевести имена в адрес для любого узла доступного в сети. Там будут строчки содержащие, примерно, следующие:
nameserver 12.34.56.78 nameserver 12.34.56.79
В этом примере, система исопользует сервера имён с IP адресами 12.34.56.78 и 12.34.56.79. Просто отредактируйте этот файл и введите IP адреса нужных Вам серверов, после слова nameserver. Можно добавить ещё строчки, если у Вас больше 2 серверов имён.
Не используйте этот метод если у Вас установлена программа resolvconf
Конфигурационный файл resolv.conf имеет множество других опций для определения режимов преобразования имён. См. man resolv.conf.
Настройка ssh
Теперь внесем некоторые изменения в настройки сервера ssh. Я рекомендую его запускать на нестандартном порту для исключения лишних общений с ботами, которые регулярно сканируют интернет и подбирают пароли пользователей по словарям.
Существует расхожее мнение, что менять порт ssh это наивность, а не защита. Надо просто настроить сертификаты, fail2ban или еще каким-то образом защитить ssh порт, к примеру, с помощью ограничений iptables, и т.д. Тем не менее, я все же рекомендую порт сменить на нестандартный. Даже если у вас все защищено от подбора паролей, так как вы используете сертификаты, лишние запросы к ssh порту тратят ресурсы сервера, хоть и не очень большие. Идет установка соединения, обмен рукопожатиями и т.д. Зачем вам это нужно?
По-умолчанию в Debian, впрочем как и в любом другом дистрибутиве Linux, ssh сервер работает на 22 порту. Изменим этот порт, к примеру, на 23331. Так же я еще изменяю конфигурацию для разрешения подключения по ssh пользователя root с использованием пароля. В Debian из коробки пользователь root по ssh паролем авторизовываться не может. Изменим и это. Открываем файл настроек:
# nano /etc/ssh/sshd_config
И изменяем там следующие строки. Приводим их к виду:
Port 23331 PermitRootLogin yes
Сохраняем изменения и перезапускаем сервер ssh следующей командой:
# service sshd restart
Проверяем изменения:
# netstat -tulnp | grep ssh tcp 0 0 0.0.0.0:23331 0.0.0.0:* LISTEN 925/sshd tcp6 0 0 :::23331 :::* LISTEN 925/sshd
Все в порядке, сервер слушает 23331 порт. Теперь новое подключение будет осуществлено только по порту 23331. При этом, после перезапуска ssh, старое подключение не будет разорвано.
Я знаю, что многие возражают против подключения рутом к серверу. Якобы это небезопасно и т.д. и т.п. Мне эти доводы кажутся не убедительными. Не понимаю, в чем может быть проблема, если у меня нормальный сложный пароль на root, который не получится подобрать или сбрутить. Ни разу за всю мою работу системным администратором у меня не возникло проблем с этим моментом. А вот работать так значительно удобнее, особенно, когда необходимо оперативно куда-то подключиться по форс мажорным обстоятельствам.
Отдельно тему подключения к серверу под root я рассмотрел в статье про sudo. Кому интересно, переходите в нее и делитесь своим мнением на этот счет.
Команды ifconfig и route
В случаях поиска неисправностей, для отладки и т.д. сетевые интерфейсы можно настроить с помощью команд ifconfig и route. Настроим сначала локальный интерфейс, если он не настроен, тем более что его нужно настроить в любом случае. Он используется для связи программ IP-клиентов с IP-серверами, запущенными на этой же машине :
# ifconfig lo 127.0.0.1
В параметрах команды не указываем маску подсети, т. к. по умолчанию устанавливается маска подсети 255.0.0.0
Проверяем:
$ ping 127.0.0.1 -с 3 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.128 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.115 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.276 ms — 127.0.0.1 ping statistics — 3 packets transmitted, 3 received, 0% packet loss, time 2014ms rtt min/avg/max/mdev = 0.115/0.173/0.276/0.073 ms
Для нашего сетевого интерфейса даём команду:
# ifconfig eth0 192.168.123.254 netmask 255.255.255.0 broadcast 192.168.123.255 up
Проверяем:
$ ping 192.186.123.254 -c 3 PING 192.168.123.254 (192.168.123.254) 56(84) bytes of data. 64 bytes from 192.168.123.254: icmp_seq=1 ttl=64 time=0.312 ms 64 bytes from 192.168.123.254: icmp_seq=2 ttl=64 time=2.16 ms 64 bytes from 192.168.123.254: icmp_seq=3 ttl=64 time=0.248 ms — 192.168.123.254 ping statistics — 3 packets transmitted, 3 received, 0% packet loss, time 2025ms rtt min/avg/max/mdev = 0.248/0.909/2.169/0.891 ms
Перед тем, как добавить маршруты посмотрим таблицу маршрутизации:
# routeKernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
Для локального интерфейса выполняем команду:
# route add -net 127.0.0.0 netmask 255.0.0.0 lo
А для сетевого интерфейса выполняем сначала:
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
А затем добавим основной шлюз:
# route add default gw 192.168.123.1 eth0
Посмотрим опять таблицу маршрутизации:
# route
Kernel IP routing table |
|||||||
Destination |
Gateway |
Genmask |
Flags |
Metric |
Ref |
Use |
Iface |
localnet |
* |
255.255.255.0 |
U |
eth0 |
|||
loopback |
* |
255.0.0.0 |
U |
lo |
|||
default |
192.168.123.1 |
0.0.0.0 |
UG |
eth0 |
Проверяем работоспособность сети так же, как в предыдущем разделе.