DevOps | Вопросы собесов
5.36K subscribers
32 photos
984 links
Download Telegram
🤔 Как linux выбирает, какой из процессов завершить?

Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.

🚩Как работает OOM Killer?

🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).

🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.

🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.

🚩Пример расчета OOM Score

🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)

🚩Настройка OOM Killer

Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге /proc. Например, для изменения приоритета процесса:
echo -1000 > /proc/<PID>/oom_score_adj


🚩Логирование и мониторинг

При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно /var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Почему Java Memory Model важно при работе с многопоточностью?

Java Memory Model (JMM):
- Определяет как потоки видят переменные и как изменения одной нити становятся видимыми другим.
- Без JMM каждый поток может кэшировать значения, что приводит к несогласованности данных.
- Благодаря JMM можно использовать volatile, synchronized и Atomic переменные с гарантией корректности.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как мы можем поменять последовательное выполнение таски плейбука на машинах в параллельное?

По умолчанию Ansible выполняет задачи последовательно, но можно ускорить выполнение с помощью параметра forks или асинхронных задач (async).

🚩Увеличение параллельных подключений (`forks`)

forks – это количество серверов, на которых Ansible выполняет задачи одновременно.
ansible-playbook -i inventory.ini playbook.yml --forks=10


Установить forks в ansible.cfg:
[defaults]
forks = 10


🚩Асинхронное выполнение (`async` + `poll`)

Если задача выполняется долго, ее можно запустить асинхронно и не ждать завершения.

Пример асинхронного выполнения установки пакета
- name: Установить nginx параллельно
apt:
name: nginx
state: present
async: 300
poll: 0


async: 300 – запускает задачу и дает ей 300 секунд на выполнение
poll: 0 – не ждет завершения, сразу переходит к следующей
Проверить статус запущенных задач:
ansible all -m async_status -a "jid=1234567890" -i inventory.ini


🚩Использование `&` в Shell-командах (`shell` + `nohup`)

Пример запуска задачи в фоновом режиме
- name: Запустить долгий процесс
shell: "nohup long_script.sh &"


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что такое брокеры сообщений?

Брокер сообщений — это система, которая:
- принимает, сохраняет и передаёт сообщения между компонентами системы;
- развязывает отправителя и получателя, повышает отказоустойчивость;
- поддерживает очереди, топики, доставку и масштабирование.
Примеры: Kafka, RabbitMQ, NATS, ActiveMQ.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2🔥1
🤔 Что такое Grafana?

Grafana — это инструмент для визуализации, мониторинга и анализа метрик. Он позволяет строить графики, панели (dashboards) и оповещения на основе данных из разных источников.

🚩Основные возможности Grafana

Дашборды – красивые панели с графиками и таблицами
Много источников данных – Prometheus, MySQL, Elasticsearch, AWS CloudWatch
Настраиваемые алерты – уведомления в Slack, Telegram, Email
Аутентификация – поддержка LDAP, OAuth, GitHub
Плагины и расширения – добавление новых панелей и источников данных

🚩Как работает Grafana?

Grafana подключается к источнику данных (например, Prometheus)
Пользователь создает дашборды с графиками, таблицами и метриками
Настраиваются алерты, которые отправляют уведомления при сбоях

🚩Пример развертывания Grafana с Prometheus

Запуск Grafana в Docker
docker run -d -p 3000:3000 --name=grafana grafana/grafana


Пример запроса в PromQL
node_cpu_seconds_total{mode="idle"}


🚩Как настроить алерты?

Например, если загрузка CPU выше 80%, отправлять сообщение в Telegram.

В Grafana → "Alerting" → "Alert Rules" → "Create Alert Rule"
Записываем условие:
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80


🚩Где используется Grafana?

Мониторинг серверов (CPU, RAM, диски, сеть)
DevOps (Prometheus + Grafana) для Kubernetes, Docker
Бизнес-аналитика (данные из MySQL, Google Analytics)
IoT – графики с датчиков и устройств

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Зачем нужен OOM

