Рубрики
*NIX информация

zigbee2mqtt / napi / arbian

Link:

https://www.zigbee2mqtt.io/
https://www.zigbee2mqtt.io/guide/installation/01_linux.html

Setup:

# Ставлю под рутом ^_^

0. Ставим пакеты:
apt-get install -y curl
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
apt-get install -y nodejs git make g++ gcc libsystemd-dev tmux
corepack enable

1. Создадим каталог
mkdir /opt/zigbee2mqtt

2. На случай если ставили не от рута нужно дать права на каталог
sudo chown -R ${USER}: /opt/zigbee2mqtt

3. Скачиваем гит в каталог
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt

4. Переходим в каталог:
cd /opt/zigbee2mqtt

5. Запустим tmux и продолжим сборку в нем:
tmux

6. Собираем приложение:
pnpm install --frozen-lockfile

6.1 !!! Вот тут могут возникнуть проблемы, если у вас мало оперативки скорее всего сборка зависнет, запустим в один поток сборку
pnpm install --frozen-lockfile --child-concurrency=1

7. После сборки выполняем запуск: 
cd /opt/zigbee2mqtt
pnpm start

Пример сервиса:

cat > /etc/systemd/system/zigbee2mqtt.service << "EOF"
[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
Environment=NODE_ENV=production
Type=notify
ExecStart=/usr/bin/node index.js
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
# Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see systemd.exec(5)
StandardError=inherit
WatchdogSec=10s
Restart=always
RestartSec=10s
User=pi

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable zigbee2mqtt.service
systemctl start zigbee2mqtt.service
systemctl status zigbee2mqtt.service
journalctl -u zigbee2mqtt.service -f

Update Zigbee2MQTT to the latest version

cd /opt/zigbee2mqtt
./update.sh
Рубрики
*NIX информация

home-assistant / orangepi cm4 / debian 12 / container

Links:

https://www.home-assistant.io/installation/#about-installation-methods
https://www.home-assistant.io/installation/raspberrypi/

https://www.home-assistant.io/installation/raspberrypi-other
https://www.home-assistant.io/installation/raspberrypi/
https://www.home-assistant.io/installation/linux
https://www.home-assistant.io/installation/alternative

https://github.com/NabuCasa/buildroot-installer/releases
https://github.com/home-assistant/buildroot
https://github.com/home-assistant/operating-system/releases/download/16.1/haos_rpi4-64-16.1.img.xz

https://developers.home-assistant.io/docs/operating-system/getting-started

https://docs.docker.com/compose/install/linux/
https://docs.docker.com/engine/install/debian/#install-using-the-repository
https://docs.docker.com/engine/install/debian/#install-using-the-repository

Install:

apt-get update
apt-get install docker-compose-plugin

docker compose version

Install Docker from repo docker:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo docker run hello-world

Install docker from docker get:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Uninstall Docker Engine:

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

install home-assist:

https://www.home-assistant.io/installation/odroid

apt-get install docker-compose-plugin

cd /opt
mkdir home-assistant
cd home-assistant
cat > compose.yaml << "EOF"
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /PATH_TO_YOUR_CONFIG:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
    devices:
      - /dev/ttyS9:/dev/ttyS9
    environment:
      DISABLE_JEMALLOC: true
EOF

Проброс железяки в докер:
- /dev/ttyS9:/dev/ttyS9
- /dev/ttyUSB0:/dev/ttyUSB0

Отключение OOM Killer для контейнера:
DISABLE_JEMALLOC: true

Запуск всего безобразия:
docker compose up -d
Рубрики
*NIX информация

netns / создание network namespace и добавление его в сетевую карту

Пример команд:

Создание сетевых пространств (network namespaces):
sudo ip netns add Client
sudo ip netns add Server

Создание виртуальных интерфейсов (veth):
Теперь у тебя есть связанная пара интерфейсов (veth-client <-> veth-server).
sudo ip link add veth-client type veth peer name veth-server

Привязка интерфейсов к namespace:
sudo ip link set veth-client netns Client
sudo ip link set veth-server netns Server

Настройка IP-адресов:
sudo ip netns exec Client ip addr add 192.168.1.1/24 dev veth-client
sudo ip netns exec Server ip addr add 192.168.1.2/24 dev veth-server
Теперь у тебя есть два "виртуальных хоста" (Client и Server), соединенных через veth.

В Client и Server прописываешь маршруты:
sudo ip netns exec Client ip route add default via 192.168.1.254
sudo ip netns exec Server ip route add default via 192.168.2.254

Список всех network namespaces:
sudo ip netns list
ls /var/run/netns/

Просмотр интерфейсов внутри конкретного netns:
sudo ip netns exec Client ip link show
sudo ip -n Client link

Просмотр IP-адресов внутри netns:
sudo ip netns exec Client ip addr

Просмотр таблицы маршрутизации в netns:
sudo ip netns exec Client ip route
sudo ip -n Client route

Проверить ARP-таблицу (соседей):
sudo ip netns exec Client ip neigh

Если netns нет в списке, но процесс использует его:
lsns -t net
ps aux | grep "netns"


Использование namespace: 
ip netns exec  bash
ip netns exec Client bash
ip netns exec Server bash

Пример скрипта который создаст пространства имен, привяжет интерфейсы к ним, добавит адреса, добавит маршруты:


#!/bin/bash
set -x

# Создание namespace'ов, если их ещё нет
ip netns add Server
ip netns add Client

echo "setup Server:"
ip link set enp1s0f0np0 down 
ip link set enp1s0f0np0 netns Server
ip netns exec Server ip addr add 10.0.12.2/24 dev enp1s0f0np0
ip netns exec Server ip link set enp1s0f0np0 up
ip netns exec Server ip link set lo up
ip netns exec Server ip route add default via 10.0.12.1 dev enp1s0f0np0

echo "setup Client:"
ip link set enp1s0f1np1 down 
ip link set enp1s0f1np1 netns Client
ip netns exec Client ip addr add 10.0.11.2/24 dev enp1s0f1np1
ip netns exec Client ip link set enp1s0f1np1 up
ip netns exec Client ip link set lo up
ip netns exec Client ip route add default via 10.0.11.1 dev enp1s0f1np1

# Удаление namespace'ов при необходимости
# ip netns delete Client
# ip netns delete Server

Использование namespace:

Команда:
ip netns exec  bash

Пример:
ip netns exec Server bash
ip netns exec Client bash

Пример сетевые карты разделены на 4 отдельных карточки и проводом подключены Client — Server, без маршрутизации.

#!/bin/bash
set -x

# Создание namespace'ов, если их ещё нет
ip netns add Server
ip netns add Server1
ip netns add Client
ip netns add Client1

echo "setup Server:"
ip link set ens3f0 down 
ip link set ens3f0 netns Server
ip netns exec Server ip addr add 10.0.12.2/24 dev ens3f0
ip netns exec Server ip link set ens3f0 up
ip netns exec Server ip link set lo up


echo "setup Client:"
ip link set enp4s0f0np0 down 
ip link set enp4s0f0np0 netns Client
ip netns exec Client ip addr add 10.0.12.1/24 dev enp4s0f0np0
ip netns exec Client ip link set enp4s0f0np0 up
ip netns exec Client ip link set lo up


echo "setup Server1:"
ip link set ens3f1 down 
ip link set ens3f1 netns Server1
ip netns exec Server1 ip addr add 10.0.13.2/24 dev ens3f1
ip netns exec Server1 ip link set ens3f1 up
ip netns exec Server1 ip link set lo up


echo "setup Client1:"
ip link set enp4s0f1np1 down 
ip link set enp4s0f1np1 netns Client1
ip netns exec Client1 ip addr add 10.0.13.1/24 dev enp4s0f1np1
ip netns exec Client1 ip link set enp4s0f1np1 up
ip netns exec Client1 ip link set lo up

# Удаление namespace'ов при необходимости
# ip netns delete Client
# ip netns delete Server
# ip netns delete Client1
# ip netns delete Server1

Рубрики
*NIX информация

debian 12 / xrdp / kde / xfce4 / удалённый доступ оп RDP

Зачем?

xrdp будет работать с xfc4 удаленно
kde будем пользовать локально

Установка пакетов:

Консольные утилиты:
apt install vim tmux tcpdump curl mc minicom

Ставим пакеты для xrdp:
apt install xrdp xorgxrdp ssl-cert

Установка xfce4:
apt install xfce4 xfce4-goodies xfce4-places-plugin task-xfce-desktop

Установка kde:
apt install kde-full

Решение ошибки при подключении по rdp:
apt install dbus-x11
Решение проблемы зависания консоли:
apt-get remove xscreensaver

Дополнительные программы:
apt install desktop-telegram vscode golang gparted

Настройки:

0. Отключаем постоянные запросы паролей при настройке под учетной записью из группы admin
usermod -aG admin username

0.1 Политики polkit-1 такие полезные 
vim /etc/polkit-1/localauthority/50-local.d/46-all-allow.pkla
-----------------------------------------------------------------------
[Allow ALL from group admin]
Identity=unix-group:admin
Action=*
ResultAny=yes
ResultInactive=yes
ResultActive=yes
-----------------------------------------------------------------------

0.2 или 
!!!  Вместо auth_admin_keep указываем yes
vim /usr/share/polkit-1/actions/org.freedesktop.login1.policy
-------------------------------------------------------------

Reboot the system
Authentication is required for rebooting the system.
                
                        yes
                        yes
                        yes
                
org.freedesktop.login1.set-wall-message

-------------------------------------------------------------

vim /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
--------------------------------------------------------------------- 

   [...]
    
      auth_admin_keep
      yes
      yes
    
--------------------------------------------------------------------- 

P.S Более правильно все таки решить все с помощью pkla


1. Переконфигурируем:
dpkg-reconfigure xserver-xorg-legacy - переключаем разрешение для всех 

2. Редактируем выбор раскладки 
vim /etc/xrdp/xrdp_keyboard.ini
---------------------------
[default_rdp_layouts] # ищем и убеждаемся что файлы существуют
rdp_layout_us=0x00000409 # ищем и убеждаемся что файлы существуют
rdp_layout_ru=0x00000419 # ищем и убеждаемся что файлы существуют
 
 
[layouts_map_ru]
rdp_layout_us=ru,us
rdp_layout_ru=ru,us
 
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
; model=pc105 при необходимости
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

3. Добавить пользователя xrdp в группу ssl-cert 
usermod -aG ssl-cert xrdp
 
4. Выпуск собственного сертификата для XRDP
mkdir /etc/xrdp/certificate/
cd /etc/xrdp/certificate/
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650

4.1 Подключаем сертификаты отредактировав файл
!!! ищем строки  (certificate=) и (key_file=) и правим их
vim /etc/xrdp/xrdp.ini
----------------------
certificate=/etc/xrdp/certificate/cert.pem 
key_file=/etc/xrdp/certificate/key.pem
----------------------
 
4.2 Изменяем права для файла 
chown -R xrdp:xrdp /etc/xrdp/certificate/


5. Запрет авторизации ROOT в XRDP
vim /etc/xrdp/sesman.ini
-------------------------
[Security]
# Авторизация root. true - разрешено false - запрещено
AllowRootLogin=false
-------------------------

6. XRDP черный экран при подключении:

!!! Баг был при использовании использовании ubuntu, debian 10, debian 11
!!! В окружение KDE
!!! Нужно вставить следующие строки в файл /etc/xrdp/startwm.sh
!!! unset DBUS_SESSION_BUS_ADDRESS
!!! unset XDG_RUNTIME_DIR

6.1 vim /etc/xrdp/startwm.sh
------------------------
#!/bin/sh
# xrdp X session start script (c) 2015, 2017 mirabilos
# published under The MirOS Licence

if test -r /etc/profile; then
        . /etc/profile
fi

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

if test -r /etc/default/locale; then
        . /etc/default/locale
        test -z "${LANG+x}" || export LANG
        test -z "${LANGUAGE+x}" || export LANGUAGE
        test -z "${LC_ADDRESS+x}" || export LC_ADDRESS
        test -z "${LC_ALL+x}" || export LC_ALL
        test -z "${LC_COLLATE+x}" || export LC_COLLATE
        test -z "${LC_CTYPE+x}" || export LC_CTYPE
        test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION
        test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT
        test -z "${LC_MESSAGES+x}" || export LC_MESSAGES
        test -z "${LC_MONETARY+x}" || export LC_MONETARY
        test -z "${LC_NAME+x}" || export LC_NAME
        test -z "${LC_NUMERIC+x}" || export LC_NUMERIC
        test -z "${LC_PAPER+x}" || export LC_PAPER
        test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE
        test -z "${LC_TIME+x}" || export LC_TIME
        test -z "${LOCPATH+x}" || export LOCPATH
fi

if test -r /etc/profile; then
        . /etc/profile
fi

test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession

------------------------


7. Название подключенной локальной папки в XRDP
!!! для корректной работы нужны пакеты  
!!! apt install gvfs-fuse gvfs-backends libglib2.0-bin
vim /etc/xrdp/sesman.ini
------------------------
FuseMountName=Mount_FOLDER
------------------------


8. Настройка вида окна авторизации XRDP
vim  /etc/xrdp/xrdp.ini
-----------------------
ls_title=YOU SUPER SERVER # заголовок окна сервера
ls_top_window_bg_color=000000  # Цвет фона RGB
ls_logo_filename=/etc/xrdp/logo_xrdp.bmp #Логотип
 
; Session types # После этой строки ищем и убираем лишние сессии, оставляем только [Xorg]
-----------------------


9. Отключение screensaver
Вариант первый, можно просто его удалить
apt-get remove xscreensaver
 
Вариант второй, можно настроить электропитание в настройках экрана



10. После настройки перезапустим xrdp 
service xrdp restart


.xsession

KDE
cat > .xsession << "EOF"
startplasma-x11
EOF

XFCE4
cat > .xsession << "EOF"
startxfce4
EOF

Команда помогающая изменить gui по умолчанию:

update-alternatives --config x-session-manager 

config /etc/xrdp/xrdp.ini

[Globals]
; xrdp.ini file version number
ini_version=1

; fork a new process for each incoming connection
fork=true

; ports to listen on, number alone means listen on all interfaces
; 0.0.0.0 or :: if ipv6 is configured
; space between multiple occurrences
; ALL specified interfaces must be UP when xrdp starts, otherwise xrdp will fail to start
;
; Examples:
;   port=3389
;   port=unix://./tmp/xrdp.socket
;   port=tcp://.:3389                           127.0.0.1:3389
;   port=tcp://:3389                            *:3389
;   port=tcp://:3389      192.168.1.1:3389
;   port=tcp6://.:3389                          ::1:3389
;   port=tcp6://:3389                           *:3389
;   port=tcp6://{}:3389   {FC00:0:0:0:0:0:0:1}:3389
;   port=vsock://:
port=3389

; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above
; prefer use vsock://: above
use_vsock=false

; regulate if the listening socket use socket option tcp_nodelay
; no buffering will be performed in the TCP stack
tcp_nodelay=true

; regulate if the listening socket use socket option keepalive
; if the network connection disappear without close messages the connection will be closed
tcp_keepalive=true

; set tcp send/recv buffer (for experts)
#tcp_send_buffer_bytes=32768
#tcp_recv_buffer_bytes=32768

; security layer can be 'tls', 'rdp' or 'negotiate'
; for client compatible layer
security_layer=negotiate

; minimum security level allowed for client for classic RDP encryption
; use tls_ciphers to configure TLS encryption
; can be 'none', 'low', 'medium', 'high', 'fips'
crypt_level=high

; X.509 certificate and private key
; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
; note this needs the user xrdp to be a member of the ssl-cert group, do with e.g.
;$ sudo adduser xrdp ssl-cert
;certificate=
;key_file=
certificate=/etc/xrdp/certificate/cert.pem 
key_file=/etc/xrdp/certificate/key.pem

; set SSL protocols
; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'
ssl_protocols=TLSv1.2, TLSv1.3
; set TLS cipher suites
#tls_ciphers=HIGH

; concats the domain name to the user if set for authentication with the separator
; for example when the server is multi homed with SSSd
#domain_user_separator=@

; The following options will override the keyboard layout settings.
; These options are for DEBUG and are not recommended for regular use.
#xrdp.override_keyboard_type=0x04
#xrdp.override_keyboard_subtype=0x01
#xrdp.override_keylayout=0x00000409

; Section name to use for automatic login if the client sends username
; and password. If empty, the domain name sent by the client is used.
; If empty and no domain name is given, the first suitable section in
; this file will be used.
autorun=

allow_channels=true
allow_multimon=true
bitmap_cache=true
bitmap_compression=true
bulk_compression=true
#hidelogwindow=true
max_bpp=32
new_cursors=true
; fastpath - can be 'input', 'output', 'both', 'none'
use_fastpath=both
; when true, userid/password *must* be passed on cmd line
#require_credentials=true
; when true, the userid will be used to try to authenticate
#enable_token_login=true
; You can set the PAM error text in a gateway setup (MAX 256 chars)
#pamerrortxt=change your password according to policy at http://url

;
; colors used by windows in RGB format
;
blue=009cb5
grey=dedede
#black=000000
#dark_grey=808080
#blue=08246b
#dark_blue=08246b
#white=ffffff
#red=ff0000
#green=00ff00
#background=626c72

;
; configure login screen
;

; Login Screen Window Title
#ls_title=My Login Title

; top level window background color in RGB format
ls_top_window_bg_color=009cb5

; width and height of login screen
;
; The default height allows for about 5 fields to be comfortably displayed
; above the buttons at the bottom. To display more fields, make 
; larger, and also increase  and 
; below
;
ls_width=350
ls_height=430

; login screen background color in RGB format
ls_bg_color=dedede

; optional background image filename. BMP format is always supported,
; but other formats will be supported if xrdp is build with imlib2
; The transform can be one of the following:-
;     none  : No transformation. Image is placed in bottom-right corner
;             of the screen.
;     scale : Image is scaled to the screen size. The image aspect
;             ratio is not preserved.
;     zoom  : Image is scaled to the screen size. The image aspect
;             ratio is preserved by clipping the image.
#ls_background_image=
#ls_background_transform=none

; logo
; full path to file or file in shared folder. BMP format is always supported,
; but other formats will be supported if xrdp is build with imlib2
; For transform values, see 'ls_background_transform'. The logo width and
; logo height are ignored for a transform of 'none'.
ls_logo_filename=
#ls_logo_transform=none
#ls_logo_width=240
#ls_logo_height=140
ls_logo_x_pos=55
ls_logo_y_pos=50

; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=65

; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210

; y pos for first label and combo box
ls_input_y_pos=220

; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30

; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30

[Logging]
; Note: Log levels can be any of: core, error, warning, info, debug, or trace
LogFile=xrdp.log
LogLevel=INFO
EnableSyslog=true
#SyslogLevel=INFO
#EnableConsole=false
#ConsoleLevel=INFO
#EnableProcessId=false

[LoggingPerLogger]
; Note: per logger configuration is only used if xrdp is built with
; --enable-devel-logging
#xrdp.c=INFO
#main()=INFO

[Channels]
; Channel names not listed here will be blocked by XRDP.
; You can block any channel by setting its value to false.
; IMPORTANT! All channels are not supported in all use
; cases even if you set all values to true.
; You can override these settings on each session type
; These settings are only used if allow_channels=true
rdpdr=true
rdpsnd=true
drdynvc=true
cliprdr=true
rail=true
xrdpvr=true
tcutils=true
driveredir=true

; for debugging xrdp, in section xrdp1, change port=-1 to this:
#port=/tmp/.xrdp/xrdp_display_10


;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

;[Xvnc]
;name=Xvnc
;lib=libvnc.so
;username=ask
;password=ask
;ip=127.0.0.1
;port=-1
#xserverbpp=24
#delay_ms=2000
; Disable requested encodings to support buggy VNC servers
; (1 = ExtendedDesktopSize)
#disabled_encodings_mask=0
; Use this to connect to a chansrv instance created outside of sesman
; (e.g. as part of an x11vnc console session). Replace '0' with the
; display number of the session
#chansrvport=DISPLAY(0)

; Generic VNC Proxy
; Tailor this to specific hosts and VNC instances by specifying an ip
; and port and setting a suitable name.
;[vnc-any]
;name=vnc-any
;lib=libvnc.so
;ip=ask
;port=ask5900
;username=na
;password=ask
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000

; Generic RDP proxy using NeutrinoRDP
; Tailor this to specific hosts by specifying an ip and port and setting
; a suitable name.
;[neutrinordp-any]
;name=neutrinordp-any
; To use this section, you should build xrdp with configure option
; --enable-neutrinordp.
;lib=libxrdpneutrinordp.so
;ip=ask
;port=ask3389
;username=ask
;password=ask
; Uncomment the following lines to enable PAM authentication for proxy
; connections.
#pamusername=ask
#pampassword=ask
#pamsessionmng=127.0.0.1
; Currently NeutrinoRDP doesn't support dynamic resizing. Uncomment
; this line if you're using a client which does.
#enable_dynamic_resizing=false
; By default, performance settings requested by the RDP client are ignored
; and chosen by NeutrinoRDP. Uncomment this line to allow the user to
; select performance settings in the RDP client.
#perf.allow_client_experiencesettings=true
; Override any experience setting by uncommenting one or more of the
; following lines.
#perf.wallpaper=false
#perf.font_smoothing=false
#perf.desktop_composition=false
#perf.full_window_drag=false
#perf.menu_anims=false
#perf.themes=false
#perf.cursor_blink=false
; By default NeutrinoRDP supports cursor shadows. If this is giving
; you problems (e.g. cursor is a black rectangle) try disabling cursor
; shadows by uncommenting the following line.
#perf.cursor_shadow=false
; By default, NeutrinoRDP uses the keyboard layout of the remote RDP Server.
; If you want to tell the remote the keyboard layout of the RDP Client,
; by uncommenting the following line.
#neutrinordp.allow_client_keyboardLayout=true
; The following options will override the remote keyboard layout settings.
; These options are for DEBUG and are not recommended for regular use.
#neutrinordp.override_keyboardLayout_mask=0x0000FFFF
#neutrinordp.override_kbd_type=0x04
#neutrinordp.override_kbd_subtype=0x01
#neutrinordp.override_kbd_fn_keys=12
#neutrinordp.override_kbd_layout=0x00000409

; You can override the common channel settings for each session type
#channel.rdpdr=true
#channel.rdpsnd=true
#channel.drdynvc=true
#channel.cliprdr=true
#channel.rail=true
#channel.xrdpvr=true


config /etc/xrdp/sesman.ini

;; See `man 5 sesman.ini` for details

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
; Give in relative path to user's home directory
UserWindowManager=startwm.sh
; Give in full path or relative path to /etc/xrdp
DefaultWindowManager=startwm.sh
; Give in full path or relative path to /etc/xrdp
ReconnectScript=reconnectwm.sh

[Security]
;AllowRootLogin=true
AllowRootLogin=false
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false
; When RestrictOutboundClipboard=all clipboard from the
; server is not pushed to the client.
; In addition, you can control text/file/image transfer restrictions
; respectively. It also accepts comma separated list such as text,file,image.
; To keep compatibility, some aliases are also available:
;   true: an alias of all
;   false: an alias of none
;   yes: an alias of all
RestrictOutboundClipboard=none
; When RestrictInboundClipboard=all clipboard from the
; client is not pushed to the server.
; In addition, you can control text/file/image transfer restrictions
; respectively. It also accepts comma separated list such as text,file,image.
; To keep compatibility, some aliases are also available:
;   true: an alias of all
;   false: an alias of none
;   yes: an alias of all
RestrictInboundClipboard=none

[Sessions]
;; X11DisplayOffset - x11 display number offset
; Type: integer
; Default: 10
X11DisplayOffset=10

;; MaxSessions - maximum number of connections to an xrdp server
; Type: integer
; Default: 0
MaxSessions=50

;; KillDisconnected - kill disconnected sessions
; Type: boolean
; Default: false
; if 1, true, or yes, every session will be killed within DisconnectedTimeLimit
; seconds after the user disconnects
KillDisconnected=false

;; DisconnectedTimeLimit (seconds) - wait before kill disconnected sessions
; Type: integer
; Default: 0
; if KillDisconnected is set to false, this value is ignored
DisconnectedTimeLimit=0

;; IdleTimeLimit (seconds) - wait before disconnect idle sessions
; Type: integer
; Default: 0
; Set to 0 to disable idle disconnection.
IdleTimeLimit=0

;; Policy - session allocation policy
; Type: enum [ "Default" | "UBD" | "UBI" | "UBC" | "UBDI" | "UBDC" ]
; "Default" session per 
; "UBD" session per 
; "UBI" session per 
; "UBC" session per 
; "UBDI" session per 
; "UBDC" session per 
Policy=Default

[Logging]
; Note: Log levels can be any of: core, error, warning, info, debug, or trace
LogFile=xrdp-sesman.log
LogLevel=INFO
EnableSyslog=true
#SyslogLevel=INFO
#EnableConsole=false
#ConsoleLevel=INFO
#EnableProcessId=false

[LoggingPerLogger]
; Note: per logger configuration is only used if xrdp is built with
; --enable-devel-logging
#sesman.c=INFO
#main()=INFO

;
; Session definitions - startup command-line parameters for each session type
;

[Xorg]
; Specify the path of non-suid Xorg executable. It might differ depending
; on your distribution and version. Find out the appropriate path for your
; environment. The typical path is known as follows:
;
; Fedora 26 or later    :  param=/usr/libexec/Xorg
; Debian 9 or later     :  param=/usr/lib/xorg/Xorg
; Ubuntu 16.04 or later :  param=/usr/lib/xorg/Xorg
; Arch Linux            :  param=/usr/lib/Xorg
; CentOS 7              :  param=/usr/bin/Xorg or param=Xorg
; CentOS 8              :  param=/usr/libexec/Xorg
; FreeBSD (from 2022Q4) :  param=/usr/local/libexec/Xorg
;
param=/usr/lib/xorg/Xorg
; Leave the rest parameters as-is unless you understand what will happen.
param=-config
param=xrdp/xorg.conf
param=-noreset
param=-nolisten
param=tcp
param=-logfile
param=.xorgxrdp.%s.log

[Xvnc]
param=Xvnc
param=-bs
param=-nolisten
param=tcp
param=-localhost
param=-dpi
param=96

[Chansrv]
; drive redirection
; See sesman.ini(5) for the format of this parameter
;FuseMountName=/run/user/%u/thinclient_drives
;FuseMountName=/media/thinclient_drives/%U/thinclient_drives
FuseMountName=remoute
; this value allows only the user to access their own mapped drives.
; Make this more permissive (e.g. 022) if required.
;FileUmask=077
; Can be used to disable FUSE functionality - see sesman.ini(5)
;EnableFuseMount=false
; Uncomment this line only if you are using GNOME 3 versions 3.29.92
; and up, and you wish to cut-paste files between Nautilus and Windows. Do
; not use this setting for GNOME 4, or other file managers
UseNautilus3FlistFormat=true

[ChansrvLogging]
; Note: one log file is created per display and the LogFile config value
; is ignored. The channel server log file names follow the naming convention:
; xrdp-chansrv.${DISPLAY}.log
;
; Note: Log levels can be any of: core, error, warning, info, debug, or trace
LogLevel=INFO
EnableSyslog=true
#SyslogLevel=INFO
#EnableConsole=false
#ConsoleLevel=INFO
#EnableProcessId=false

[ChansrvLoggingPerLogger]
; Note: per logger configuration is only used if xrdp is built with
; --enable-devel-logging
#chansrv.c=INFO
#main()=INFO

[SessionVariables]
PULSE_SCRIPT=/etc/xrdp/pulse/default.pa

xrdp белый экран raspberry pi

https://bbs.archlinux.org/viewtopic.php?id=277905
https://askubuntu.com/questions/1209300/remote-desktop-on-raspberrypi-not-working
https://raspberrypi.stackexchange.com/questions/133425/connection-problem-giving-up-on-xrdp-with-raspberry-pi-os-11-bullseye
https://github.com/neutrinolabs/xrdp/issues/2053 #Не очевидное решение проблемы белого экрана на raspberry
https://github.com/neutrinolabs/xrdp/wiki/Tips-and-FAQ#why-cant-i-log-the-same-user-on-on-the-graphical-console-and-over-xrdp-at-the-same-time

Вариант 0:
СМОТРИМ ЛОГИ!!!
cat /var/log/xrdp-sesman.log
В каталоге пользователя:
cat .xorgxrdp.*.log
cat .xsession
cat .xsession-errors
Смотрим при подключении:
journalctl -f



Вариант первый:
!!! На малине в принципе все начинает работать сразу из коробки и настройка не требуется.
apt install -y  xrdp 

Вариант второй:
Чтобы решить эту проблему "второй сессии" и разрешить столько сессий, сколько вам нужно, отредактируйте /etc/xrdp/startwm.sh 
и добавьте эти строки перед строками, которые проверяют и запускают Xsession. $HOME/.profile не является частью решения, 
но это то, что должно быть запущено перед началом сессии в любом случае.
unset DBUS_SESSION_BUS_ADDRESS  
unset XDG_RUNTIME_DIR  
. $HOME/.profile

Вариант третий:
Еще в борьбе с белым экраном предлагают удалить пользователя из группы video и render
sudo gpasswd -d  video
sudo gpasswd -d  render

Вариант четвертый:
Eще скрипт установки у людей на raspberry pi
# Install updates
sudo apt update
sudo apt upgrade -y

# Install and configure xRDP
sudo apt install -y xrdp
sudo systemctl enable xrdp
sudo sed -i 's/"DRMDevice" "[[:alnum:]/]+"/"DRMDevice" ""/g' /etc/X11/xrdp/xorg.conf
sudo gpasswd -d $USER video

# Reboot the machine
sudo reboot

Вариант пятый:
P.s. Многие пишут что вообще ничего не трогают и все работает
кто то удаляет из группы video и тоже начинает работать
а самое главное вообще не трогают startwm.sh 

Вариант шестой:
apt-get install xserver-xorg-legacy
vim /etc/X11/Xwrapper.config
----------------------------
allowed_users=anybody
needs_root_rights=yes
----------------------------

Вариант седьмой:
Ошибки dbus
Ставим:
sudo apt install dbus-x11
От пользователя выполняем:
dbus-launch


Вариант восьмой:
https://forums.raspberrypi.com/viewtopic.php?t=387334
Включаем X Activate X11 Server over Wayland on raspi-config utility That's important
Редактируем файл:
Edit /etc/X11/xrdp/xorg.conf
Section "Screen"
Identifier "Screen (xrdpdev)"
Device "Video Card (xrdpdev)"
GPUDevice "Video Card (xrdpdev)" <-- Add this to section...
Monitor "Monitor"


Рубрики
*NIX информация

MPTCP / использовать несколько физических каналов для передачи данных

MPTCP (Multipath TCP)
Multipath TCP позволяет одному TCP-соединению использовать несколько физических каналов для передачи данных. 
Это означает, что ваш клиент может одновременно поддерживать соединение через несколько точек доступа (с разными IP-адресами),
и весь трафик будет распределен по этим соединениям, увеличивая общую пропускную способность.

Как работает MPTCP:
MPTCP добавляет несколько путей к одному TCP-соединению, поэтому даже если один из путей теряет соединение (например, при отключении от точки доступа), 
остальные остаются активными, что снижает риск обрыва.
Клиенты могут одновременно подключаться к нескольким точкам доступа, и MPTCP динамически распределяет трафик между ними на уровне TCP.
Это особенно полезно для устройств, которые перемещаются между несколькими сетями или точками доступа, как в вашем случае с автомобилями.

Проверка:
sysctl net.mptcp.enabled
ss -M
dmesg | grep MPTCP


!!! Начиная с версии ядра 5.6, MPTCP был интегрирован в ядро Linux.


Пример использования mptcpize для curl:
apt install mptcp-tools
mptcpize curl http://example.com

echo "net.mptcp.enabled = 1" | sudo tee -a /etc/sysctl.conf
echo "net.mptcp.mptcp_path_manager=fullmesh" | sudo tee -a /etc/sysctl.conf
echo "net.mptcp.mptcp_subflows=4" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p



Рубрики
*NIX информация

Тюнинг сети linux / производительность / Контроль перегрузки

ссылки:

https://habr.com/ru/articles/168407/
https://habr.com/ru/articles/331720/
https://habr.com/ru/companies/otus/articles/550820/
https://habr.com/ru/articles/115527/
RTT Calculator
https://www.opennet.ru/base/net/tcp_tune.txt.html

Алгоритмы:

BIC TCP
CUBIC TCP
Highspeed TCP
H-TCP
TCP Hybla
TCP-Illinois
TCP Low Priority
TCP Vegas
TCP NewReno
TCP Veno
TCP Westwood+
YeAH-TCP
BBR

BIC, CUBIC, Highspeed, H-TCP, NewReno, Illinois - эти алгоритмы созданы для так называемых long fat networks ­— длинных (а значит, с высоким RTT) и быстрых сетей.
TCP Hybla - здорово ведет себя на спутниковых линках.
Veno - создан для беспроводных сетей с высокой потерей пакетов.
TCP Low Priority - вообще сложно назвать congestion алгоритмом, т.к. он мало что делает, а просто пытается отправить пакет без очереди.
TCP Vegas - иногда применяют на серверах с большим количеством подключений т.к. он обеспечивает почти постоянную скорость, хоть и далеко не идеальную.
Westwood+ - комбинированный алгоритм
YeAH-TCP - молодой, ведет себя более-менее во всех случаях.

CUBIC, который используется по умолчанию во всех дистрибутивах, совершенно не подходит, например, для 3G-соединений


На каналах вроде домашнего вайфая, рекомендую использовать Westwood или H-TCP. 
Для проводных каналов хорошим выбором может быть YeAH (если у вас не наблюдается с ним проблем), H-TCP или Illinois.

рекомендации:
net.ipv4.tcp_fastopen=1 - Ускоряет а handshake для поддерживаемых алгоритмов
net.ipv4.tcp_slow_start_after_idle=0 - Добавит скорости для SPDY и других keep-alive соединений

ethtool

Длина очереди передачи.
В современных сетях для 1G используется значение 1000, для 10G используется значение 10000.
ifconfig eth0 txqueuelen 1000
 
Отключаем checksum offload для правильной работы шейперов
ethtool --offload eth0 rx off tx off
 
Отключаем аппаратную поддержку 802.1q
ethtool -K eth0 rxvlan off txvlan off
 
Увеличивает размер буфера, чтобы избежать дропов.
Убедитесь, что ваша сетевая поддерживает такой размер буфера выполнив ethtool -g ethX
ethtool -G eth0 rx 2048 tx 2048
 
Отключает авто определение скорости порта
ethtool -A eth0 autoneg off rx off tx off
 
Отключим оффлоады для лучшей производительности TCP
ethtool -K eth0 tso off gso off gro off lro off

Flow control  автосогласование  Advertised pause frame use
"Advertised pause frame use" и "Link partner advertised pause frame use" указывают на режим управления потоком. 
Если они установлены в Symmetric, то управление потоком включено. Если установлено No, то оно выключено. 
Проверяем:
ethtool -a eth0 
чтобы включить
ethtool -A eth0 autoneg on rx on tx on



Лимиты:

ulimit -a - Показать текущие лимиты

Пример установки лимитов: 
ulimit -n 30000

Некоторые приложения (Proxy, Web сервера, базы данных) используют большие количества открытых файлов и сокетов, 
и как правило, установок по умолчанию им недостаточно.
 
Оболочка/скрипт
За лимиты оболочки отвечает ulimit. 
Текущее состояние можно проверить ulimit -a. 

Например, что-бы увеличить кол-во открытых файлов с 1024 до 10240 нужно сделать:
ulimit -n 10240

пользователь/процесс
Лимиты пользователей и процессов устанавливаются в /etc/security/limits.conf. 
Например:
# cat /etc/security/limits.conf
*   hard    nproc   250              # Лимит пользовательских процессов
asterisk hard nofile 409600          # Лимит открытых файлов для приложения
 
 
Обще системные лимиты устанавливаются командой Sysctl. 
Большинство этих переменных, действуют до перезагрузки, что-бы ограничения остались после ребута, внесите их в файл /etc/sysctl.conf.
сat /etc/sysctl.conf               # Показать файл
sysctl -a                          # Показать все системные переменные
sysctl fs.file-max                 # Показать текущие значения
sysctl -w fs.file-max=102400       # Изменить максимальное кол-во открытых файлов
fs.file-max=102400                 # Постоянное значение в файле sysctl.conf
cat /proc/sys/fs/file-nr           # Кол-во используемых файловых дескрипторов


sysctl


Маршрутизация между интерфейсами, по умолчанию выключена net.ipv4.ip_forward=0
net.ipv4.ip_forward=1

Принцип фильтрования в rp_filter:
Если ответ на текущий пакет не может уйти через тот же интерфейс (когда приходит через один интерфейс, а уходит через другой), пакет отфильтровывается.
По умолчанию равно 2
net.ipv4.conf.all.rp_filter = 1
Обычно меняю на 0 или 1 при использовании двух шлюзов
----------------------------
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
----------------------------


!!! Современные дистрибутивы автоматически настраивают оптимальные параметры сетевой карты 

###Для хоста с сетевым адаптером 10G, оптимизированного для сетевых путей с RTT до 100 мс и для удобства работы с инструментами одиночного и параллельного потока
 
# устанавливаем буферами до 64 МБ
net.core.rmem_max = 67108864 
net.core.wmem_max = 67108864 

# увеличить лимит буфера TCP автонастройки
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432


# рекомендуемый контроль перегрузки по умолчанию / recommended default congestion control is htcp 
# на 2023 дефолт cubic
# для проверки доступных 
sysctl -a | grep congestion
net.ipv4.tcp_congestion_control=htcp
#net.ipv4.tcp_congestion_control=veno
#net.ipv4.tcp_congestion_control=cubic
#net.ipv4.tcp_congestion_control=bbr

# Если включены "jumbo frames"  то "tcp_mtu_probing" также следует включить
net.ipv4.tcp_mtu_probing=1


# Тип очереди
Рекомендуется включить "fair queueing/справедливую очередь"
net.core.default_qdisc = fq
 
 
Для хоста с сетевым адаптером 10G, оптимизированным для сетевых путей с RTT до 200 мс и для совместимости с инструментами одиночного и параллельного потока, 
или с сетевым адаптером 40G на путях с RTT до 50 мс:
 
# Буфер 128MB
net.core.rmem_max = 134217728 
net.core.wmem_max = 134217728 
# Авто тюнинг буфера 64MB
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
# # рекомендуемый контроль перегрузки по умолчанию / recommended default congestion control
net.ipv4.tcp_congestion_control=htcp # на самом деле тут дофига вариантов brr, cubic, westwood+
# Если "jumbo frames enabled" то и этот параметр нужен.
net.ipv4.tcp_mtu_probing=1
# Тип очередей
net.core.default_qdisc = fq

Под trex

ulimit -n 30000

net.ipv4.ip_forward=1
net.ipv4.tcp_max_tw_buckets = 65536
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_max_syn_backlog = 131072
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 8
net.ipv4.tcp_rmem = 16384 174760 349520
net.ipv4.tcp_wmem = 16384 131072 262144
net.ipv4.tcp_mem = 262144 524288 1048576
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_low_latency = 1
net.ipv4.tcp_syncookies = 0
net.netfilter.nf_conntrack_max = 1048576

RTT/ Буферы / Как посчитать буфер, пример:

Не актуальные умолчания:
Windows XP размер буфера по умолчанию равен 17,520 байт
Mac OS X установлен в 64K
Linux  64Кбайт

Формула:
Пропускная способность = размер буфера / задержка
Винда:
17520 Байт / .04 секунды = .44 МБ/сек = 3.5 Мб/сек
Мак ос:
65936 Байт / .04 сек = 1.6 МБ/сек = 13 Мб/сек


Большинство экспертов по сетям соглашаются, что оптимальный размер
буфера для определенной сети равен удвоенному произведению задержки и полосы пропускания:
Размер буфера = 2 * задержка * полоса пропускания

Программа ping даст вам округленное время (round trip time - RTT) для сетевого соединения, 
что в два раза больше задержки. 
Формула принимает следующий вид:
Размер буфера = RTT * полоса пропускания
.08 секунд * 100 Мбс / 8 = 1 МБ

Пример:
cat  /etc/sysctl.conf
...
# увеличиваем максимальный размер буфера ТСР
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# увеличиваем ограничения автоподчтройки буфера ТСР Linux
# мин, по умолчанию, и максимальное число байт, которое можно использовать
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

Контроль перегрузки / рекомендуемый контроль перегрузки по умолчанию / recommended default congestion control

0. Проверить какие контроли перегрузки нам доступны:
sysctl net.ipv4.tcp_available_congestion_control
cat /proc/sys/net/ipv4/tcp_available_congestion_control

1. Проверить какие контроли перегрузки сейчас активны:
sysctl net.ipv4.tcp_congestion_control
cat /proc/sys/net/ipv4/tcp_congestion_control


2. Примеры включения:
Включить контроль перегрузки "cubic"без перезагрузки ОС.
sysctl -w net.ipv4.tcp_congestion_control=cubic

Включить очередь "fq" без перезагрузки ОС
sysctl -w net.core.default_qdisc=fq_codel
sysctl -w net.core.default_qdisc=fq


Пример добавления в файл /etc/sysctl.conf, контроль перегрузки bbr
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

BBR

BBR (Bottleneck Bandwidth and RTT) — алгоритма контроля перегрузки TCP, 
патчи с которым ещё в 2016 году были опубликованы компанией Google и приняты в основное ядро Linux. 
Применение этой технологии в некоторых случаях позволяет значительно увеличить пропускную способность канала передачи данных. 
Несколько тестов и информация по настройке BBR далее.
sysctl -w net.ipv4.tcp_slow_start_after_idle=0
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

В ядре требуется активировать:
CONFIG_TCP_CONG_BBR=m
CONFIG_NET_SCH_FQ_CODEL=y
CONFIG_NET_SCH_FQ=m


Рубрики
*NIX информация

tc / traffic control

Вводная инфа:

Управление трафиком
Traffic Control, tc, Шейпинг, управление трафиком, HTB
Разделение, ограничение и управление трафиком - актуальная и сложная задача,
которую обычно возлагают на дорогостоящее специальное сетевое оборудование. 
Но решить ее можно и с помощью подсистемы Linux-ядра Traffic Control (tc входит в пакет iproute2)

Ограничение без потерь возможно только в отношении исходящего трафика. 
Стек протоколов TCP/IP не предусматривает возможности заставить удаленную сторону слать пакеты медленнее (и это правильно).

Shaping. 
Шейпинг - ограничение трафика, задержка пакетов с целью создания желаемой скорости передачи. 
Может использоваться не только для "сужения" исходящего канала, но и для сглаживания бросков во время пиковых нагрузок.

Scheduling. 
Планирование – упорядочивание типов трафика в канале. 
Позволяет избегать задержек для критичных типов трафика (QoS).

Policing. 
Политика входящего трафика. 
Позволяет ограничить входящий трафик путем уничтожения превысивших лимит пакетов. 
Помогает бороться с DDoS.

Основные параметры:
Дисциплина обработки пакетов (qdisc) - очередь пакетов и закрепленный за ней алгоритм обработки.
Класс (class) - логический контейнер, который может содержать несколько подклассов или дисциплину.
Фильтр (filter) - механизм классификации трафика.

Формат указания скорости в утилите tc
mbps = 1024 kbps = 1024 * 1024 bps => Байт/с
mbit = 1024 kbit => Кбит/с
mb = 1024 kb = 1024 * 1024 b => Байт


Наиболее используемые дисциплины
pfifo - Простейшая очередь FIFO (первым пришел, первым ушел).
        Размер буфера задается в пакетах.
bfifo - Аналог pfifo с буфером, размер которого задается в байтах.
pfifo_fast - Реализует простую очередь FIFO с тремя полосами.
             Используется по умолчанию в качестве корневой и не принимает аргументов.
tbf - Token Bucket Filter (TBF). 
      Передает поступающие пакеты со скоростью, не превышающей заданный порог. 
      Простая и точная реализация делает ее идеальным решением для ограничения полосы пропускания всего интерфейса.
sfq - Stochastic Fairness Queueing (SFQ). 
       (одна из лучших)Реализация алгоритма справедливой очереди. 
       Поровну разделяет полосу пропускания между несколькими соединениями. 
       Эффективно работает только на загруженном интерфейсе.
red - Random Early Detection (RED). 
      Симуляция затора. 
      Отбрасывает пакеты случайным образом при достижении заданной полосы пропускания. 
      Хорошо подходит для ограничения прожорливых в плане трафика приложений.
prio - Разделяет трафик по приоритетам (поле TOS). 
       По умолчанию создает три класса, в первый из которых попадают пакеты с большим приоритетом, а в третий - с наименьшим.
cbq - Class Based Queueing (CBQ). 
      Классовая дисциплина, предназначенная для создания сложных систем управления трафиком. 
      Поддерживает ограничения и приоритеты.
htb - Hierarchical Token Bucket (HTB). 
       (хорошо умеет работать с ip, во всех руководствах по шейпингу вы ее обязательно встретите)
       Предназначена для разделения полосы пропускания между различными видами трафика на полосы заданной ширины, с возможностью заимствования. 
       Поддерживает приоритеты.

Синтаксис tc:

Usage:  tc [ OPTIONS ] OBJECT { COMMAND | help }
        tc [-force] -batch filename
where  OBJECT := { qdisc | class | filter | chain |
                    action | monitor | exec }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[aw] |
                    -o[neline] | -j[son] | -p[retty] | -c[olor]
                    -b[atch] [filename] | -n[etns] name | -N[umeric] |
                     -nm | -nam[es] | { -cf | -conf } path
                     -br[ief] }


