191

Системный администратор Linux. Вопросы

Собеседования подходят к завершению, кандидаты согласованы, офферы разосланы. А это значит, что настало время выполнить обещания и выложить вопросы к кандидатам.


Если кто пропустил, вот начало: Системный администратор Linux и продолжение: Продолжение поста «Системный администратор Linux»


В комментариях к предыдущим постам было высказано много мнений по поводу тематики и самих вопросов. Была и критика, и занудство, и здравые мысли. От себя могу сказать, что это не универсальный список вопросов для собеседования. Это то, с чем у нас приходится сталкиваться чаще всего, что надо понимать и без чего рост компетенций будет заметно усложнён. Часть вопросов просто для понимания кругозора кандидата.

Системный администратор Linux. Вопросы

Так же и у нас: лучше долго выбирать наиболее подходящих под специфику и быстро догнать до нужного уровня, чем взять и обучить с нуля пусть даже очень грамотного новичка или не профильного специалиста.


Вопросы будут в порядке сложности. На многие вопросы я постараюсь давать два ответа. Первый - краткий и достаточный для того, что бы его зачесть. Второй ответ - более правильный или более развёрнутый, дающий кандидату преимущество перед остальными. Некоторые вопросы/ответы будут в форме диалога.


Готовы? Ну тогда поехали!


В: Как посмотреть версию ядра?

О: uname -a

В+: А если только версию?


О+: uname -r


В: Как узнать какие модули ядра загружены?

О: lsmod

В+: Как загрузить и выгрузить модуль?

О+: Загрузить командой modprobe, выгрузить ей же, но с ключом --remove, если модуль не используется.


В: Есть сервер с двумя интерфейсами. Один интерфейс смотрит в интернет, другой в локалку. На обоих адреса прописаны статикой. Как пользователей из локалки выпустить в интернет через этот сервер?

О: Маршрут по умолчанию должен быть назначен на интерфейс с интернетом, нужно поднять NAT через iptables и SNAT/DNAT или MASQUERADE, надо включить forward пакетов.

В+: Как именно это сделать?

О+: Для примера шлюз будет на RHEL-based дистрибутиве. В других дистрибутивах есть созвучные или аналогичные опции. В настройках интерфейса с локалкой надо прописать defroute=no, на интерфейсе с интернетом defroute=yes. Либо можно указать маршрут в файле route-название_интерфейса, который располагается рядом с файлом настроек интерфейса. Настройка NAT будет зависеть от того, фиксирован ли список клиентов в локалке или нет. Если фиксирован - настройка через SNAT, если не фиксирован - MASQUERADE. Так же, если к клиенту будут обращения из внешней сети, придётся использовать DNAT. Включить forward пакетов можно временно командой echo 1 > /proc/sys/net/ipv4/ip_forward или постоянно, прописав net.ipv4.ip_forward = 1 в файл /etc/sysctl.conf и загрузить их из файла командой sysctl -p.

О++: Можно ещё поднять прокси и выпустить через него. Например squid. При этом либо явно указав этот прокси у клиентов, либо прозрачно, через iptables и POSTROUTING.


[Дословный синтаксис команд не нужен. Главное, что кандидат понимает что именно и как он будет делать. Если кандидат расскажет ещё что такое этот ip_forward - это будет дополнительным плюсом.]


В: Есть сервер с двумя интерфейсами, к каждому из которых подключён отдельный интернет провайдер. Например первый 100 мегабит, второй 50. Можно ли как-то получить суммарный внешний канал в 150 мегабит?

О: Штатно - нельзя. Но можно поставить пакет iproute2, который позволяет сделать два маршрута по умолчанию, каждый из которых будет иметь свой вес. Например вес первого интерфейса сделать вес 2, а второго - 1. Тогда трафик будет пытаться направляться в соотношении 2 к 1 относительно интерфейсов. В идеальных условиях это даст суммарные 150 мегабит. В реальных - будет зависимость и «тяжелых» сессий, которые будут привязываться к одному конкретному интерфейсу.


В: Как посмотреть какой DNS использует система? У нас настроен DHCP и «в лоб» в настройках на клиенте ничего нет. Файл /etc/resolv.conf много где считается устаревшим и там может быть пусто.

О: Попробовать отрезольвить любой адрес. Например командами nslookup, host или dig. Они показывают какой DNS сервер был использован.

В+: А если у нас какая нибудь Ubuntu, которая из коробки за собой тянет dnsmasq? В таком случае эти команды будут говорить, что DNS сервером является 127.0.1.1 или 127.0.0.53. Как быть?

О+: Если есть dnsmasq, значит у него есть конфиги и логи, в которых можно посмотреть что он использует. В крайнем случае можно использовать tcpdump и посмотреть какие есть исходящие подключения на 53 порт.


В: Как посмотреть таблицу маршрутизации на любой системе?

О: Это можно сделать командами route -n или ip r

В+: А на любой системе одной и той же командой?

О+: Команда netstat -rn работает везде, на Linux, Windows, MacOS, Solaris. Даже на Android. В некоторых системах это единственный вариант посмотреть маршруты.


В: Есть LVM. На одной VG есть 2 LV. Один смонтирован в корень системы, другой в /home. При создании разделов ошиблись и создали корень слишком маленький, а home слишком большой. Можно ли как-то перекинуть место из одного раздела в другой? Оба раздела содержат данные, которые нельзя удалять. В разделе home есть достаточно свободного места. Систему нельзя перезагружать.