OOM (Out Of Memory) — это механизм, срабатывающий, когда системе не хватает памяти для работы, что приводит к завершению процессов с высокой нагрузкой. Он защищает систему от полного исчерпания памяти, освобождая ресурсы, чтобы другие процессы могли продолжать работать. OOM-killer используется для выбора и завершения наименее критичных процессов, предотвращая полное зависание системы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 В чем разница Deployment и DaemonSet?

Deployment и DaemonSet являются двумя типами контроллеров, которые управляют развертыванием и обеспечением жизненного цикла подов (групп контейнеров). Они оба играют важные роли, но используются для разных целей и сценариев.

🚩Deployment

Это контроллер, который обеспечивает декларативное обновление подов и ReplicaSets (другой тип контроллера, который управляет одновременным запуском нескольких экземпляров одного и того же пода). Deployment поддерживает непрерывное развертывание, откат к предыдущим версиям, а также масштабирование подов.

🟠Масштабирование
Вы можете увеличивать или уменьшать количество подов в зависимости от нужд.
🟠Обновления
Поддерживает стратегии развертывания, такие как Rolling Update (постепенное обновление), которое помогает минимизировать простои при обновлении приложения.
🟠Самовосстановление
Автоматически перезапускает поды, которые перестали работать, находятся в ошибочном состоянии или не отвечают.

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80


🚩DaemonSet

Это контроллер, который гарантирует, что на каждом узле кластера Kubernetes запущен экземпляр заданного пода. Когда добавляется новый узел, на нем автоматически запускается под, управляемый DaemonSet, и если узел удаляется, поды удаляются автоматически. Это идеально подходит для запуска служб мониторинга, сбора логов или других утилит, которые должны быть запущены на каждом узле.

🟠Гарантия запуска
Убедитесь, что каждый узел кластера запускает копию определённого пода.
🟠Автоматическое размещение
Когда добавляются новые узлы, на них автоматически размещаются необходимые поды.
🟠Службы уровня узла
Идеально подходит для запуска системных служб, таких как коллекторы логов, системы мониторинга и другие.

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
containers:
- name: fluentd-elasticsearch
image: fluent/fluentd:v1.0
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие типы заголовков есть?

Заголовки в HTTP делятся на:
- General — общие (Date, Connection);
- Request — только для клиента (Accept, User-Agent, Authorization);
- Response — только для ответа (Server, Set-Cookie);
- Entity — описывают тело (Content-Type, Content-Length).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что произойдет если под не пройдет readiness пробу?

Если под (Pod) в Kubernetes не пройдет readiness-пробу (readiness probe), он будет считаться не готовым для обработки запросов.

🚩Что делает readiness-проба?

Readiness-проба используется для определения того, готов ли контейнер в поде обрабатывать входящие запросы. Если проба не проходит, Kubernetes исключает этот под из списка доступных для обслуживания запросов (например, через Service).

🚩Основные последствия

🟠Под не будет получать трафик через Service
Kubernetes автоматически исключает под из группы Endpoints для соответствующего сервиса. Другие компоненты системы, обращающиеся к сервису, не будут направлять запросы в этот под.

🟠Под продолжает работать
Под не будет удален или перезапущен. Kubernetes продолжит проверять его состояние readiness-пробой до тех пор, пока он не станет готовым.

🟠Нет влияния на liveness-пробу
Если readiness-проба не проходит, это не влияет на liveness-пробу. Под будет работать, пока не нарушена его "жизнеспособность".

🟠Аварийное поведение приложения может быть скрыто
Если под зависнет или будет не в состоянии обработать запросы, но при этом не нарушит liveness-пробу, он останется запущенным, но не будет получать трафик.

🚩Как это выглядит на практике?

Пример readiness-пробы
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: my-container
image: nginx
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10


🚩Сценарий

🟠На старте
После создания пода Kubernetes ждет initialDelaySeconds (5 секунд) перед выполнением первой проверки. Если / не отвечает на HTTP-запрос, под считается не готовым.

🟠Если проба продолжает проваливаться
Kubernetes исключает под из группы доступных эндпоинтов. Под остается запущенным, и проба выполняется каждые periodSeconds (10 секунд), пока под не станет готовым.

🚩Что произойдет с трафиком?

Если под — единственный в сервисе: Запросы к сервису вернут ошибку (например, 503 Service Unavailable), так как ни один под не готов.
Если подов несколько: Трафик перенаправляется на другие поды, готовые обрабатывать запросы.

🚩Как это помогает?

🟠Обеспечивает стабильность приложения
Под начинает обрабатывать трафик только после полной инициализации.

🟠Улучшает отказоустойчивость
В случае проблем с подом система перенаправляет запросы на другие экземпляры.

🟠Поддерживает обновления без простоя
Во время обновления подов через Deployment новые поды добавляются в пул доступных только после успешного прохождения readiness-проб.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🤔 Нужно ли базу данных помещать в Kubernetes, если нужно, то почему?

Базы данных можно запускать в Kubernetes для повышения удобства управления, масштабирования и использования облачных возможностей. Однако для критически важных данных лучше использовать managed database services, чтобы снизить административные риски.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое лямбда выражение в Phyton?

В Python лямбда-выражение — это анонимная (безымянная) функция, создаваемая с помощью ключевого слова lambda.

Синтаксис
lambda аргументы: выражение


🚩Примеры

Простая лямбда-функция
add = lambda x, y: x + y
print(add(3, 5)) # Выведет: 8


Эквивалентно обычной функции
def add(x, y):
return x + y


Лямбда внутри map()
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, nums))
print(squares) # [1, 4, 9, 16]


Лямбда внутри sorted()
words = ["apple", "banana", "kiwi"]
sorted_words = sorted(words, key=lambda w: len(w))
print(sorted_words) # ['kiwi', 'apple', 'banana']


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Чем методы REST отличаются?

Методы REST различаются по назначению и идемпотентности:
- GET — для чтения данных, безопасен и идемпотентен;
- POST — для создания ресурса, не идемпотентен;
- PUT — для полного обновления ресурса, идемпотентен;
- PATCH — для частичного обновления;
- DELETE — для удаления, идемпотентен;
- OPTIONS, HEAD — вспомогательные методы для получения метаинформации.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие есть лучшие практики в использовании инструкции add и copy?

ADD и COPY — это инструкции Dockerfile, которые копируют файлы в контейнер. Их использование влияет на размер образа, безопасность и производительность сборки.

🚩Лучшие практики по использованию `COPY` и `ADD`

🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы
Плохо (избыточное использование ADD)
ADD app.tar.gz /app/


Хорошо (явное распаковывание в RUN)
COPY app.tar.gz /tmp/
RUN tar -xzf /tmp/app.tar.gz -C /app && rm /tmp/app.tar.gz


🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа
Плохо (копируем всё без исключений)
COPY . /app


Хорошо (копируем только нужные файлы)
COPY src/ /app/src/
COPY requirements.txt /app/


Добавьте .dockerignore
.git
node_modules
__pycache__
*.log


🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование
Плохо (изменение кода приводит к пересборке зависимостей)**
COPY . /app
RUN pip install -r /app/requirements.txt


Хорошо (сначала зависимости, потом код)
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt

COPY src/ /app/src/


🟠Не используйте `ADD` для загрузки файлов из интернета
Плохо (ADD загружает файл, но не кэшируется)
ADD https://example.com/file.tar.gz /tmp/


🟠Хорошо (используем RUN curl + COPY)
RUN curl -L -o /tmp/file.tar.gz https://example.com/file.tar.gz
COPY file.tar.gz /app/


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🤔 Какой командой загрузить модуль ядра?

Для загрузки модуля ядра используется команда, которая активирует нужный драйвер или подсистему. Это нужно, например, для поддержки сетевых или файловых функций.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊31🔥1🤔1
🤔 Как сделать так чтобы клиенты отдавали метрики в Prometheus?

В Prometheus данные собираются по pull-модели – сервер сам запрашивает метрики у клиентов. Чтобы клиенты отдавали метрики, нужно:

1. Настроить приложение на экспонирование метрик в формате Prometheus.
2. Добавить Prometheus job для сбора этих метрик.
3. Опционально – использовать Pushgateway, если pull-модель не подходит.

🚩Экспонирование метрик в формате Prometheus