tc qdisc - покажет состояние шейпинга в данный момент для всех интерфейсов.

Смотрим статистику прохождения пакетов:
tc -s -d qdisc show dev eth0
tc -s -d class show dev eth0
tc -s -d filter show dev eth0

Быстро удалить все классы, фильтры и вернуть root qdisc интерфейса в первоначальное состояние можно командой:
 tc qdisc del dev eth0 root

Это самый простой без классовый пример:

tc qdisc add dev eth1 root tbf rate 256kbit  latency 50ms burst 1540
- qdisc add - добавляем новую дисциплину (для удаления используй del).
- dev eth1 - указываем устройство, к которому будет привязана дисциплина.
- root - наша дисциплина корневая (будет обрабатываться весь трафик).
- tbf - имя дисциплины.
- rate 256kbit latency 50ms burst 1540 - параметры, специфичные для данной дисциплины: rate - ограничение скорости, 
latency - максимальный "возраст" пакета в очереди, burst - размер буфера

Пример создание классовой очереди HTB

Создадим дисциплину:
tc qdisc add dev eth1 root handle 1: htb default 13
Опция "default 13" говорит о том, что весь не классифицированный фильтрами
трафик должен быть обработан с помощью дисциплин класса "1:13". 

Создадим класс под дисциплину:
tc class add dev eth1 parent 1: classid 1:1 htb rate 10mbps ceil 10mbps

