Авторская информация о системном администрировании.
net.ipv4.tcp_max_orphans = 65536
📌 Уменьшаем tcp_fin_timeout (по умолчанию 60). Параметр отвечает за максимальное время пребывания сокета в состоянии FIN-WAIT-2. Это состояние используется в тех случаях, когда другая сторона не закрыла соединение. Каждый сокет занимает порядка 1.5 Кб памяти, что может подъедать её, когда их очень много.
net.ipv4.tcp_fin_timeout = 10
📌 Параметры, отвечающие за проверку TCP соединений в статусе SO_KEEPALIVE: keepalive_time определяет время, через которое начнутся проверки после последней активности соединения, keepalive_intvl определяет интервал проверки, а keepalive_probes количество этих проверок.
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
📌 Стоит обратить внимание на параметры net.ipv4.tcp_mem, net.ipv4.tcp_rmem, net.ipv4.tcp_wmem. Они очень сильно зависят от памяти на сервере и в момент загрузки системы вычисляются автоматически. В общем случае их трогать не обязательно, но иногда можно и вручную подредактировать в сторону увеличения значений.
📌 Отключаем (по умолчанию включено) передачу syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета.
net.ipv4.tcp_syncookies = 0
📌 Отдельное внимание алгоритму, который используется для контроля перегрузки в TCP сетях. Их много (cubic, htcp, bic, westwood и т.д.) и однозначно сказать, что лучше использовать, трудно. В разных схемах нагрузки алгоритмы показывают разные результаты. Управляет этим параметр ядра tcp_congestion_control:
net.ipv4.tcp_congestion_control = cubic
📌 При большом количестве исходящих соединений сервера может не хватать локальных портов для них. По умолчанию используется диапазон 32768 - 60999. Его можно расширить:
net.ipv4.ip_local_port_range = 10240 65535
📌 Включаем защиту от TIME_WAIT атак. По умолчанию она отключена.
net.ipv4.tcp_rfc1337 = 1
📌 Максимальное число открытых сокетов, ждущих соединения, по умолчанию имеет довольно низкое значение. В ядрах до 5.3 это 128, в 5.4 увеличили до 4096. На нагруженных и мощных серверах имеет смысл увеличить:
net.core.somaxconn = 16384
📌 На мощных и нагруженных серверах можно увеличить стандартные значения размера буфера приёма и передачи для всех соединений. Параметр измеряется в байтах. По умолчанию это 212992 или 208 КБ.
net.core.rmem_default = 851968
net.core.wmem_default = 851968
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
📌 Отключаем локальные перенаправления ICMP пакетов. Делать это стоит только в том случае, если ваш сервер не выполняет роль маршрутизатора, то есть у вас обычный веб сервер.
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Дополнительно можно вообще отключить ответ на ICMP запросы на уровне ядра. Я сам так не делаю обычно, но видел компанию, где вообще все сервера не отвечали на пинги.
net.ipv4.icmp_echo_ignore_all = 1
#linux #sysctl #network# cd /var/log
# python3 -m http.server
Теперь по адресу http://172.25.228.79:8000/ вы сможете увидеть содержимое директории /var/log. Если вы хотите получить доступ к этой директории через интернет, то воспользуйтесь указанным сервисом:
# ssh -p 443 -R0:localhost:8000 -L4300:localhost:4300 a.pinggy.io
Эта команда выполнит переадресацию локального порта 8000 по ssh на сервер pinggy.io, который выдаст вам временное доменное имя и настроит доступ к вашему сервису через интернет. Ссылка будет вида https://ranfgxbznvwfo.a.pinggy.io. Пройдя по ней, вы попадёте на свой локальный веб сервер. Статистику по действиям пользователей увидите прямо в консоли сервера.
Всё устроено довольно просто. То же самое вы сможете сделать и со своим сервером, у которого настроен ssh и есть публичный IP адрес. Но с помощью pinggy.io это сделать намного быстрее, так как тут автоматом создаётся и настраивается поддомен.
Сервис платный, но есть бесплатный тарифный план, который доступен без регистрации и каких-то дополнительных действий. Достаточно выполнить команду в консоли с ssh соединением. Основное ограничение бесплатного тарифа — через 60 минут бездействия туннель отключается.
В заметке использовался веб сервер python и переадресация портов ssh. Веб сервер был взят для примера. Настроить доступ через интернет можно к любому локальному сервису.
#сервис #бесплатноwhoami, id , logname, w и т. д. Можно посмотреть через переменные окружения: echo $LOGNAME и echo $USER. Все эти способы вроде бы похожи друг на друга, но на самом деле есть некоторые принципиальные отличия.
К примеру, если запустить whoami и id под sudo, вы увидите пользователя root, а в logname — пользователя, под которым вы запускаете sudo. Это может быть полезно, если выполняете какой-то скрипт под sudo, и вам нужно сделать проверку пользователя, который его запускает. Например, разрешить запуск скрипта только если он запущен конкретным пользователем (script_allow_user).
if [[ "$(logname)" = 'script_allow_user' ]]
then
echo "Start script execution..."
...............................................
else
echo "This user is not allowed to run the script"
fi
Отдельно стоит упомянуть утилиту из состава systemd — loginctl. С её помощью можно узнать массу всего не только об активном пользователе, но и о сессиях, и даже управлять ими.
# loginctl user-status
#bash #script