Если приложение написано на Go, Python, Java или Node.js. Prometheus предлагает официальные клиентские библиотеки:
Go: [prometheus/client_golang](https://github.com/prometheus/client_golang)
Python: [prometheus_client](https://github.com/prometheus/client_python)
Java: [simpleclient](https://github.com/prometheus/client_java)
Node.js: [prom-client](https://github.com/siimon/prom-client)
Пример для Python

1⃣Установим библиотеку
pip install prometheus_client


2⃣Добавим в код экспонирование метрик
from prometheus_client import start_http_server, Counter
import time

# Создаем счетчик запросов
REQUEST_COUNT = Counter('app_requests_total', 'Total requests')

def process_request():
REQUEST_COUNT.inc() # Увеличиваем счетчик
time.sleep(1) # Имитация обработки запроса

if __name__ == '__main__':
start_http_server(8000) # Открываем метрики на 8000 порту
while True:
process_request()


🚩Пример для Node.js

1⃣Установим библиотеку:
npm install prom-client express


2⃣Код сервера:
const express = require('express');
const client = require('prom-client');

const app = express();
const collectDefaultMetrics = client.collectDefaultMetrics;
collectDefaultMetrics();

const requestCounter = new client.Counter({
name: 'http_requests_total',
help: 'Total HTTP requests',
});

app.get('/', (req, res) => {
requestCounter.inc();
res.send('Hello, World!');
});

app.get('/metrics', (req, res) => {
res.set('Content-Type', client.register.contentType);
res.end(client.register.metrics());
});

app.listen(3000, () => {
console.log('Server running on port 3000');
});


🚩Настроить Prometheus для сбора метрик

Добавляем job в prometheus.yml
scrape_configs:
- job_name: 'my_app'
static_configs:
- targets: ['app_host:8000']


🚩Push-модель через Pushgateway (если нужно)

Если клиент не может сам отдавать метрики (например, это краткоживущий job), можно использовать Pushgateway.

Запускаем Pushgateway:
docker run -d -p 9091:9091 prom/pushgateway


Отправляем метрики через curl
echo "job_execution_time 5.3" | curl --data-binary @- https://localhost:9091/metrics/job/my_batch_job


Настраиваем Prometheus на сбор данных из Pushgateway
scrape_configs:
- job_name: 'pushgateway'
static_configs:
- targets: ['localhost:9091']


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Где Elasticsearch хранит логи?

Elasticsearch хранит данные в индексах (индекс — это аналог таблицы в реляционной БД), на диске в формате, совместимом с Lucene. По умолчанию данные находятся в директории /var/lib/elasticsearch.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊3
🤔 Что такое data source в графане?

Это источник данных, с которым Grafana может взаимодействовать для построения графиков, панелей мониторинга (dashboards) и выполнения запросов. Data Source определяет, как Grafana подключается к внешним системам мониторинга, базам данных или API для получения метрик, логов или другой информации.

🚩Основные аспекты

🟠Типы Data Source
Grafana поддерживает множество типов источников данных, включая:
Системы мониторинга:
Prometheus
Zabbix
InfluxDB
Graphite
Лог-агрегаторы:
Loki
Elasticsearch
Splunk
Облачные сервисы:
AWS CloudWatch
Google Cloud Monitoring
Azure Monitor
Реляционные базы данных:
MySQL
PostgreSQL
API или внешние плагины:
JSON API
OpenTelemetry

🟠Функции Data Source
Подключение: Определяет параметры для соединения с внешним хранилищем данных, такие как URL, токены аутентификации, логин/пароль. Выполнение запросов: Обеспечивает интерфейс для написания запросов к данным через встроенный редактор запросов Grafana. Форматирование данных: Конвертирует данные из формата, предоставляемого источником, в формат, понятный Grafana.

🟠Добавление Data Source
Добавление источника данных выполняется через веб-интерфейс Grafana:
Зайдите в Settings → Data Sources.
Нажмите кнопку Add data source.
Выберите нужный тип источника (например, Prometheus).
Настройте параметры подключения (например, URL, токен, порт).
Нажмите Save & Test, чтобы проверить соединение.

🟠Примеры запросов
Для Prometheus:
rate(http_requests_total[5m])


Для MySQL
SELECT time, value FROM metrics WHERE time > NOW() - INTERVAL 1 HOUR;


🚩Особенности Data Source

🟠Кастомизация
Вы можете устанавливать плагины для подключения к нестандартным источникам данных. Grafana Marketplace предлагает плагины для расширения функциональности.

🟠Мульти-сорсинг
Один дашборд может использовать несколько источников данных, что позволяет объединять данные из разных систем.

🟠Глобальные переменные
Источники данных могут использовать глобальные параметры, такие как время ($__timeFilter), для унификации запросов.

🟠Безопасность
Поддержка различных методов аутентификации: токены, ключи API, OAuth.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Из чего состоит ELK стек?

ELK включает в себя три компонента: Elasticsearch (хранение и поиск данных), Logstash (сбор и преобразование логов) и Kibana (визуализация данных). Вместе они обеспечивают централизованный сбор, хранение и анализ логов.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3💊1
🤔 Как диагностировать проблемы с локальным сервером который не отвечает на ping?

Если сервер не пингуется, это не значит, что он не работает – проблема может быть в сети, настройках брандмауэра или самом сервере.

🚩Пошаговая диагностика

1⃣Проверить, действительно ли сервер включен
Подойти к серверу и проверить:
Горят ли индикаторы сети (LAN) на сервере?
Реагирует ли на клавиатуру/монитор?
Не завис ли сервер? (Может помочь Hard Reboot).

2⃣Проверить, есть ли связь на L2-уровне (MAC-адреса)
Проверяем, видит ли наш компьютер MAC-адрес сервера через `arp`.
Запрос ARP
arp -a | grep 192.168.1.100


Если MAC-адрес есть → пакеты доходят до сервера, но он не отвечает.
Если MAC-адреса нет → возможны проблемы с сетью (кабель, порт, VLAN, DHCP, статика).
Дополнительно проверить соединение
ethtool eth0  # Проверить состояние сетевого адаптера
ip link show eth0 # Интерфейс должен быть UP


3⃣Проверить, отвечает ли сервер на другие запросы (SSH, HTTP, RDP)
Если ping отключен (ICMP заблокирован брандмауэром), но сервер работает, попробуем другие протоколы.
Пробуем зайти по SSH (если это Linux)
ssh [email protected]


Пробуем зайти по RDP (если это Windows)
rdesktop 192.168.1.100


Пробуем зайти через HTTP (если там веб-сервер)
curl -I https://192.168.1.100


4⃣Проверить сетевой интерфейс на сервере
Подключаемся к серверу (если возможно) и проверяем, есть ли у него сеть.
Проверяем IP-адрес сервера
ip a


или
ifconfig -a


Пробуем пропинговать шлюз с сервера
ping 192.168.1.1


5⃣Проверить брандмауэр и iptables на сервере
Если сервер не отвечает на ICMP, его может блокировать брандмауэр.
Linux (firewalld, iptables, ufw)
iptables -L -n | grep DROP  # Проверяем правила iptables
ufw status # Проверяем UFW (если используется)
firewall-cmd --list-all # Проверяем firewalld

Если ICMP запрещен → разрешаем его
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

ufw allow proto icmp

firewall-cmd --add-icmp-block=echo-reply --permanent
firewall-cmd --reload


Windows (Проверить ICMP в брандмауэре Windows)
netsh advfirewall firewall show rule name="File and Printer Sharing (Echo Request - ICMPv4-In)"


Если правило отключено → включаем
netsh advfirewall firewall add rule name="ICMP Allow" protocol=icmpv4:8,any dir=in action=allow


6⃣Проверить маршрутизацию и сеть
Если сервер и клиент находятся в разных VLAN или подсетях, проверяем маршрут.
На клиенте
traceroute 192.168.1.100  # Linux
tracert 192.168.1.100 # Windows


Проверить маршруты на сервере
ip route show


Если маршрут отсутствует → добавляем вручную
ip route add 192.168.1.0/24 via 192.168.1.1


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from Идущий к IT
🔥 Записал видос "Как за 3 минуты настроить Автоотклики на вакансии HeadHunter" больше не придется заниматься этой унылой рутиной

📺 Видео: https://youtu.be/G_FOwEGPwlw
Please open Telegram to view this post
VIEW IN TELEGRAM