Создадим в нем подклассы:
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 5mbps ceil 10mbps
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 2mbps
tc class add dev eth1 parent 1:1 classid 1:13 htb rate 1mbps


По умолчанию к вновь созданным классам подключены дисциплины, реализующие  очередь FIFO. 
Это нам не подходит. 
Чтобы канал равномерно распределялся между всеми участниками под сети, мы должны подключить к ним дисциплину sfq:
tc qdisc add dev eth1 parent 1:11 handle 10:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:12 handle 20:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:13 handle 30:0 sfq perturb 10

Теперь подключим фильтры, которые будут классифицировать трафик:
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 10.55.0.0/24 flowid 1:11
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 10.55.1.0/24 flowid 1:12

Для примера, установим ограничение в 256 Кбит/с для пользователя, находящегося в под сети "все остальные". 
Сначала добавим к "классу под сети" новый  "класс-пользователь":
tc class add dev eth1 parent 1:13 classid 1:150 htb rate 256kbps
А затем фильтр:
tc filter add dev eth1 protocol ip parent 1:13 prio 1 u32 match ip src 10.55.55.7 flowid 1:150


Пример:

tc qdisc add dev eth1 root handle 1: htb default 13
tc class add dev eth1 parent 1: classid 1:1 htb rate 256kbps ceil 6mbps
tc class add dev eth1  parent 1:1 classid 1:11 htb rate 3mbps 
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 2mbps
tc class add dev eth1 parent 1:1 classid 1:13 htb rate 256kbps
tc qdisc add dev eth1  parent 1:11 handle 10:0 sfq perturb 10
tc qdisc add dev eth1  parent 1:12 handle 20:0 sfq perturb 10
tc qdisc add dev eth1  parent 1:13 handle 30:0 sfq perturb 10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 10.55.55.0/24 flowid 1:11
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 10.66.66.0/24 flowid 1:12
tc class add dev eth1 parent 1:13 classid 1:150 htb rate 256kbps
tc filter add dev eth1 protocol ip parent 1:13 prio 1 u32 match ip src 10.55.55.7 flowid 1:150