О: Уменьшить можно, если файловая система позволяет уменьшать свой размер. Например ext4 позволяет это сделать, а xfs - нет. Увеличивать разделы можно «на горячую». Для уменьшения надо размонтировать /home, уменьшить файловую систему, уменьшить LV с этим разделом, смонтировать /home, увеличить LV раздела с корнем, увеличить файловую систему. Командой lvextend с ключом -r последние два действия можно совместить.

В+: А есть там xfs?

О+: Тогда придётся использовать временный диск. Скопировать на него данные из /home, пересоздать раздел меньшего размера, скопировать данные обратно. Можно командами pvs или vgs посмотреть свободное место на LVM. Возможно не всё пространство было размечено и его можно будет использовать вместо временного диска.


В: Как определить тип файловой системы, в которую отформатирован LV раздел в LVM? Команда fdisk -l показывает, что код раздела 83 или 8E, т.е. раздел Linux или LVM раздел.

О: Если раздел смонтирован можно командами df -T, mount или findmnt

В+: А если не смонтирован?

О+: Команда lsblk с ключом -f показывает тип файловой системы и метки, например для oracleasm дисков.


В: Как получить сводку о всём железе?

О: Командами группы ls. Например lspci, lsusb и т.д. Либо cat /proc/cpuinfo, cat /proc/meminfo и т.д.

В+: А более развёрнуто? Например с серийными номерами памяти и количеством плашек памяти?

О+: Можно через smbios командой dmidecode. Либо через ipmitool подключиться к менеджменту, если он есть, и через его shell достать данные.


В: Как обновить все пакеты, кроме одного? Например кроме ядра.

О: В RHEL-based командой yum update --exclude kernel*. В других дистрибутивах должен быть похожий ключ, который можно посмотреть в man’е к пакетному менеджеру.

В+: А если постоянно исключить из обновления?

О+: Можно использовать yum versionlock kernel*. В других дистрибутивах так же можно поискать в man’е по словам lock, hold или freeze.


Для начала, думаю, достаточно. Продолжение будет в следующих постах. Постараюсь сильно с ними не затягивать.

GNU/Linux

1.2K постов15.6K подписчиков

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Вы смотрите срез комментариев. Показать все
4
Автор поста оценил этот комментарий

Как-то слабовато.

При нормальном остальном - про LAN+WAN=Internet бред столетний с masquerade, мы ж ничего не знаем про LAN маршруты и может и там ещё гейт есть по дефолту, раскидывание по iproute2 и два WAN туда же - формально решено будет, а вот работать треть софта не будет так, да и те только по TCP, потому как бред, так делать абсолютно точно нельзя, weight по lanmac/lanip разве что, но тогда эффективность никакая даже при 20 клиентах.


Причём на вопрос 100+50 без сотрудничества с провайдером уже как раз именно формальный тестовый ответ -- НИКАК НЕЛЬЗЯ, вообще, совсем. Это уже точка зрения формализации. В НЕКОТОРЫХ СЛУЧАЯХ когда много коннектов, TCP/Static endpoint UDP, все соединения исходящие итд можно воспользоваться таким, но это нечасто, и уж подавно нельзя от балды по весу раскидывать коннекты как в случае выше.

раскрыть ветку (10)
1
Автор поста оценил этот комментарий
По второму вопросу - если применить некоторые извращения - то можно и балансить: построить бгп с 2 провайдерами, и от обеих принимать фв или урезанный фв) но это уже не штатными средствами линуха тоже
раскрыть ветку (7)
3
Автор поста оценил этот комментарий

Ну и ты туда же в степь леса...

BGP тоже не в ту степь вообще, это разделение по маршрутам что и так легко сделать. Тут нужен любой link balancing на L2 естественно с одним провайдером и согласовано, это тоже ограничение к слову, два разных не дадут так, хотя в теории возможно прокинуть.

LACP/EtherChannel/802.3ad итд, даже EC уже проприетарный AFAIR, что в Windows Server встроено только не помню, может что из этого. Для PPP соответственно понятно что.

раскрыть ветку (6)
1
Автор поста оценил этот комментарий
Да понятно, но если есть разделение по маршрутам - то и на л2 оно тоже пойдет по разным линкам)) агрегировать 2 канала от разных провов на л2 чисто... Хз, разве что млаг приходит на ум чтоб это реализовать, но не знаю умеют ли линухи в млаг
раскрыть ветку (5)
0
Автор поста оценил этот комментарий

покупаем вдс, ставим по краям микроты(чо нить типа ccr + chr), и херачим eoip в бондинг (не забываем сходить купить индульгенцию чтобы в аду не так горячо было за такой конфиг)

раскрыть ветку (4)
0
Автор поста оценил этот комментарий
Проще уж тогда купить нормальную отдельную сетевую железку полноценную)
раскрыть ветку (3)
0
Автор поста оценил этот комментарий

хуясе у вас запросы то есть ccr-ка это уже неполноценная железка!?

цискари уже совсем хрен за мясо не считают

раскрыть ветку (2)
0
Автор поста оценил этот комментарий
А, я чот подумала что речь про микрот на виртуалке)) но проще поставить фортик тот же, в котором из коробки фактически работает sd-wan
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

ну в точке выхода виртуалка, куда то же нам надо линки приземлить

ещё комментарии
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества