Архіви категорій: Linux

outrun: execute a local command using the processing power of another Linux machine

Знайшов нещодавно досить цікавий проект, який дозволяє використовувати потужності віддаленого сервера, не встановлюючи при цьому ПЗ (програмного забезпечення) на ньому.

Припустимо, у вас є якесь ПЗ, але вам не вистачає потужності поточного серверу, але є інший сервер. При цьому, на іншому потужнішому сервері зовсім не треба ставити це ПЗ, достатньо поставити лише outrun:

pip3 install outrun

Які обмеження при використанні:

  • Linux only (насправді, можна ще і BSD, але можуть бути нюанси)
  • підтримка fuse (ось із-за цього і обмеження Linux/BSD)
  • ssh root access (так, бо після запуску на віддаленій машині виконується chroot)

Домашня сторінка

[Linux]IPSet + iptables = destroy, create, error

Зіштовхнувся з однією проблемою при використанні iptables разом з ipset, а саме, коли перечитуєш правила, отримуєш помилку:

ipset v7.10: Set cannot be destroyed: it is in use by a kernel component
ipset v7.10: Set cannot be created: set with the same name already exists

Експерементальним шляхом було визначено, що після онулення правил неможливо одразу (мабуть, ще висять у памʼяті) видалити записи у ipset, треба зачекати. Тобто, потрібна от така констукція:

Читати далі

[Linux] Sip via NAT

Розглянемо ситуацію, коли сервер asterisk’a знаходиться за NAT’ом і треба зареєструватися у SIP провайдера. В 99% випадів, проблем немає, але інколи, нічого не виходить. Більш детальний аналіз показує, що пакети SIP чомусь не NAT’яться. Чому? Відповідь трохи незвична, якщо ви працювали з іншими unix like системами. Деякі протоколи (FTP, SIP, …) використовують 2 сесії для успішної передачі даних: сигнальна (встановлення зʼєднання) і передачі даних. У інших ОС (файерволах) вам потрібно самостійно опікуватися цими проблемами, які додаткові порти відкрити або як переналаштувати зʼєднання (наприклад, перейти з active на passive режим в FTP). В Linux для цього придумали механізм conntrack (connection tracker), який “зазирає” всередину зʼєднання і дозволяє створити відповідне динамічне правило (насправді це правило треба створити окремо, але там ми не вказуємо конкретні порти, просто вказуємо, що це відноситься до, наприклад, SIP і пакети автоматично будуть проходити). Чи це добре? І так і ні. Чому добре – зрозуміло. Чому ні? Тому що, інколи виникають проблеми, про які сказано на початку статті.

Читати далі

[Linux] Tracing: bcc-tools, bpftrace

BCC is a toolkit for creating efficient kernel tracing and manipulation programs, and includes several useful tools and examples. It makes use of extended BPF (Berkeley Packet Filters), formally known as eBPF, a new feature that was first added to Linux 3.15. Much of what BCC uses requires Linux 4.1 and above.

bpftrace is a high-level tracing language for Linux enhanced Berkeley Packet Filter (eBPF) available in recent Linux kernels (4.x)

[Linux] NAT over PPPoE

Симптомы: часть сайтов открывается, часть – нет. tcpdump показывает нормальное прохождение пакетов в обе стороны. Всему виной PPPoE с его overhead’ом на размер пакета.

Решение простое:

iptables -I FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Но что оно означает? Оно означает “нормализовать пакет” согласно PMTU, то есть, уменьшить размер MSS так, что бы пакет прошёл от источника к назначению, при этом выбрав наименьший MTU среди всех промежуточных.

Важно! Правило нужно размещать в самом начале.

Debian: история одного обновления

Расскажу об одной, на первый взгляд, странной проблеме. Основная проблема: после обновления с 10 на 11 через некоторое время интерфейс теряет адрес, полученный через DHCP. Откатываешься (это виртуальная машина, поэтому через snapshot’ы такое легко провернуть) обратно на 10-ку – всё работает. Важный момент: такое наблюдается только с серверами у которых DHCP. Так же, на всех серверах (как статических, так и с DHCP) присутствует и другая проблема: после перезагрузки, сервер отвечает на icmp, но ровно 5 минут недоступны вообще никакие сервисы: ssh, http,…

Читати далі

zfs: продолжаем send/receive после обрыва связи

Раньше приходилось заново копировать после каждого обрыва. Но потом придумали механизм, основанный на bookmark’ах, который позволяет продолжить копирование с места разрыва.

Читати далі

Завернуть часть трафика в OpenVPN туннель.

Вводные данные: 2 сервера Linux связаны между собой через OpenVPN туннель. Нужно для части клиентов за одним из концов VPN’a завернуть весь трафик в туннель, то есть, что бы они выходили в интернет не через свой GW, а через удалённый GW, пройдя через VPN.

UPD. В данной схеме есть нюанс: она будет работать, если клиентские машины находятся за хостом, который является OpenVPN-клиентом. В обратном случае, пакеты просто не будут покидать хост, хотя через tcpdump вы их будете видеть. Связано это с особенностями самого OpenVPN’a. Пока не нашёл как это можно решить. Как workaround, можно либо изменить роли клиент-сервер, либо использовать простой туннель или другой тип VPN’a.

Читати далі

Connection timed out H=alt4.gmail-smtp-in.l.google.com

Вот как полностью выглядит сообщение об ошибке:

Connection timed out H=alt4.gmail-smtp-in.l.google.com [142.250.157.26]:25 DT=12m19s: SMTP timeout after sending data block (452056 bytes written)

Примечание: число в скобках и сервер гугла может быть любой.

Читати далі

Отключаем “засыпание” модема

Заметка написана, как обновление статьи, поскольку в новых ядрах произошли некоторые изменения. По сути, здесь будут выдержки из документации по управлению питанием для ядра Linux.

Читати далі