Пример:

tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbps ceil 100mbps

tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30mbps ceil 100mbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20mbps
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 10mbps
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 5mbps
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 40mbps

tc qdisc add dev eth0 parent 1:11 handle 10:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 20:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 30:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 40:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 50:0 sfq perturb 10

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.1.0/24 flowid 1:11
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.2.0/24 flowid 1:12
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.3.0/24 flowid 1:13
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.4.0/24 flowid 1:14

tc class add dev eth0 parent 1:15 classid 1:150 htb rate 256kbps
tc filter add dev eth0 protocol ip parent 1:15 prio 1 u32 match ip src 172.16.1.32 flowid 1:150
Рубрики
*NIX информация Конспект

Конспект: sysctl

sysctl

sysctl     - позволяет посмотреть параметры в системы и внести изменения, такие как стек tcp/ip, виртуальной памяти
sysctl -a  - показывает все параметры
sysctl -A | less - отобразить все динамические параметры ядра

sysctl -f  - выполняем для применения изменений без перезагрузки
sysctl -p  - выполняем для применения изменений без перезагрузки 
sysctl -p changes.conf - принять изменения в changes.conf без перезагрузки

!!!  /proc/sys/ 
!!! kern  kernel  зависит от дистрибутива
!!! клавиша TAB в помощь

sysctl kern.ipc.numopensockets — показывает количество открытых сокетов
sysctl kern.openfiles — показывает количество открытых файлов
sysctl kernel.hostname - показать имя системы
sysctl fs.nr_open - cколько дескрипторов файлов используется
sysctl net.ipv4.ip_forward

cat /proc/sys/net/ipv4/ip_forward - проверяем текущие состояние ip_forward
cat /proc/sys/kernel/hostname - показать имя системы

sysctl -w net.ipv6.conf.all.disable_ipv6=1 - выключить ipv6
sysctl -w net.ipv6.conf.default.disable_ipv6=1 - выключить ipv6

ip_forward

!!! Самое частое ради чего лезут в sysctl это включают forward для сетевых интерфейсов

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

cat /proc/sys/net/ipv4/ip_forward - проверяем текущие состояние ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward - так мы можем включить IP forward
 
!!! Для постоянного включения необходимо отредактировать файл  /etc/sysctl.conf, найти строку net.ipv4.ip_forward=1 и убрать комментарий с неё
vim /etc/sysctl.conf
---------------------
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
---------------------
sysctl -p  - выполняем для применения изменений без перезагрузки 


ipv6

!!! отключение ipv6  достаточно бесполезная фигня  не делай этого если не знаешь зачем хочешь его отключить

#disable ipv6 settins
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

файлы

Ограничения на всю систему по открытым файлам:
sysctl fs.file-max        - показать максимальное количество открытых файлов
sysctl fs.file-max=102400 - меняем максимальное количества открытых файлов

echo "1024 50000" > /proc/sys/net/ipv4/ip_local_port_range - диапазон портов
 
vim /etc/sysctl.conf
fs.file-max=102400  - Ввод по умолчанию sysctl.conf
sysctl -p  - выполняем для применения изменений без перезагрузки 


ограничения открытых файлов shell/script
ulimit -a - Смотрим ограничения
ulimit -n 10240 - Меняем ограничение на количество открытых файлов, только shell


ограничения user / process
cat /etc/security/limits.conf
*   hard    nproc   250 - Ограничения пользовательских процессов
asterisk hard nofile 409600 - Ограничения на открытые файлы приложения


монтирование / mount

Разрешить пользователям монтирование дисков:
# sysctl vfs.usermount=1  # Или впишите строку "vfs.usermount=1" in /etc/sysctl.conf

Таблица NAT:

# sysctl net.netfilter.nf_conntrack_max - посмотреть текущий размер таблицы NAT
net.netfilter.nf_conntrack_max = 65536
 
# sysctl -a | grep conntrack_max - посмотреть текущий размер таблицы NAT
net.netfilter.nf_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_max = 65536
net.nf_conntrack_max = 65536
 
# sysctl net.netfilter.nf_conntrack_count - посмотреть заполненность таблицы
net.netfilter.nf_conntrack_count = 654

# Решение ошибки "nf_conntrack: table full, dropping packet"
net.ipv4.netfilter.ip_conntrack_max=1548576

Отключаем ответы на ping

!!! Не надо отключать пинг

sysctl net.ipv4.icmp_echo_ignore_all - узнаем что с пингом
sysctl -w net.ipv4.icmp_echo_ignore_all=1 - отключаем ответ на ping
sysctl -w net.ipv4.icmp_echo_ignore_all=0 - включаем ответ на ping

чтоб сохранялось при перегрузке
nano /etc/sysctl.conf - проверяем значение
net.ipv4.icmp_echo_ignore_all=1 - выставляем 1 и сохраняем

rp_filter

!!! Не рекомендуется включать, если вы не знаете зачем.

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

Принцип фильтрования в rp_filter:
Если ответ на текущий пакет не может уйти через тот же интерфейс 
(когда приходит через один интерфейс, а уходит через другой), 
пакет отфильтровывается.

По умолчанию: 
net.ipv4.conf.all.rp_filter = 1
 
Выключение rp_filter для всех интерфейсов:
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
  echo 0 > $i 
done


Network SFP+

!!! Современные дистрибутивы автоматически настраивают оптимальные параметры сетевой карты

# Разрешить тестирование с буферами до 64МБ 
net.core.rmem_max = 67108864 
net.core.wmem_max = 67108864 

# Увеличить лимит буфера TCP автонастройки Linux до 32 МБ
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432

# Рекомендуемый контроль перегрузки по умолчанию — htcp 
net.ipv4.tcp_congestion_control=htcp

# Рекомендуется для хостов с включенными большими кадрами
net.ipv4.tcp_mtu_probing=1

# Рекомендуется включить "fair queueing/справедливую очередь"
net.core.default_qdisc = fq
 

swap

vm.swappiness = 10 - начинать использовать swap когда осталось 10% памяти  (0 не использовать swap)

ipv4

https://www.opennet.ru/docs/RUS/LARTC/x1727.html


/proc/sys/net/ipv4/icmp_echo_ignore_all
Параметр может принимать два значения -- 0 (выключено) и 1 (включено). Значение по-умолчанию -- 0 (выключено). 
Если записана 1, то ядро просто игнорирует все ICMP Echo Request запросы и тогда никто не сможет ping-ануть вашу машину, чтобы проверить ее наличие в сети, что само по себе не есть хорошо. 
С одной стороны -- окружающие лишены возможности проверить ваше присутствие в сети, с другой -- существует масса приложений, 
которые используют ICMP Echo Request запросы далеко не в благовидных целях.
Вообщем все как всегда -- что-то плохо, а что-то хорошо.


/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
Эта переменная очень близка по смыслу к icmp_echo_ignore_all, только в данном случае будут игнорироваться ICMP-сообщения, 
отправленные на широковещательный или групповой адрес. Вполне очевидно, почему полезно включить этот параметр -- защита от smurf атак.


/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
Отдельные маршрутизаторы, вопреки стандартам, описанным в RFC 1122, отправляют фиктивные ответы в широковещательном диапазоне. 
Обычно эти ошибки заносятся в системный журнал. 
Если вы не желаете регистрировать их, то включите этот параметр и тем самым сбережете некоторый объем дискового пространства в своей системе. 
Параметр может принимать два значения -- 0 (выключено) и 1 (включено). 
Значение по-умолчанию -- 0 (выключено)


