Работаем с сетью в терминале Linux
1. Проверка сетевого интерфейса
2. Настройка сетевого интерфейса
3. Проверка соединения
4. Проверка маршрутизации
5. DNS
6. Сетевые соединения
7. Сетевые утилиты
8. Мониторинг сети
9. Firewall
1. Проверка сетевого интерфейса
ifconfig: Показывает информацию о сетевых интерфейсах (в некоторых дистрибутивах может быть заменен на ip a).ip a: Современная команда для отображения информации о сетевых интерфейсах.2. Настройка сетевого интерфейса
ip link set <interface> up: Включить интерфейс.ip link set <interface> down: Выключить интерфейс.ip addr add <ip_address>/<subnet_mask> dev <interface>: Добавить IP-адрес к интерфейсу.ip addr del <ip_address>/<subnet_mask> dev <interface>: Удалить IP-адрес с интерфейса.3. Проверка соединения
ping <hostname/IP>: Проверка доступности узла.traceroute <hostname/IP>: Определение маршрута до узла.mtr <hostname/IP>: Комбинация ping и traceroute для более детального анализа.4. Проверка маршрутизации
route -n: Показать таблицу маршрутизации.ip route: Современная команда для отображения таблицы маршрутизации.5. DNS
nslookup <hostname>: Получение информации о DNS.dig <hostname>: Более мощный инструмент для работы с DNS.6. Сетевые соединения
netstat -tuln: Показывает открытые порты и слушающие сервисы.ss -tuln: Современная альтернатива netstat для отображения сетевых соединений.7. Сетевые утилиты
curl <url>: Отправка HTTP-запросов и получение данных.wget <url>: Загрузка файлов из интернета.8. Мониторинг сети
iftop: Мониторинг трафика в реальном времени.nload: Отображение входящего и исходящего трафика.9. Firewall
iptables: Настройка правил брандмауэра (может быть заменен на nftables в новых системах).ufw: Упрощенный интерфейс для управления брандмауэром.Работаем с текстом в редакторе nano
Запуск nano
Чтобы открыть файл в редакторе nano, используем команду:
Если файл не существует, nano создаст новый файл с указанным именем.
Основные команды
В nano большинство команд выполняются с помощью сочетаний клавиш. Клавиши управления обычно находятся внизу экрана.
Основные сочетания клавиш:
Навигация
Стрелки
Работа с текстом
Сохранение и выход
1. После редактирования файла нажмите
2. Подтвердите имя файла, нажав Enter.
3. Чтобы выйти, нажмите
Запуск nano
Чтобы открыть файл в редакторе nano, используем команду:
nano имя_файлаЕсли файл не существует, nano создаст новый файл с указанным именем.
Основные команды
В nano большинство команд выполняются с помощью сочетаний клавиш. Клавиши управления обычно находятся внизу экрана.
Основные сочетания клавиш:
Ctrl + O: Сохранить файл (появится запрос на подтверждение имени файла).Ctrl + X: Выйти из редактора. Если файл был изменен, nano предложит сохранить изменения.Ctrl + W: Найти текст в файле.Ctrl + K: Вырезать текущую строку.Ctrl + U: Вставить вырезанную строку.Ctrl + J: Выравнивание текста.Ctrl + T: Проверка орфографии (если поддерживается).Навигация
Стрелки
вверх/вниз/влево/вправо: Перемещение по тексту.Ctrl + A: Перейти в начало строки.Ctrl + E: Перейти в конец строки.Ctrl + : Перейти к определенной строке (появится запрос на ввод номера строки).Работа с текстом
Ctrl + ^: Начать выделение текста (первое нажатие фиксирует позицию).Ctrl + K: Вырезать выделенный текст.Ctrl + U: Вставить текст, вырезанный ранее.Сохранение и выход
1. После редактирования файла нажмите
Ctrl + O для сохранения.2. Подтвердите имя файла, нажав Enter.
3. Чтобы выйти, нажмите
Ctrl + X. Если вы не сохранили изменения, nano предложит сохранить их.Используем awk для обработки логов
Условие: Нужно извлечь все IP-адреса из лог-файла
Решение:
Пояснение:
•
•
•
•
Условие: Нужно извлечь все IP-адреса из лог-файла
/var/log/apache2/access.log и подсчитать, сколько раз каждый IP-адрес встречается.Решение:
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nrПояснение:
•
awk '{print $1}': выводит первый столбец (IP-адрес) из каждой строки лог-файла.•
sort: сортирует список IP-адресов.•
uniq -c: подсчитывает количество уникальных IP-адресов.•
sort -nr: сортирует по убыванию числа встреч.Используем rsync для синхронизации директорий
Условие: Синхронизировать локальный каталог
Решение:
Пояснение:
•
•
•
•
Условие: Синхронизировать локальный каталог
/home/user/backup с удалённым сервером по адресу remote.example.com, сохраняя структуру каталогов и файлы.Решение:
rsync -avz /home/user/backup/ user@remote.example.com:/home/user/backup/Пояснение:
•
rsync: утилита для синхронизации файлов.•
-a: архивный режим, сохраняет права и структуру каталогов.•
-v: подробный вывод о процессе.•
-z: сжатие данных при передаче.Используем chroot для создания изолированного окружения
Условие: Создать chroot-окружение для пользователя
Решение:
Пояснение:
•
•
•
Условие: Создать chroot-окружение для пользователя
testuser в каталоге /home/testuser/jail.Решение:
sudo chroot /home/testuser/jail /bin/bashПояснение:
•
chroot: меняет корневой каталог для текущего процесса.•
/home/testuser/jail: путь к изолированному окружению.•
/bin/bash: запускает bash в новом окружении.Используем iptables для ограничения доступа
Условие: Ограничить доступ к серверу по порту
Решение:
Пояснение:
•
•
•
•
•
Условие: Ограничить доступ к серверу по порту
22 только для IP-адреса 192.168.1.100.Решение:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j REJECTПояснение:
•
-A INPUT: добавляет правило для входящих соединений.•
-p tcp --dport 22: правило для порта 22 (SSH).•
-s 192.168.1.100: разрешает доступ только с указанного IP.•
-j ACCEPT: разрешить соединение.•
-j REJECT: отклоняет все остальные соединения.Используем lvm для создания тома
Условие: Создать новый логический том (
Решение:
Пояснение:
•
•
•
•
Условие: Создать новый логический том (
LV) размером 10ГБ на физическом томе (PV), который находится в группе томов (VG) myvg.Решение:
sudo lvcreate -L 10G -n mylv myvgПояснение:
•
lvcreate: утилита для создания логического тома.•
-L 10G: указывает размер нового тома.•
-n mylv: имя нового логического тома.•
myvg: имя группы томов.Устанавливаем и настраиваем RAID-массив
Задача: Создать RAID-массив из трех дисков и настроить его для повышения производительности и надежности.
Решение:
• Установите пакет mdadm и создайте RAID-массив:
• Настройте RAID-массив:
• Добавьте RAID-массив в /etc/fstab для автоматического монтирования:
• Перезагрузите систему и проверьте RAID-массив:
Задача: Создать RAID-массив из трех дисков и настроить его для повышения производительности и надежности.
Решение:
• Установите пакет mdadm и создайте RAID-массив:
sudo apt-get install mdadm
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1• Настройте RAID-массив:
sudo mdadm --detail /dev/md0
sudo mdadm --examine /dev/sda1• Добавьте RAID-массив в /etc/fstab для автоматического монтирования:
sudo echo "/dev/md0 /mnt/raid ext4 defaults 0 0" >> /etc/fstab• Перезагрузите систему и проверьте RAID-массив:
sudo reboot
sudo mdadm --detail /dev/md0Настраиввем сети и DNS
Задача: Настроить сеть и DNS для доступа к интернету и внутренним ресурсам.
Решение:
• Установите пакет
• Настройте DNS:
• Проверьте доступ к интернету и внутренним ресурсам:
Задача: Настроить сеть и DNS для доступа к интернету и внутренним ресурсам.
Решение:
• Установите пакет
network-manager и настройте сеть:
sudo apt-get install network-manager
sudo nmcli con add type ethernet con-name "Сеть" ifname eth0• Настройте DNS:
sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
sudo echo "nameserver 8.8.4.4" >> /etc/resolv.conf• Проверьте доступ к интернету и внутренним ресурсам:
ping google.com
ping внутренний серверНастраиваем файрвол
Задача: Настроить файрвол для защиты системы от несанкционированного доступа.
Решение:
• Установите пакет ufw и настройте файрвол:
• Добавьте правила файрвола:
• Проверьте статус файрвола:
Задача: Настроить файрвол для защиты системы от несанкционированного доступа.
Решение:
• Установите пакет ufw и настройте файрвол:
sudo apt-get install ufw
sudo ufw enable• Добавьте правила файрвола:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https• Проверьте статус файрвола:
sudo ufw statusНастраиваем систему мониторинга
Задача: Настроить систему мониторинга для контроля ресурсов и обнаружения проблем.
Решение:
• Установите пакет
• Добавьте конфигурацию системы мониторинга:
• Перезагрузите систему мониторинга и проверьте доступ к ресурсам:
Задача: Настроить систему мониторинга для контроля ресурсов и обнаружения проблем.
Решение:
• Установите пакет
nagios и настройте систему мониторинга: sudo apt-get install nagios
sudo nano /etc/nagios/nagios.cfg• Добавьте конфигурацию системы мониторинга:
# Define the Nagios server
define host{
host_name nagios
alias Nagios Server
address 127.0.0.1
}• Перезагрузите систему мониторинга и проверьте доступ к ресурсам:
sudo service nagios restart
curl http://example.com/nagiosКоманды обновления
apt:
yum:
dnf:
zypper:
Решение проблем
• Если получаете ошибку при обновлении пакетов ПО, попробуйте использовать команду
• Если получаете ошибку при установке пакета ПО, попробуйте использовать команду
• Если получаете ошибку при удалении пакета ПО, попробуйте использовать команду
apt:
apt update: обновляет список пакетов ПО.apt upgrade: обновляет пакеты ПО до последней версии.apt dist-upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.yum:
yum update: обновляет пакеты ПО до последней версии.yum upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.dnf:
dnf update: обновляет пакеты ПО до последней версии.dnf upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.zypper:
zypper update: обновляет пакеты программного обеспечения до последней версии.zypper upgrade: обновляет пакеты программного обеспечения до последней версии и удаляет устаревшие пакеты.Решение проблем
• Если получаете ошибку при обновлении пакетов ПО, попробуйте использовать команду
apt --fix-broken install или yum --fix-broken.• Если получаете ошибку при установке пакета ПО, попробуйте использовать команду
apt --fix-missing install или yum --fix-missing.• Если получаете ошибку при удалении пакета ПО, попробуйте использовать команду
apt --purge remove или yum --purge.Используем systemd для создания пользовательской службы
Условие: Создать пользовательскую службу, которая будет запускать скрипт
Решение:
Создайте файл службы:
Запишите в файл:
Активируйте службу:
Пояснение:
•
•
•
•
•
Условие: Создать пользовательскую службу, которая будет запускать скрипт
/home/user/myscript.sh при старте системы.Решение:
Создайте файл службы:
sudo nano /etc/systemd/system/myscript.serviceЗапишите в файл:
[Unit]
Description=My custom script
[Service]
ExecStart=/bin/bash /home/user/myscript.sh
Restart=always
[Install]
WantedBy=multi-user.targetАктивируйте службу:
sudo systemctl enable myscript.service
sudo systemctl start myscript.serviceПояснение:
•
[Unit]: раздел для описания службы.•
[Service]: определяет команды для запуска службы.•
ExecStart: путь к исполняемому файлу или скрипту.•
Restart=always: служба будет перезапущена в случае сбоя.•
[Install]: указывает, при каких условиях служба должна быть активирована.Автоматизация обновлений
Задача: Напишите Bash-скрипт, который будет автоматически обновлять систему и очищать ненужные пакеты.
Решение:
Пояснение: Этот скрипт обновляет список пакетов, устанавливает обновления и удаляет ненужные пакеты с подтверждением (
Задача: Напишите Bash-скрипт, который будет автоматически обновлять систему и очищать ненужные пакеты.
Решение:
#!/bin/bash
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -yПояснение: Этот скрипт обновляет список пакетов, устанавливает обновления и удаляет ненужные пакеты с подтверждением (
-y).Парсинг логов с использованием awk
Задача: Из файла
Решение:
Пояснение:
Задача: Из файла
/var/log/auth.log выведите все IP-адреса, которые пытались подключиться к SSH, и подсчитайте, сколько раз каждый IP встречается.Решение:
awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -nrПояснение:
awk ищет строки с "Failed password" и выводит поле с IP (обычно предпоследнее поле). Затем сортируем, считаем уникальные вхождения и сортируем по убыванию.Отслеживание изменений в каталоге
Задача: Используйте
Решение:
Пояснение:
Задача: Используйте
inotifywait для мониторинга каталога /tmp/watchdir и выводите сообщение при любом изменении.Решение:
inotifywait -m /tmp/watchdir -e create -e modify -e delete |
while read path action file; do
echo "Файл $file в $path был $action"
doneПояснение:
inotifywait с опцией -m следит за событиями создания, изменения и удаления файлов в каталоге. Цикл выводит подробности о событии.Рекурсивное переименование файлов
Задача: Переименуйте все
Решение:
Пояснение:
Задача: Переименуйте все
.txt файлы в каталоге /docs и подкаталогах, добавив префикс old_.Решение:
find /docs -type f -name "*.txt" -exec bash -c 'mv "\$0" "$(dirname "\$0")/old_$(basename "\$0")"' {} \;Пояснение:
find ищет файлы и запускает команду mv для переименования с добавлением префикса.Работа с сокетами в Bash
Задача: Создайте TCP-сервер на порту
Решение:
Пояснение:
Задача: Создайте TCP-сервер на порту
12345, который отвечает "Hello" каждому подключению.Решение:
while true; do
echo -e "HTTP/1.1 200 OK\r\n\r\nHello" | nc -l -p 12345
doneПояснение:
nc (netcat) слушает порт и отправляет ответ при подключении.Сравнение двух директорий
Задача: Найдите файлы, которые есть в
Решение:
Пояснение:
Задача: Найдите файлы, которые есть в
/dir1, но отсутствуют в /dir2.Решение:
comm -23 <(ls /dir1 | sort) <(ls /dir2 | sort)Пояснение:
comm сравнивает отсортированные списки, выводит уникальные для первого каталога.Сортировка и удаление повторяющихся строк
Использование команд
Для этого можно воспользоваться командой:
Чтобы сохранить результат в отдельный файл:
Использование команд
sort и uniq вместе помогут отсортировать и удалить повторяющиеся строки в файле и вывести результат в терминал.Для этого можно воспользоваться командой:
sort file.txt | uniq
Чтобы сохранить результат в отдельный файл:
sort file.txt | uniq > output.txt