Авторский блог про сетевое и системное администрирование.
Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Post #874
1.87K
NE @networkadminru
Showing posts older than #876 · Back to latest
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_max_syn_backlog
ss -lnt
netstat -s | grep -i listen
dmesg | grep -i syn
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
overlayfs - это удобный механизм в linux, когда нужно наложить один каталог поверх другого и получить единое дерево файлов, не копируя все данные целиком.
mkdir -p /tmp/overlay/{lower,upper,work,merged}
echo "base config" > /tmp/overlay/lower/app.conf
mount -t overlay overlay \
-o lowerdir=/tmp/overlay/lower,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work \
/tmp/overlay/merged
/tmp/overlay/merged будет виден базовый файл app.conf.
echo "new config" > /tmp/overlay/merged/app.conf
umount /tmp/overlay/merged
app.networkadmin.ru203.0.113.1010.10.20.15
dig app.networkadmin.ru
dig @internal-dns app.networkadmin.ru
dig @8.8.8.8 app.networkadmin.ru
rm отработал, файла уже нет, но df -h показывает почти то же самое заполнение. Кажется, что что-то сломалось, но обычно проблема не в диске, а в том, как устроено удаление файлов.rm, файл не исчезает с диска мгновенно. Удаляется ссылка на файл из файловой системы. Но если какой-то процесс все еще держит этот файл открытым, его данные продолжают занимать место.du файл уже не видит;df показывает, что место все еще занято.
du -sh /var/log
df -h
lsof | grep deleted
lsof +L1
du его уже не увидит, а df - да.grep -R. Рабочий вариант, но на больших каталогах он быстро начинает раздражать: шумный вывод, медленный поиск, лишние файлы. Для таких задач есть ripgrep (rg) - быстрый и удобный инструмент для поиска по тексту. По сути это современный grep, который хорошо подходит и для админки, и для разработки.
apt install ripgrep
rg nginx
rg "connection refused" /var/log
rg "proxy_pass" /etc/nginx
rg "DB_HOST" /opt/myapp
rg -i error /var/log
rg -l "server_name" /etc/nginx
rg "listen 443" -t conf /etc
rg -uu "token"
rg -C 2 "fatal" /var/log
rg "error|failed|denied" /var/log/auth.log
rg "TODO|FIXME" ~/projects
/etc/fstab - один из тех файлов, которые выглядят безобидно ровно до первой ошибки. Одна кривая строка и после перезагрузки сервер может внезапно уйти в emergency mode вместо нормальной загрузки. Поэтому fstab - это не то место, где стоит править на глаз.Что обычно описывают в fstab:
локальные диски;
LVM-разделы;
UUID устройств;
NFS/SMB-шары;
swap;
временные файловые системы.
UUID=xxxx-xxxx /data ext4 defaults 0 2
blkid
/data должен существовать заранее. Если его нет, система может не примонтировать раздел как ожидалось.
_netdev,nofail,x-systemd.automount
0 20 10 0
mount -a
findmnt
systemctl daemon-reload
echo ... >> file - строки дублируются при каждом запускеmkdir dir без -p - ошибка на втором запуске
echo "backup enabled" >> /etc/myapp.conf
useradd deploy
systemctl restart myapp
grep -q "^backup enabled$" /etc/myapp.conf || echo "backup enabled" >> /etc/myapp.conf
id deploy >/dev/null 2>&1 || useradd deploy
systemctl try-restart myapp
mkdir -pln -sfn вместо слепого ln -secho >>
0x0000007B: INACCESSIBLE_BOOT_DEVICE
drvload d:\vioscsi\2k22\amd64\vioscsi.inf
pnputil /enum-drivers
DISM /Image:C:\ /Add-Driver /Driver:D:\vioscsi\2k22\amd64\vioscsi.inf
apt install age
age-keygen -o key.txt
# public key: age1...
AGE-SECRET-KEY-1...
age -r age1xxxxx -o backup.tar.gz.age backup.tar.gz
age -d -i key.txt backup.tar.gz.age > backup.tar.gz
age -r key1 -r key2 -o secrets.txt.age secrets.txt
age -p -o secrets.txt.age secrets.txt
Internet
|
v
[Bastion Host]
|
+---- app01
+---- db01
+---- k8s-node01
+---- internal services
ssh app01.internal
ssh -J bastion user@app01.internal
~/.ssh/config:
Host bastion
HostName bastion.example.com
User admin
Host *.internal
ProxyJump bastion
User admin
ssh app01.internal
/etc/passwd, кто переписал конфиг, кто удалил файл, и когда это произошло.auditd - подсистема аудита в linux, которая умеет фиксировать действия с файлами, процессами, системными вызовами и пользователями. Для админа это один из самых полезных инструментов, когда нужно не гадать, а точно увидеть факт доступа или изменения.
apt install auditd audispd-plugins
yum install audit
systemctl enable --now auditd
/etc/ssh/sshd_config:
auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_watch
-w - watch, следить за файлом-p wa - отслеживать запись (w) и изменение атрибутов (a)-k sshd_config_watch - удобный ключ для поиска событийaudit log.
ausearch -k sshd_config_watch
ausearch -k sshd_config_watch -i
auditctl -w /etc/nginx/ -p wa -k nginx_conf_watch
ausearch -k nginx_conf_watch -i
aureport. Например, краткий отчет по событиям:
aureport -f -i
/etc/audit/rules.d/audit.rules
-w /etc/ssh/sshd_config -p wa -k sshd_config_watch
-w /etc/nginx/ -p wa -k nginx_conf_watch
augenrules --load
apt install httpie
pip install httpie
http GET https://api.netwrokadmin.ru/users
http https://api.netwrokadmin.ru/users
http POST https://api.netwrokadmin.ru/users name=alice role=admin
http POST https://api.netwrokadmin.ru/users <<< '{"name":"alice","role":"admin"}'
http GET https://api.netwrokadmin.ru/users Authorization:"Bearer TOKEN"
http -f POST https://api.netwrokadmin.ru/upload file@backup.tar.gz
Что с его помощью обычно делают:
ограничивают скорость;
дают приоритет важному трафику;
режут шумные сервисы;
эмулируют плохую сеть: delay, loss, jitter;
наводят порядок на WAN-линках и VPN.
tc qdisc add dev eth0 root tbf rate 50mbit burst 32kbit latency 400ms
tbf - Token Bucket Filterrate - лимит скоростиburst - допустимый всплескlatency - максимальная задержка очереди
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root fq_codel
fq_codel хорош тем, что помогает бороться с bufferbloat и в целом делает очередь более адекватной без сложной ручной настройки.
tc qdisc add dev eth0 root cake bandwidth 100mbit
Почему tc кажется страшным:
qdisc
class
filter
parent
handle
flowid
tc qdisc add dev eth0 root netem delay 100ms
tc qdisc add dev eth0 root netem delay 100ms loss 2%