/proc/sys/net/ipv4/icmp_ratelimit
Максимальная частота генерации ICMP-пакетов с типом, указанным в icmp_ratemask (см. ниже). 
Это значение задается в "тиках" и устанавливает временной интервал между ICMP-посылками. Таким образом, значение 0 означает отсутствие ограничений. 
Обычно 1 "тик" равен 0.01 секунды, так значение 1 в этой переменной ограничивает скорость передачи не более 100 посылок в секунду, а значение 100 -- не более 1 посылки в секунду. 
Значение по-умолчанию -- 100 (зависит от конфигурации ядра), что означает не более 1 ICMP посылки за интервал в 100 "тиков".


/proc/sys/net/ipv4/icmp_ratemask
Маска ICMP типов, на которые накладывается ограничение по частоте генерации переменной icmp_ratelimit. 
Каждый из ICMP типов маскируется своим битом.
icmp_ratemask -- это битовая маска, где каждый ICMP тип представлен своим битом. 
Соответствие между символическим названием ICMP типа и его порядковым номером вы найдете в заголовочном файле netinet/ip_icmp.h (обычно это /usr/include/netinet/ip_icmp.h). 
За дополнительной информацией обращайтесь к RFC 792 - Internet Control Message Protocol. 
Значение по-умолчанию -- 6168


/proc/sys/net/ipv4/igmp_max_memberships
Максимальное число групп на каждый сокет. 
Значение по-умолчанию -- 20 и может быть изменено по мере необходимости. 


/proc/sys/net/ipv4/inet_peer_maxttl
Это максимальное время хранения записей. 
При незначительных нагрузках на систему неиспользуемые записи будут удаляться через данный промежуток времени.


/proc/sys/net/ipv4/inet_peer_minttl
Параметр определяет минимальное время хранения данных в "inet peer storage". 
Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне.
Минимальное время хранения является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.


/proc/sys/net/ipv4/inet_peer_threshold
Здесь хранится приблизительный размер памяти для "inet peer storage". 
Когда размер пула достигает этой величины, то "сборщик мусора" переводится в более агрессивный режим работы -- с периодом прохода inet_peer_gc_mintime. 
Кроме того, этот порог влияет на срок хранения записей. Чем выше этот порог, тем больше срок хранения.


/proc/sys/net/ipv4/ip_default_ttl
Устанавливает значение по-умолчанию для величины Time To Live исходящих пакетов. 
Это число определяет продолжительность "жизни" пакета в Internet. 
Каждый раз, когда пакет попадает на очередной роутер (брандмауэр и т.п.), величина TTL пакета уменьшается на 1.
Значение по-умолчанию -- 64


/proc/sys/net/ipv4/ip_dynaddr
Параметр используется для разрешения некоторых проблем, связанных с динамической адресацией. 
Позволяет демону diald одновременно устанавливать соединение и изменять исходящий адрес в пакетах (и сокетах для локальных процессов). 
Эта возможность была реализованв для поддержки TCP по коммутируемым соединениям и соединениям с маскарадингом (masqueradig). 
Эта опция позволяет "маскарадить" исходящий адрес пакета при изменении динамического IP-адреса.
В переменную можно записать одно из 3-х значений: 0, 1 или 2.
0 -- опция выключена, это значение по-умолчанию.
1 -- опция включена.
Любое другое значение, отличающееся от 0 и 1 подразумевает включение этой опции в "многословном" (verbose) режиме, что приводит к записи в системный журнал отладочных сообщений.


/proc/sys/net/ipv4/ip_forward
Включает/отключает функцию форвардинга (передачу транзитных пакетов между сетевыми интерфейсами), которая позволяет компьютеру выступать в роли брандмауэра или маршрутизатора. 
Эта переменная очень важна для Network Address Translation (Трансляция Сетевых Адресов), 
брандмауэров, маршрутизаторов и всего того, что должно передавать пакеты между сетями.
Это булева переменная. Или, другими словами, она может принимать два значения -- 0 или 1. 
Значение по-умолчанию -- 0, "запрещено". 
То есть 0 означает запрет форвардинга, а 1 -- разрешает его.


/proc/sys/net/ipv4/ip_local_port_range
Содержит два целых числа, которые определяют диапазон локальных портов, которые используются в клиентских соединениях, 
т.е. для исходящих соединений, которые связывают нашу систему с некоторым узлом сети, 
где мы выступаем в качестве клиента. Первое число задает нижнюю границу диапазона, второе -- верхнюю.
Значения по-умолчанию зависят от имеющегося объема ОЗУ. 
Если установлено более чем 128 Мб, то нижняя граница будет 32768, а верхняя -- 61000. При меньшем объеме ОЗУ нижняя граница будет 1024 а верхняя -- 4999 или даже меньше.
Этот диапазон определяет количество активных соединений, которые могут быть запущены одновременно, с другой системой, которая не поддерживает TCP-расширение timestamp.
Диапазона 1024-4999 вполне достаточно для установки до 2000 соединений в секунду с системами, не поддерживающими timestamp. Проще говоря, этого вполне достаточно для большинства применений.


/proc/sys/net/ipv4/ip_no_pmtu_disc
Параметр ip_no_pmtu_disc запрещает поиск PMTU (от англ. Path Maximum Transfer Unit -- Максимальный Размер Пакета для выбранного Пути). 
Для большинства случаев лучше установить в эту переменную значение FALSE, или 0 (т.е. система будет пытаться определить максимальный размер пакета, 
при котором не потребуется выполнять их фрагментацию, для передачи на заданный хост). 
Но иногда, в отдельных случаях, такое поведение системы может приводить к "срывам" соединений. 
Если у вас возникают такие проблемы, то вам следует попробовать отключить эту опцию (т.е. записать в переменную число 1) и установить нужное значение MTU.
Обратите внимание на то, что MTU и PMTU -- это не одно и то же! MTU -- (от англ. Maximum Transfer Unit -- максимальный размер пакета) определяет максимальный размер пакета для наших сетевых интерфейсов,
но не для сетевых интерфейсов на другом конце. 
PMTU -- опция, которая заставляет систему вычислять максимальный размер пакета, 
при котором не потребуется фрагментация пакетов, для маршрута к заданному хосту, включая все промежуточные переходы.
Значение по-умолчанию -- FALSE (0), т.е. функция определения разрешена. Если записать число 1 в этот файл, 
то функция определения PMTU будет запрещена. Параметр ip_no_pmtu_disc может принимать значение 0 или 1.


/proc/sys/net/ipv4/ipfrag_high_thresh
Параметр задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. 
Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до тех пор, 
пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh. 
Это означает, что все отвергнутые фрагментированные пакеты должны быть повторно переданы узлом-отправителем.



/proc/sys/net/ipv4/ip_nonlocal_bind
Установка этого параметра позволяет отдельным локальным процессам выступать от имени внешнего (чужого) IP-адреса. 
Это может оказаться полезным в некоторых случаях, когда необходимо "прослушивать" внешние (чужие) IP-адреса, например -- сниффинг чужого траффика. 
Однако, эта опция может оказывать отрицательное влияние на работоспособность отдельных приложений.
Может иметь два значения -- 0 или 1. 
Если установлено значение 0, то опция отключена, 1 -- включена. 
Значение по-умолчанию -- 0.


/proc/sys/net/ipv4/ipfrag_low_thresh
Этот параметр очень тесно связан с переменной ipfrag_high_thresh. 
Он устанавливает нижний порог, при достижении которого опять разрешается прием фрагментов в очередь. 
Обработчик фрагментов имеет свою очередь, в которой находятся фрагментированные пакеты, ожидающие сборки. 
Когда длина очереди достигает верхнего порога (ipfrag_high_thresh), то прием фрагментов в очередь приостанавливается до тех пор, пока длина очереди не уменьшится до величины ipfrag_low_thresh. 
Это предохраняет систему от "затопления" фрагментированными пакетами и, тем самым, является, в своем роде, защитой от некоторых видов DoS-атак.


/proc/sys/net/ipv4/ipfrag_time
Определяет максимальное время "хранения" фрагментов в секундах. 
Это относится только к тем фрагментам, которые пока невозможно собрать, поскольку собранные пакеты к этому сроку скорее всего уже будут переданы дальше (на следующий уровень или в сеть).
Принимает целое значение и определяет предельное время хранения фрагментов в секундах. Если записать туда число 5, то это будет означать 5 секунд.



/proc/sys/net/ipv4/tcp_abort_on_overflow
Заставляет ядро отвергать новые соединения, если их поступает такое количество, что система не в состоянии справиться с таким потоком. 
Что это означает? Допустим, что на систему обрушивается шквал запросов на соединение, тогда они могут быть просто отвергнуты, если эта опция будет включена, 
поскольку система не в состоянии обработать их все. 
Если не установлена, то система будет пытаться обслужить все запросы.
Может иметь два значение -- 0(выключено) или 1(включено). Значение по-умолчанию -- 0. 
Включение этой опции следует расценивать как крайнюю меру. Перед этим необходимо попытаться поднять производительность сервисов.


/proc/sys/net/ipv4/tcp_fin_timeout
Задает максимальное время пребывания сокета в состоянии FIN-WAIT-2. 
Используется в тех случаях, когда другая сторона по тем или иным причинам не закрыла соединение со своей стороны. 
Каждый сокет занимает в памяти порядка 1.5 Кб, что может привести к значительным утечкам памяти в некоторых случаях.
Принимает целое число. Значение по-умолчанию -- 60 секунд. 
В ядрах серии 2.2 это значение было равно 180 секундам, но было уменьшено, поскольку иногда возникали проблемы, 
связанные с нехваткой памяти, на web-серверах, которые, как правило, обслуживают огромное количество подключений.
За дополнительной информацией -- обращайтесь к описанию параметров tcp_max_orphans и tcp_orphan_retries.


/proc/sys/net/ipv4/tcp_keepalive_time
Определяет -- как часто следует проверять соединение, если оно давно не используется. 
Значение параметра имеет смысл только для тех сокетов, которые были созданы с флагом SO_KEEPALIVE.
Принимает целое число секунд. Значение по-умолчанию -- 7200, т.е. 2 часа. 
Не уменьшайте это число без необходимости, поскольку это может привести к увеличению бесполезного трафика.


/proc/sys/net/ipv4/tcp_keepalive_intvl
Определяет интервал проверки "жизнеспособности" сокета. 
Это значение учитывается при подсчете времени, которое должно пройти перед тем как соединение будет разорвано.
Принимает целое число. Значение по-умолчанию -- 75 секунд. 
Это достаточно высокое значение, чтобы рассматривать его как нормальное. 
Значения параметров tcp_keepalive_probes и tcp_keepalive_intvl могут использоваться для определения времени, через которое соединение будет разорвано.
Со значениями по-умолчанию (9 попыток с интервалом 75 секунд) это займет примерно 11 минут. 
Попытки определения "жизнеспособности", в свою очередь, начнутся через 2 часа после того, как через данное соединение проследовал последний пакет.


/proc/sys/net/ipv4/tcp_keepalive_probes
Определяет количество попыток проверки "жизнеспособности" прежде, чем будет принято решении о разрыве соединения.
Принимает целое число, которое не следует устанавливать больше 50-ти. Значение по-умолчанию -- 9. 
Это означает, что будет выполнено 9 попыток проверки соединения, чтобы убедиться в том, что соединение разорвано.


/proc/sys/net/ipv4/tcp_max_orphans
Задает максимальное число "осиротевших" (не связанных ни с одним процессом) сокетов. 
Если это число будет превышено, то такие соединения разрываются, а в системный журнал пишется предупреждение.
Это ограничение существует исключительно ради предотвращения простейших разновидностей DoS-атак. 
Вообще вы не должны полагаться на эту переменную! Не рекомендуется уменьшать это число. 
Сетевая среда может потребовать увеличение этого порога, однако, такое увеличение может привести к необходимости увеличения объема ОЗУ в системе. 
Прежде чем поднимать этот предел -- попробуйте перенастроить сетевые сервисы на более агрессивное поведение по отношению к "осиротевшим" сокетам.
Принимает целое число. Значение по-умолчанию -- 8192, однако оно очень сильно зависит от объема памяти в системе. 
Каждый "осиротевший" сокет "съедает" примерно 64 Кб памяти, которая не может быть сброшена в своп (swap).
При возникновении проблем, связанных с этим ограничением -- в системный журнал будет записано сообщение, подобное этому: TCP: too many of orphaned sockets           
Это может служить поводом к тому, чтобы пересмотреть значения переменных tcp_fin_timeout или tcp_orphans_retries.


/proc/sys/net/ipv4/tcp_orphan_retries
Количество попыток закрыть соединение перед тем как оно будет разорвано принудительно. 
Если вы администрируете http-сервер, который испытывает большие нагрузки, то стоит подумать об уменьшении этого значения.
Значение по-умолчанию -- 0 (archlinux)


/proc/sys/net/ipv4/tcp_max_syn_backlog
Определяет максимальное время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, пакета. 
Эта опция работает только тогда, когда включен параметр tcp_syncookies. 
Если сервер испытывает серьезные нагрузки, то можно попробовать немного увеличить этот параметр.
По-умолчанию равно 512


/proc/sys/net/ipv4/tcp_max_tw_buckets
Максимальное число сокетов, находящихся в состоянии TIME-WAIT одновременно. 
При превышении этого порога -- "лишний" сокет разрушается и пишется сообщение в системный журнал. Цель этой переменной -- предотвращение простейших разновидностей DoS-атак.
По-умолчанию -- 180000.


/proc/sys/net/ipv4/tcp_retrans_collapse
Включает/выключает эмуляцию ошибки протокола TCP, делая возможным сетевое взаимодействие с некоторыми устройствами, в которых реализация стека TCP имеет эту ошибку. 
Без ее эмуляции было бы невозможным работать с отдельными моделями принтеров. 
Ошибка заключается в отправке полноразмерных пакетов при повторной передаче.
Значение по-умолчанию -- 1 (включено).



/proc/sys/net/ipv4/tcp_retries1
Максимальное количество попыток повторной передачи пакетов по установленному соединению прежде, 
чем сообщение об ошибке будет передано сетевому уровню, в результате чего может быть выбран другой маршрут для отправки последующих пакетов. 
Минимальное значение этого параметра равно 3.
Это число является значением по-умолчанию, что соответствует интервалу времени от 3 секунд до 8 минут, в зависимости от величины Retransmission timeout (RTO). 
Детальное описание RTO вы найдете в разделе "3.7. Data Communication" RFC 793 - Transmission Control Protocol.
Значение по-умолчанию -- 3. 



/proc/sys/net/ipv4/tcp_retries2
Максимальное количество попыток повторной передачи пакетов, до того как соединение будет считаться разорванным. 
Это ограничение определено в RFC 1122 и равно 100, но обычно его уменьшают.
Значение по-умолчанию -- 15, что соответствует примерно 13-30 минутам в зависимости от величины Retransmission timeout (RTO).


/proc/sys/net/ipv4/tcp_rfc1337
Является реализацией решения проблемы, описываемой в "RFC 1337 - TIME-WAIT Assassination Hazards in TCP". 
Проблема связана с "устаревшими" дубликатами пакетов, которые могут вносить помехи во вновь устанавливаемые соединения и порождать три различные проблемы. 
Первая -- "устаревший" дубликат пакета с данными может быть ошибочно воспринят в новом соединении, что приведет к передаче неверных данных. 
Вторая -- соединение может быть десинхронизировано и "уйти" в ACK-цикл из-за "устаревших" дубликатов, 
которые порождают новые соединения (здесь автор имеет ввиду "устаревшие" дубликаты SYN-пакетов, прим. перев.). 
И третья проблема -- "устаревшие" дубликаты могут "проникнуть" в недавно созданное соединение и ошибочно уничтожить его.


/proc/sys/net/ipv4/tcp_sack
Разрешает Selective Acknowledgements (SACK -- Выборочное Подтверждение), детальное описание вы найдете в RFC 2883 
- An Extension to Selective Acknowledgement (SACK) Option for TCP и RFC 2883
- An Extension to Selective Acknowledgement (SACK) Option for TCP


/proc/sys/net/ipv4/tcp_stdurg
Разрешает/запрещает соответствие стандарту RFC 1122. Поведение по-умолчанию соответствует стандарту использования флага URG -- BSD 4.2, описанному в RFC 793. 
Если этот параметр включен, то возможны сбои при работе с отдельными узлами Интернета, точнее -- с узлами, которые придерживаются стандарта BSD 4.2. 
Значение по-умолчанию -- 0 (выключено).


/proc/sys/net/ipv4/tcp_syn_retries
Количество попыток передачи SYN-пакета при установлении нового соединения. 
Это число не должно устанавливаться больше чем 255, поскольку каждая повторная попытка отнимает значительное время. 
На каждую попытку отводится примерно 30-40 секунд. Значение по-умолчанию -- 5, что соответствует, примерно, 180 секундам.


/proc/sys/net/ipv4/tcp_synack_retries
Количество попыток передачи SYN,ACK-пакета в ответ на SYN-запрос. 
Другими словами -- максимальное число попыток установить пассивное TCP-соединение, инициированное другим хостом. 
Это число не должно устанавливаться больше чем 255. Значение по-умолчанию -- 5.


/proc/sys/net/ipv4/tcp_timestamps
Разрешает/запрещает использование временных меток (timestamps), в соответствии с RFC 1323. Если коротко, 
то это расширение TCP используется для расчета Round Trip Measurement (определение времени возврата) лучшим способом, нежели метод Retransmission timeout (RTO). 
Эта опция должна сохранять обратную совместимость в большинстве случаев, так что лучше оставить ее включенной, 
особенно если вы работаете в высокоскоростной сети (например LAN или 10mb Интернет). 
В случае низкоскоростного оединения (скажем модемное) -- вы прекрасно обойдетесь и без этой опции, и будет даже лучше, если вы ее отключите. 
Значение по-умолчанию -- 1 (включено).


/proc/sys/net/ipv4/tcp_window_scaling
Разрешает/запрещает масштабирование TCP-окна, как определено в RFC 1323. 
В этом документе описано как производится масштабирование TCP-окна при передаче по Large Fat Pipes (LFP -- "толстый" канал). 
При передаче TCP-пакетов по "толстым" каналам возникают существенные потери пропускной способности из-за того, 
что они не загружены полностью во время ожидания подтверждения о приеме предыдущего TCP-окна. 
Основная проблема состоит в том, что окно не может иметь размер больше, чем 2**16 байт (65 Кб). 
Разрешая масштабирование TCP-окна мы, тем самым, можем увеличить его размер и таким образом уменьшить потери пропускной способности. 
Значение по-умолчанию -- 1 (включено).

dev

DEV следует понимать название устройства.
Настройки в каталоге all применяются ко ВСЕМ сетевым интерфейсам

/proc/sys/net/ipv4/conf/DEV/accept_redirects
Управляет приемом ICMP-сообщений о переадресации. 
Сообщения ICMP Redirect ... используются для уведомления маршрутизаторов или хостов о существовании лучшего маршрута движения пакетов к заданному хосту, 
который (маршрут) может быть быстрее или менее загружен.

/proc/sys/net/ipv4/conf/DEV/accept_source_route
Разрешает/запрещает "маршрутизацию от источника". Маршрутизация от источника весьма небезопасна. 
По-умолчанию -- 1 (включено). В archlinux = 0


/proc/sys/net/ipv4/conf/DEV/bootp_relay
Разрешает/запрещает форвардинг пакетов с исходящими адресами 0.b.c.d. 
Демон BOOTP relay должен перенаправлять эти пакеты на корректный адрес. 
Значение по-умолчанию -- 0 (выключено), поскольку реализация обработки этого параметра еще отсутствует (kernel v2.2.12).

/proc/sys/net/ipv4/conf/DEV/forwarding
Включает/отключает функцию форвардинга (передачу транзитных пакетов) между сетевыми интерфейсами. 
Могут использоваться для включения/выключения функции форвардинга для отдельных интерфейсов. 
По-умолчанию все параметры conf/DEV/forwarding принимают значение, установленное в ipv4/ip_forward так, если этот параметр включить, 
то и все параметры conf/DEV/forwarding будут включены, если выключить, то и conf/DEV/forwarding окажутся выключены.


/proc/sys/net/ipv4/conf/DEV/log_martians
Включает/выключает функцию журналирования всех пакетов, которые содержат неправильные (невозможные) адреса (так называемые martians -- "марсианские" пакеты). 
Под невозможными адресами, в данном случае, следует понимать такие адреса, которые отсутствуют в таблице маршрутизации.


/proc/sys/net/ipv4/conf/DEV/mc_forwarding
Включает/выключает поддержку маршрутизации групповых рассылок для заданного интерфейса. 
Кроме того, чтобы иметь поддержку маршрутизации групповых рассылок, необходимо собрать ядро с включенной опцией CONFIG_MROUTE. 
Дополнительно в системе должен иметься демон, осуществляющий групповую маршрутизацию. Значение по-умолчанию -- 0 (выключено). 
Обратите внимание -- нет никакой необходимости включать эту опцию, если вы желаете лишь получать групповые пакеты. 
Она необходима только если вы собираетесь перенаправлять групповой трафик через вашу систему.


/proc/sys/net/ipv4/conf/DEV/proxy_arp
Включает/выключает проксирование arp-запросов для заданного интерфейса. 
ARP-прокси позволяет маршрутизатору отвечать на ARP запросы в одну сеть, в то время как запрашиваемый хост находится в другой сети. 
С помощью этого средства происходит "обман" отправителя, который отправил ARP запрос, после чего он "думает", что маршрутизатор является хостом назначения, 
тогда как в действительности хост назначения находится по другую сторону маршрутизатора. 
Маршрутизатор выступает в роли уполномоченного агента хоста назначения, перекладывая пакеты от другого хоста. Значение по-умолчанию -- 0 (выключено). 
Дополнительную информацию вы найдете в Proxy-ARP mini HOWTO.


/proc/sys/net/ipv4/conf/DEV/rp_filter
Проверка Обратного Адреса, хотя это слишком вольный перевод термина, но мне он кажется наиболее близким по смыслу. прим. перев..
По-умолчанию, маршрутизаторы перенаправляют все подряд, даже пакеты, которые не принадлежат вашей сети. 
В качестве примера можно привести утечку локального трафика в Интернет. 
Если у вас имеется интерфейс с маршрутом к нему 195.96.96.0/24, то вы наверняка не ожидаете получить на него пакеты от 212.64.94.1.
В файловой системе /proc лежит файл, изменив который вы сможете отключить или включить эту проверку. 
Смысл этого параметра достаточно прост -- все, что поступает к нам, проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, 
если принятый пакет предполагает передачу ответа через тот же самый интерфейс.
Следующий фрагмент включит проверку исходящего адреса для всех существующих интерфейсов:
# for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 2 > $i ; done  


/proc/sys/net/ipv4/conf/DEV/secure_redirects
Включает/выключает режим безопасной переадресации. 
Если параметр выключен, то будут приниматься любые сообщения ICMP Redirect ... от любого хоста из любого места. 
Если включен, то сообщения о переадресации будут восприниматься только от тех шлюзов (gateways), которые имеются в списке шлюзов по-умолчанию. 
С помощью этой опции можно избежать большинства ложных переадресаций, которые могут быть использованы для перехвата трафика. 
Значение по-умолчанию -- 1 (включено). Обратите внимание -- действие этой параметра отменяется параметром shared_media, 
так что, если вы включаете secure_redirects, то необходимо включить и shared_media.


/proc/sys/net/ipv4/conf/DEV/send_redirects
Включает/выключает выдачу ICMP Redirect ... другим хостам. 
Эта опция обязательно должна быть включена, если хост выступает в роли маршрутизатора любого рода. 
Как правило ICMP-сообщения о переадресации отправляются в том случае, когда необходимо сообщить хосту о том, 
что он должен вступить в контакт с другим сервером. Значение по-умолчанию -- 1 (включено). 
Если компьютер не выступает в роли маршрутизатора, то этот параметр можно отключить.


/proc/sys/net/ipv4/conf/DEV/shared_media
Включает/выключает признак того, что физическая сеть является носителем нескольких логических подсетей, например, 
когда на одном физическом кабеле организовано несколько подсетей с различными сетевыми масками. 
Этот признак используется ядром при принятии решения о необходимости выдачи ICMP-сообщений о переадресации. 
Значение по-умолчанию -- 0 (выключено). Этот параметр влияет на установку параметра secure_redirects.



Рубрики
*NIX информация

modbus gw

## Что у нас есть

/dev/ttyS0 - порт 485 на напи
115200 - скорость
полярность:
a +
b - 

Для GW modbus:

1 . Создать необходимые директории и файлы:
#/etc/mbusd/mbusd-ttyS0.conf
#  Внимание имя конфиг файла должно иметь правильное название
# для  mbusd@ttyS1.service  файл будет иметь название mbusd-ttyS1.conf и etc.
# а иначе если файла не будет, то сервис запустится с параметрами по умолчанию 


mkdir /etc/mbusd
touch /etc/mbusd/mbusd-ttyS0.conf


2. Запуск демона.

systemctl enable mbusd@ttyS0.service
systemctl start mbusd@ttyS0.service
systemctl status mbusd@ttyS0.service

3. Настроить правильно конфиг:
Пример конфига:
https://github.com/3cky/mbusd/blob/master/conf/mbusd.conf.example

Тут нужно поменять :
device = /dev/ttyS3
speed = 115200
maxconn = 100 
timeout = 10 
pause = 50  
wait = 50


default conf

#############################################
#                                           #
#    Sample configuration file for mbusd    #
#                                           #
#############################################

########## Serial port settings #############

# Serial port device name
device = /dev/ttyS0

# Serial port speed
speed = 9600

# Serial port mode
mode = 8n1

# RS-485 data direction control type (addc, rts, sysfs_0, sysfs_1)
trx_control = addc

# Sysfs file to use to control data direction
# trx_sysfile =

############# TCP port settings #############

# TCP server address to bind
address = 0.0.0.0

# TCP server port number
port = 502

# Maximum number of simultaneous TCP connections
maxconn = 32

# Connection timeout value in seconds
timeout = 60

######### Request/response settings #########

# Maximum number of request retries
retries = 3

# Pause between requests in milliseconds
pause = 100

# Response wait time in milliseconds
wait = 500

# Reply on Broadcast
replyonbroadcast = no

modpoll

mbpoll -b 9600 -p none -m rtu -a 1 -r 515 /dev/ttyS3

modpoll -m tcp -t3 -a1 -r 515 -c 1 192.168.16.153
modpoll -0 -b 9600 -p none -m rtu -a 1 -t 3 -r 512  /dev/ttyUSB0
modpoll -0 -b 9600 -p none -m rtu -a 1 -t 3 -r 512  /dev/ttyUSB1

modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -c 10 /dev/ttyS1
modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -r 1 -c 62 /dev/ttyS1
modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -r 1 -c 1 /dev/ttyS1
modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -r 99 -c 1 /dev/ttyS1
modpoll -m rtu -a 1 -b 9600 -p none -r 1 -c 125 /dev/ttyS1
modpoll -m rtu -a 1 -b 9600 -p none -t 4:hex -r 1 -c 125 /dev/ttyS1
modpoll -m rtu -b 9600 -p none  -c 125 -a 1 -r 1 -0 /dev/ttyS1

modpoll -0 -b 9600 -p none -m rtu  /dev/ttyS1
modpoll -0 -b 115200 -p none -m rtu -a 2 -t 3 -r 512  /dev/ttyS4


modpoll -m rtu -a 1 -b 9600 -p none -r100  /dev/ttyS1
modpoll -m tcp -a1 -r 100 -c 1 192.168.16.147

Пример конфига:

root@napi-redkoala:~# cat /boot/uEnv.txt
verbosity=7
fdtfile=rk3308-napi-c.dtb
console=ttyS0,1152008
overlays=rk3308-usb20-host rk3308-i2c1-ds1307 rk3308-uart1
#overlays=rk3308-uart1 rk3308-uart2 rk3308-uart3 rk3308-i2c1-ds1338 rk3308-i2c3-m0 rk3308-usb20-host rk3308-spi1-w5500
kernelimg=Image
extraargs=

PM-3112-160

https://www.modbusdriver.com/modpoll.html
mbpoll -0 -b 9600 -P none -a 1 -t 3 -r 515 /dev/ttyUSB0
modpoll -0 -b 9600 -p none -m rtu -a 1 -t 3 -r 515  /dev/ttyUSB0


Настройки портов пример:
stty -F /dev/ttyS3 #посмотреть текущие настройки 
stty -F /dev/ttyS3 115200 cs8 -parenb -cstopb #установить настройки

Рубрики
*NIX информация

dnsmasq / DNS / сервер / stubby / DoT

ссылки:

https://wiki.archlinux.org/title/dnsmasq

dnsmasq

0. Установка:
apt install dnsmasq

конфиги:
touch /etc/dnsmasq.d/dnsmasq.conf
chown root:dnsmasq /etc/dnsmasq.d/dnsmasq.conf
chmod 0644 /etc/dnsmasq.d/dnsmasq.conf


1. Редактируем конфиг:
vim /etc/dnsmasq.d/dnsmasq.conf
-------------------------------
# Указываем интерфейсы для прослушивания.
listen-address=::1
listen-address=127.0.0.1
listen-address=192.168.1.1
bind-interfaces
 
# Запрещаем чтение файла /etc/resolv.conf для получения DNS-серверов
no-resolv
 
# Запрещаем добавление хостов из файла /etc/hosts
no-hosts
 
# Указываем вышестоящие DNS-серверы.
server=::1#5353
server=127.0.0.1#5353
 
# Указываем количество элементов для локального кэша DNS
cache-size=5000
 
# В некоторых случаях, например при работе с авторизованным порталом, может быть полезно преобразовать определенные доменные имена в жестко закодированный набор адресов
address=/example.org/192.168.0.150
address=/zzz/192.168.0.151
address=/example.com/1.2.3.4
# Кроме того, можно вернуть определенный адрес для всех доменных имен, на которые не получен ответ от /etc/hostsили DHCP, с помощью специального подстановочного знака:
address=/#/1.2.3.4
# Чтобы заблокировать домены, т.е. отвечать на запросы к ним с помощью NXDOMAIN, используйте опцию addressбез указания IP-адреса
# блокирует как block.example , так и Anotherblocked.example , а также все их субдомены 
address=/*blocked.example/
# блокирует субдомены, такие как mail.google.com, но не google.com 
address=/*.google.com/
# блокирует google.com и все поддомены, кроме mail.google.com
address=/google.com/
server=/mail.google.com/#
#Примечание:
#Варианты address=/example.com/и server=/example.com/эквивалентны. Оба будут отвечать на запросы для них с помощью NXDOMAIN.
#Варианты address=/example.com/#и server=/example.com/#не эквивалентны.
#  address=/example.com/#будет отвечать на запросы для домена с нулевым адресом (0.0.0.0 или :: для IPv6).
#  server=/example.com/#будет отправлять запросы для домена на стандартно настроенные серверы.
#Шаблоны /example.com/и /.example.com/эквивалентны. Оба будут соответствовать домену example.com и всем его поддоменам.

-------------------------------

stubby

0. Установка:
apt install stubby 

1. Правим конфиг::
vim /etc/stubby.yml 
-------------------
# Активируем режим STUB-резолвера.
resolution_type: GETDNS_RESOLUTION_STUB
 
# Активируем транспорт TLS.
dns_transport_list:
  - GETDNS_TRANSPORT_TLS
 
# Требуем обязательного использования TLS.
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
 
# Задаём стойкость шифра (128 или 256 бит).
tls_query_padding_blocksize: 128
 
# Активируем rfc7871.
edns_client_subnet_private : 1
 
# Разрешаем переключение на другой DNS-сервер в случае недоступности текущего.
round_robin_upstreams: 1
 
# Задаём таймаут keepalive в миллисекундах.
idle_timeout: 9000
 
# Указываем лимит исходящих DNS-запросов на вышестоящий сервер.
limit_outstanding_queries: 100
 
# Задаём таймаут ожидания ответа от сервера в миллисекундах.
timeout: 1000
 
# Указываем используемые шифры для TLS 1.2 и ниже.
tls_cipher_list: "EECDH+AESGCM:EECDH+CHACHA20"
 
# Указываем используемые шифры для TLS 1.3 и выше.
tls_ciphersuites: "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
 
# Устанавливаем минимальную версию TLS.
tls_min_version: GETDNS_TLS1_2
 
# Устанавливаем максимальную версию TLS.
tls_max_version: GETDNS_TLS1_3
 
# Настраиваем stubby на прослушивание loopback-интерфейса и порта 5353.
listen_addresses:
  - 127.0.0.1@5353
  - 0::1@5353
 
# Указываем используемые серверы DNS.
upstream_recursive_servers:
  - address_data: 9.9.9.9
    tls_auth_name: "dns.quad9.net"
  - address_data: 1.1.1.1
    tls_auth_name: "cloudflare-dns.com"
  - address_data: 2620:fe::fe
    tls_auth_name: "dns.quad9.net"
  - address_data: 2606:4700:4700::1111
    tls_auth_name: "cloudflare-dns.com"
-------------------

Изменение резолвера по умолчанию:

0. Для того, чтобы dnsmasq смог занять стандартный порт 53/udp, мы должны отключить и заблокировать запуск сервиса systemd-resolved
systemctl disable --now systemd-resolved.service
systemctl mask systemd-resolved.service

1. Пересоздать файл "/etc/resolv.conf":
rm -f /etc/resolv.conf
touch /etc/resolv.conf
chown root:root /etc/resolv.conf
chmod 0644 /etc/resolv.conf


2. Редактируем файл resolv
vim /etc/resolv.conf
--------------------
nameserver 127.0.0.1
nameserver ::1
options trust-ad
options ndots:1
-------------------

Проверка, автозапуск stubby и dnsmasq

0. Активируем systemd-юниты:
systemctl enable --now dnsmasq.service
systemctl enable --now stubby.service

1. Перезапустим их для корректного вступления в силу изменений конфигурации:
sudo systemctl restart dnsmasq.service
sudo systemctl restart stubby.service

2. Проверим работу настроенной связки:
dig @127.0.0.1 easycoding.org


Еще примеры:

# otebatina
#listen-address=10.0.0.1
#interface=ovsbr0
#dhcp-range=10.0.0.2,10.0.0.254,255.255.255.0,12h

dhcp-range=interface:ovsbr0,10.0.0.2,10.0.0.254,24h
dhcp-range=interface:ovsbr1,10.0.1.2,10.0.1.254,24h

Одноразовый запуск из консоли, примеры:

dnsmasq -i enp0s20f0u2 --dhcp-range=192.168.88.64,192.168.88.128 --dhcp-boot=openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-initramfs-kernel.bin --enable-tftp --tftp-root=/srv/tftp/ -d -u nobody -p0 -K --log-dhcp --bootp-dynamic --dhcp-host=DC:2C:6E:68:AF:B9
 

dnsmasq -i enp0s20f0u1u1 --dhcp-range=10.50.50.200,10.50.50.240 -d -u nobody -p0 -K --log-dhcp --bootp-dynamic
Рубрики
*NIX информация

debian / proxy for user / proxy for apt / wget / curl / прокси для пользователя

в браузере:

в Debian: Настройки> Сеть> Сетевой прокси > Вручную
в Ubuntu: Настройки> Сеть> Сетевой прокси> самостоятельно

для системы:

!!! profie.d - все скрипты помещенные в этот каталог выполняются при входе пользователя в систему

vim /etc/profile.d/proxy.sh 
-----------------------
# 
export http_proxy="http://10.0.0.10:8080/"
export https_proxy="http://10.0.0.10:8080/"
export ftp_proxy="http://10.0.0.10:8080/"
export no_proxy="127.0.0.1,localhost"

# For curl
export HTTP_PROXY="http://10.0.0.10:8080/"
export HTTPS_PROXY="http://10.0.0.10:8080/"
export FTP_PROXY="http://10.0.0.10:8080/"
export NO_PROXY="127.0.0.1,localhost"

-----------------------

source /etc/profile.d/proxy.sh - получить переменные из файла
env | grep -i proxy - так мы можем убедится что переменные получены


Прокси для менеджера пакетов APT:


Без аутентификации:
vim /etc/apt/apt.conf.d/80proxy 
-------------------------------
Acquire::http::proxy "http://10.0.0.10:8080/";
Acquire::https::proxy "https://10.0.0.10:8080/";
Acquire::ftp::proxy "ftp://10.0.0.10:8080/";
-------------------------------

Если требуется аутентификация:
vim /etc/apt/apt.conf.d/80proxy 
-------------------------------
Acquire::http::proxy "http://:@:/";
Acquire::https::proxy "https://:@:/";
Acquire::ftp::proxy "ftp://:@:/";
-------------------------------

Прокси только для wget:

Редактируем файл в профиле пользователя:
vim ~/.wgetrc   
-------------                        
use_proxy = on
http_proxy = http://10.0.0.10:8080/ 
https_proxy = http://10.0.0.10:8080/ 
ftp_proxy = http://10.0.0.10:8080/ 
-------------

Для пользователей задать настройки proxy и dns:

0. Создаем файл с настройками прокси который сработает при входе пользователя:
cat > /etc/profile.d/proxy.sh << "EOF"
# set proxy config via profie.d - should apply for all users
# http/https/ftp/no_proxy
export http_proxy="http://10.254.254.254:3128/"
export https_proxy="http://10.254.254.254:3128/"
export ftp_proxy="http://10.254.254.254:3128/"
export no_proxy="127.0.0.1,localhost,10.254.254.0/24"

# For curl
export HTTP_PROXY="http://10.254.254.254:3128/"
export HTTPS_PROXY="http://10.254.254.254:3128/"
export FTP_PROXY="http://10.254.254.254:3128/"
export NO_PROXY="127.0.0.1,localhost,10.254.254.0/24"
EOF

1. Делаем его исполняемым:
chmod +x /etc/profile.d/proxy.sh


2. Сохраняем оригинальный файл resolv.conf и записываем наши настройки DNS:
mv /etc/resolv.conf /etc/resolv.conf.back
cat > /etc/resolv.conf << "EOF"
nameserver 10.254.254.254
domain lab.local
EOF

Рубрики
*NIX информация

debian 11 / dpdk / Data Plane Development Kit

Ссылки:

https://git.dpdk.org/dpdk/commit/?h=releases
https://habr.com/ru/company/intel/blog/302126/
https://habr.com/ru/post/267591/

/etc/apt/sources.list

deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free
 
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
 
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
 
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free

Ставим пакеты:

apt install lshw vim wget git make gcc linux-libc-dev linux-headers-amd64 pkg-config libncurses-dev flex bison  libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential  xz-utils  libncurses5-dev 
apt install python python3-distutils python3-apt

Настроим python:

apt install python python3-distutils python3-apt python3-pyelftools
update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1

Скачаем исходники dpdk:

cd /opt
wget https://git.dpdk.org/dpdk/snapshot/dpdk-releases.tar.gz
tar xvf dpdk-releases.tar.gz 

Tools dpdk

cd /opt/dpdk-releases/usertools
./cpu_layout.py - проверяем что там у нас по CPU
##./dpdk_nic_bind.py --status - проверяем информацию по сетевым устройствам (в новых версиях это "dpdk-devbind.py")
./dpdk-devbind.py --status - проверяем информацию по сетевым устройствам
#./setup.sh - файл помогающий настроить dpdk под вашу систему (в новых версиях делается в скриптах в каталоге ".cli")

cd /opt/dpdk-releases/.ci
./linux-setup.sh  - скрипт позволит настроить вашу систему для работы с dpdk
Рубрики
*NIX информация

error: symbol ‘grub_file_filters’ not found / debian / ubuntu

После обновления и перезагрузки системы получил ошибку:

error: symbol 'grub_file_filters' not found. 
Entering rescue mode... 
grub rescue>

Решение:


0. Качаем iso и загружаемся с диска в установленную систему:
Home
1. Загрузившись, выполняем инсталляцию grub grub-install /dev/vdX

Ссылки:

https://askubuntu.com/questions/1183951/grub-file-filters-not-found-after-ubuntu-19-10-upgrade

Рубрики
*NIX информация

rockchip / ROCK Pi S

Ссылки

https://wiki.radxa.com/RockpiS/dev/sdnand-install
https://wiki.radxa.com/RockpiS
https://opensource.rock-chips.com/wiki_Rkdeveloptool
https://github.com/rockchip-linux/rkbin

Рубрики
*NIX информация

noc / noc tower

Ссылки:

https://kb.nocproject.org/
https://kb.nocproject.org/pages/viewpage.action?pageId=13926529
https://kb.nocproject.org/pages/viewpage.action?pageId=26772210
https://kb.nocproject.org/pages/viewpage.action?pageId=38600718

https://www.youtube.com/channel/UC7r2LYJXJUurOIY40cRPcjQ

https://github.com/nocproject/noc-docker

https://code.getnoc.com/noc/tower
https://docs.getnoc.com
https://getnoc.com/

https://pro-ldap.ru/tr/zytrax/ch2/

tools

Переходим в каталог установленного noc
cd /opt/noc

Получение настроек NOC:
./noc config dump

Проверка ldap:
./noc login --debug --backend=ldap --user=
./noc login --debug --user=
Рубрики
*NIX информация

warzone2

 steam://install/1962663
Рубрики
*NIX информация

KDE Wallet System disabled / отключить wallet

vim .config/kwalletrc
-------------------
[Wallet]
Enabled=false
-------------------
Рубрики
*NIX информация

network-manager / nmcli

Основные команды nmcli:

Просмотр сетевых интерфейсов:
nmcli device status

Просмотр всех подключений (профилей):
nmcli connection show


Управление проводными соединениями (Ethernet, eth0):
nmcli con add type ethernet ifname eth0 con-name eth0-dhcp ipv4.method auto
nmcli con up eth0-dhcp

Подключение со статическим IP:
nmcli con add type ethernet ifname eth0 con-name eth0-static \
    ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli con modify eth0-static ipv4.dns "8.8.8.8,8.8.4.4"
nmcli con up eth0-static

Отключение/удаление соединения:
nmcli con down eth0-static  # Отключить
nmcli con delete eth0-static  # Удалить профиль


Управление Wi-Fi (wlan0):
Поиск доступных Wi-Fi сетей:
nmcli device wifi list

Подключение к Wi-Fi:
nmcli device wifi connect "MyWiFi" password "mypassword"

Подключение к Wi-Fi через создание профиля:
nmcli con add type wifi ifname wlan0 con-name mywifi ssid "MyWiFi"
nmcli con modify mywifi wifi-sec.key-mgmt wpa-psk
nmcli con modify mywifi wifi-sec.psk "mypassword"
nmcli con up mywifi

Создание точки доступа (Wi-Fi Hotspot)
nmcli con add type wifi ifname wlan0 con-name hotspot \
    ssid MyHotspot mode ap ip4 192.168.100.1/24
nmcli con modify hotspot wifi-sec.key-mgmt wpa-psk
nmcli con modify hotspot wifi-sec.psk "MyPassword123"
nmcli con up hotspot

Отключение Wi-Fi:
nmcli con down mywifi  # Отключить
nmcli con delete mywifi  # Удалить профиль

Полезные команды:
nmcli general status            #Статус NetworkManager
nmcli device show wlan0         #Подробная информация об интерфейсе
nmcli connection edit mywifi    #Редактировать профиль в интерактивном режиме
nmcli radio wifi on/off         #Включить/выключить Wi-Fi
nmcli monitor                   #Режим мониторинга (показывает события сети)


Решение проблем:
Wi-Fi не включается?
nmcli radio wifi on  # Включить Wi-Fi
rfkill unblock wifi  # Разблокировать, если софт-блок
Точка доступа не запускается?
sudo systemctl restart NetworkManager
nmcli con up hotspot
journalctl -u NetworkManager -f  # Логи
Нет интернета в Hotspot?
sudo iptables -t nat -L  # Проверить правила
sudo sysctl net.ipv4.ip_forward  # Должно быть =1

vpn

nmcli - network manager client
nmcli connection show - показать доступные соединения
nmcli connection  up [vpnName] - подключение к VPN из командной строки
nmcli connection down [vpnName] - отключение от VPN из командной строки

Пример:
nmcli connection up vpn.site.ru
nmcli connection dowm vpn.site.ru




vpn openvpn / wg / l2tp/ ipsec / pptp :

Установка пакетов:
# Debian/Ubuntu
sudo apt install network-manager-openvpn network-manager-openvpn-gnome  
sudo apt install network-manager-wireguard
sudo apt install network-manager-l2tp network-manager-l2tp-gnome
sudo apt install network-manager-pptp
# Arch Linux
sudo pacman -S networkmanager-openvpn
sudo pacman -S networkmanager-wireguard
sudo pacman -S networkmanager-l2tp

# OpenVPN
Импорт конфига .ovpn:
nmcli connection import type openvpn file /path/to/config.ovpn
Настройка вручную:
nmcli con add type vpn ifname eth0 con-name myvpn vpn-type openvpn \
    vpn.data "username=your_login, password=your_pass, remote=server.com, port=1194, dev=tun, comp-lzo=yes"
Подключение:
nmcli con up myvpn

# WireGuard
Импорт конфига .conf:
nmcli connection import type wireguard file /path/to/wg0.conf
Настройка вручную:
nmcli con add type wireguard ifname wg0 con-name mywg \
    wireguard.private-key "base64_private_key" \
    wireguard.peer "public-key=base64_peer_key, endpoint=server.com:51820, allowed-ips=0.0.0.0/0"
Подключение:
nmcli con up mywg

# L2TP/IPsec
Создание подключения:
nmcli con add type vpn ifname eth0 con-name myl2tp vpn-type l2tp \
    vpn.data "gateway=server.com, ipsec-enabled=yes, ipsec-psk=pre_shared_key, user=login, password=pass"
Подключение:
nmcli con up myl2tp

# Управление VPN
nmcli con show --active	 # Показать активные подключения (включая VPN)
nmcli con down myvpn	 # Отключить VPN
nmcli con delete myvpn	 # Удалить VPN-профиль
nmcli -p con show myvpn	 # Подробный просмотр настроек VPN

Настройка eth0 для получения интернета по dhcp

nmcli con add type ethernet ifname eth0 con-name eth0-dhcp ipv4.method auto
nmcli con up eth0-dhcp

Dhcp + статически адрес для eth0

nmcli con add type ethernet ifname eth0 con-name eth0-dhcp ipv4.method auto
nmcli con modify eth0-dhcp +ipv4.addresses "10.10.10.1/24"
nmcli con up eth0-dhcp

Создание статики с адресом 10.10.10.1/24:

nmcli con add type ethernet ifname eth0 con-name eth0-static ipv4 10.10.10.1/24
nmcli con up eth0-static

Создание нового подключения-алиаса eth:1

nmcli con add type ethernet ifname eth0 con-name eth0-alias \
    ipv4.addresses "10.10.10.1/24" \
    ipv4.method manual \
    ipv4.gateway "" \
    ipv4.dns "" \
    ipv4.ignore-auto-dns true \
    ipv4.never-default true \
    connection.autoconnect yes

Создание точки доступа MyWiFiAP с паролем MyPassword123 :

nmcli con add type wifi ifname wlan0 con-name hotspot ssid MyWiFiAP mode ap ip4 192.168.100.1/24
nmcli con modify hotspot wifi-sec.key-mgmt wpa-psk
nmcli con modify hotspot wifi-sec.psk "MyPassword123"
nmcli con up hotspot

Настройка VLAN (например, eth0.100):

nmcli con add type vlan ifname eth0.100 dev eth0 id 100 \
    ipv4.addresses "192.168.100.1/24" \
    ipv4.method manual
nmcli con up vlan-eth0.100

Создание моста (br0):

nmcli con add type bridge ifname br0
nmcli con add type bridge-slave ifname eth0 master br0
nmcli con modify bridge-br0 ipv4.addresses "10.0.0.1/24" ipv4.method manual
nmcli con up bridge-br0

Файервол и форвард:

Ставим пакеты:
apt install  hostapd dnsmasq iptables

Пример скрипта с помощью systemd
0. Создаем каталог и сервис
mkdir /etc/iptables 

cat > /etc/systemd/system/iptablessh.service << "EOF"
[Unit]
Description= add firewale rule
After=network.target
 
[Service]
Type=simple
TimeoutStartSec=10
ExecStart=/etc/iptables/iptables.sh
 
[Install]
WantedBy=multi-user.target
EOF
 

 
2. Создаем скрипт
cat > /etc/iptables/iptables.sh << "EOF"
#!/bin/bash
iptables-restore /etc/iptables/iptable.4
ip6tables-restore /etc/iptables/iptable.6
sysctl -w net.ipv4.ip_forward=1
EOF


chmod +x  /etc/iptables/iptables.sh


3. Создаем правила
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables-save > /etc/iptables/iptable.4 

cat > /etc/iptables/iptable.6 << "EOF"
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
COMMIT
EOF


4. Включаем демон 
systemctl daemon-reload 
systemctl status iptablessh.service 
systemctl --failed 
systemctl enable iptablessh.service 
systemctl start iptablessh.service 

!!! Для автоматического запуска NAT после перезагрузки добавьте net.ipv4.ip_forward=1 в /etc/sysctl.conf или добавить в скрипт

конфиг /etc/dnsmasq.conf или /etc/dnsmasq.d/hotspot.conf

Создаем конфиг
cat > /etc/dnsmasq.d/hotspot.conf << "EOF"
port=0
#no-resolv
server=10.10.99.1

# Google's nameservers, for example
server=8.8.8.8
server=8.8.4.4

listen-address=10.10.99.1
no-hosts
dhcp-range=10.10.99.100,10.10.99.200,15m
dhcp-option=option:router,10.10.99.1
dhcp-option=option:dns-server,10.10.99.1,8.8.8.8,8.8.4.4
cache-size=1000


dhcp-host=b8:27:eb:93:94:9c,10.10.99.10,PC-5000
dhcp-host=b8:27:eb:78:08:57,10.10.99.20,PC-6000


EOF



Если что то не работает:

Проверьте логи NetworkManager:
journalctl -u NetworkManager -f

Убедитесь, что hostapd и dnsmasq работают:
sudo systemctl status hostapd dnsmasq

Если точка доступа не запускается, попробуйте вручную:
sudo systemctl restart NetworkManager
nmcli con up hotspot

# Просмотр выданных адресов:
cat /var/lib/misc/dnsmasq.leases
# Или для NetworkManager:
journalctl -u NetworkManager | grep -i dhcp
Рубрики
*NIX информация

vyos

Сcылки:

https://support.vyos.io/en -помощь
https://support.vyos.io/en/kb - помощь

https://blackdiver.net/it/linux/4419 - статья на русском с примерами

https://support.vyos.io/en/kb/articles/set-change-the-password-of-a-user - изменить пароль \ создать пользователя

https://support.vyos.io/en/kb/articles/ethernet-interfaces - помощь по настройке сети 

https://docs.vyos.io/en/latest/configuration/service/index.html - доступные сервисы
https://docs.vyos.io/en/latest/configuration/service/ssh.html - ssh

https://docs.vyos.io/en/latest/installation/update.html - обновление

https://support.vyos.io/en/kb/articles/dns-forwarding - DNS


https://downloads.vyos.io/rolling/current/amd64/vyos-rolling-latest.iso - последний образ
https://downloads.vyos.io/?dir=rolling/current/amd64 - образы
https://github.com/vyos/vyos-build

https://support.vyos.io/en/kb/articles/static-ipv4-routing - Роутинг

проблемы с raid1:
https://blackbird.si/installing-vyatta-6-6-r1-with-software-raid-1/
https://forum.vyos.io/t/installing-on-a-software-raid/3523

Установка:

0. Скачиваем образ:
https://downloads.vyos.io/rolling/current/amd64/vyos-rolling-latest.iso

1. Загружаемся с образа

2. Пароли и логин по умолчанию
Логин: vyos
Пароль: vyos

3. Производим установку
install image

О конфигурировании:

0. зашли в консоль
1. Включили режим конфигурирования
configure
2. Выполнили нудные команды
команды
3. Применили изменения 
commit
4. Сохранили изменения
save
5. Вышли 
exit

Создать пользователя \ Изменить пароль пользователю

1. Включили режим конфигурирования
configure

2. Создали \ изменили пароль пользователю

set system login user [username] authentication plaintext-password [password]

3. Сохранили изменения
commit
save

Включить SSH

1. Включили режим конфигурирования
configure

2. Включить ssh
set service ssh port 22

3. Сохранили изменения
commit
save

Настройка сетевого адаптера \ Установка IP v4 адреса

1. Включили режим конфигурирования
configure

2. Настроить интерфейсы:
Задаем ip:
set interfaces ethernet eth1 address '192.168.0.1/24' 
Называем наш интерфейс, не обязательно
set interfaces ethernet eth1 description 'INSIDE'
Задаем скорость:
set interfaces ethernet eth1 duplex 'auto'
set interfaces ethernet eth1 speed 'auto'

3. Сохранили изменения и выходим из конфига
commit
save
exit

4. Проверяем
show interfaces ethernet eth1 physical


настройка DNS:

set service dns forwarding system
set service dns forwarding name-server 8.8.8.8
set service dns forwarding name-server 8.8.4.4

Routing

Маршрут по умолчанию:
set protocols static route 0.0.0.0/0 next-hop 1.1.1.1 distance 1

Блокировка сетей:
set protocols static route 10.0.0.0/8 blackhole distance '254'
set protocols static route 172.16.0.0/12 blackhole distance '254'
set protocols static route 192.168.0.0/16 blackhole distance '254'
Рубрики
*NIX информация

logrotate.service degraded

Проблема:

Падает демон logrotate

В логах
cd /var/log
grep -irns logrotate.service -C4
--------------------------------
daemon.log-13157-Jul  5 00:00:10 HOSTNAME systemd[1]: Reloaded The Apache HTTP Server.
daemon.log-13158-Jul  5 00:00:10 HOSTNAME logrotate[13606]: #007mysqladmin: connect to server at 'localhost' failed
daemon.log-13159-Jul  5 00:00:10 HOSTNAME logrotate[13606]: error: 'Access denied for user 'root'@'localhost' (using password: NO)'
daemon.log-13160-Jul  5 00:00:10 HOSTNAME logrotate[13606]: error: error running shared postrotate script for '/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log '
daemon.log:13161:Jul  5 00:00:10 HOSTNAME systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
daemon.log:13162:Jul  5 00:00:10 HOSTNAME systemd[1]: logrotate.service: Failed with result 'exit-code'.
daemon.log-13163-Jul  5 00:00:10 HOSTNAME systemd[1]: Failed to start Rotate log files.
daemon.log-13164-Jul  5 00:00:12 HOSTNAME systemd[1]: Stopping User Manager for UID 1015...
daemon.log-13165-Jul  5 00:00:12 HOSTNAME systemd[13615]: Stopped target Default.
daemon.log-13166-Jul  5 00:00:12 HOSTNAME systemd[13615]: Stopped target Basic System.
--------------------------------

в файле /etc/mysql/debian.cnf нет юзера debian-sys-maint и пароль пуст
cat /etc# cat /etc/mysql/debian.cnf
--------------------------------
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = root
password = 
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = root
password = 
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr
--------------------------------





Решение:

https://qastack.ru/server/9948/what-is-the-debian-sys-maint-mysql-user-and-more


задать пароль пользователю debian-sys-maint:
!!! ВАШ_НОВЫЙ_ПАРОЛЬ_ДЛЯ_ЮЗЕРА_debian-sys-maint - придумываем
GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'ВАШ_НОВЫЙ_ПАРОЛЬ_ДЛЯ_ЮЗЕРА' WITH GRANT OPTION; FLUSH PRIVILEGES;
прописать логин и пароль debian-sys-maint  в файл:
vim /etc# cat /etc/mysql/debian.cnf
--------------------------------
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = ВАШ_НОВЫЙ_ПАРОЛЬ_ДЛЯ_ЮЗЕРА_debian-sys-maint
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = ВАШ_НОВЫЙ_ПАРОЛЬ_ДЛЯ_ЮЗЕРА_debian-sys-maint
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr
--------------------------------

Проверяем:
logrotate -v -f /etc/logrotate.d/mysql-server