Содержание

Сеть

Оключить влияние NetworkManager на /etc/resolv.conf

Создать собственный файл настроек, например, /etc/NetworkManager/conf.d/ok.conf:

[main]
dns=none

Создать собственный /etc/resolv.conf, например:

search ok
nameserver 192.168.1.2

LIBVIRTD без IPTABLES. Fedora 38

В свойствах виртуальной сети (virsh net-edit) изменить:

<forward mode="nat"/>

на

<forward mode="open"/>

Перезапустить libvirtd.

Правила iptables в таблице nat (адрес подсети зависит о настроек):

-A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE

В таблице filter:

-A INPUT -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j ACCEPT

DOCKER без IPTABLES. Fedora 38

Причина: неподконтрольные действия podman в отношении правил iptables.
Цель: установить docker образ.
Условие: «ручное» и понятное управление правилами iptables.

Установка docker (на самом деле. установится «moby-engine»):

dnf install docker

Добавление опции отключения iptables (–iptables=false):

cat /etc/sysconfig/docker 
OPTIONS="--log-driver=journald \
  --live-restore \
  --default-ulimit nofile=1024:1024 \
  --init-path /usr/libexec/docker/docker-init \
  --userland-proxy-path /usr/libexec/docker/docker-proxy \
  --iptables=false \
  --data-root /mnt/storage/docker \
"

Также все данные docker были перенесены на другой диск - «–data-root /mnt/storage/docker»

Запуск docker:

systemctl enable --now docker

Восстановление из ранее сохранённого образа:

docker load < acestream-proxy.tar

Запуск контейнера:

docker run -d -p 192.168.1.2:6878:6878 -p 192.168.1.2:8000:8000 --name AS rusanter/acestream-proxy

При перезапуске службы docker, контейнер стартует. Вероятно срабатывает опция «–live-restore» при запуске службы.

Правила iptables в таблице nat:

-A POSTROUTING -s 172.17.0.0/24 -j MASQUERADE

В таблице filter:

-A INPUT -i docker0 -j ACCEPT
-A FORWARD -i docker0 -j ACCEPT
-A FORWARD -o docker0 -j ACCEPT
  • В процессе запуска была проблема: не отрабатывали DNS запросы внутри контейнера. Как оказалось, подсеть docker-а не была разрешена в настройках named.

MAG322 не подключается к NFS серверу на Fedora 38

На сервере в /etc/nfs.conf в секции [nfsd] включить опцию:

udp=y

И перезапустить NFS сервер:

systemctl restart nfs-server

По наводке: https://www.linux.org.ru/forum/general/14453819

vnstat (Fedora 38)

Установка:

dnf install vnstat
systemctl enable --now vnstat

Какие интерфейсы обнаружились:

vnstat --iflist

Отключение «лишних»:

vnstat -i eth1 --remove --force
vnstat -i podman0 --remove --force
vnstat -i veth0 --remove --force

В /etc/vnstat.conf можно поменять локализацию и формат времени.

WEB интерфейс: https://github.com/kdkasad/vnstat-web

Передача пароля SSH в командной строке

sshpass -p PASSWORD ssh -p 22 user@server

Можно использовать при создании SSH туннеля к серверу не позволяющему сохранение публичных ключей.
https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password/512220#512220

SSH и RDP через SOCKS5 прокси

ssh -o ProxyCommand='nc --proxy-type socks5 --proxy 127.0.0.1:2225 %h %p' root@sshserver
xfreerdp /v:rdpserver /u:USER /p:PASSWORD +fonts /cert-ignore /size:1800x960 /drive:TRANSIT,/mnt/storage/transit /proxy:socks5://127.0.0.1:2225

Создание самоподписанного сертификата для Apache

openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout secret.domain.key -out secret.domain.crt -subj "/C=DE/ST=Berlin/L=Berlin/O=Secret Service/OU=IT Department/CN=secret.domain/CN=support@secret.domain"

Yandex Dynamic DNS

Предполагается, что уже есть домен под управлением Яндекса - https://connect.yandex.ru/portal/services/webmaster/resources или https://admin.yandex.ru/domains

Например, изменять требуется адреса доменов «domain.sample» и «subdomain.domain.sample»

  • Создають записи типа «A» с «TTL=300».
Хост		Тип записи	Значение записи	TTL	
@		A		127.0.0.1	300	(domain.sample)
subdomain	A		127.0.0.1	300	(subdomain.domain.sample)

Получить токен для управления записями DNS (учётная запись Яндекса, под управлением которой находится DNS, должна быть текущей в браузере) - https://pddimp.yandex.ru/api2/admin/get_token, в качестве домена, вводить «domain.sample».

Выведется, что-то, вроде этого: «SKC7WTYHNSK34PNQKCW5YY2UV5AZZEBASPQZQFDY2UV5AZZ3363H»

Получить ID записей:

curl -sH 'PddToken: SKC7WTYHNSK34PNQKCW5YY2UV5AZZEBASPQZQFDY2UV5AZZ3363H' 'https://pddimp.yandex.ru/api2/admin/dns/list?domain=domain.sample' | jq

Будет получен перечень записей, такого вида:

{
    "domain": "domain.sample",
    "ttl": 300,
    "subdomain": "@",
    "content": "127.0.0.1",
    "fqdn": "domain.sample",
    "record_id": 21475617,
    "type": "A",
    "priority": ""
},
{
    "domain": "domain.sample",
    "ttl": 300,
    "subdomain": "subdomain",
    "content": "127.0.0.1",
    "fqdn": "subdomain.domain.sample",
    "record_id": 21475619,
    "type": "A",
    "priority": ""
},

После чего можно менять значение IP указанных записей, например, на 1.1.1.1 и 2.2.2.2:

curl -sH 'PddToken: SKC7WTYHNSK34PNQKCW5YY2UV5AZZEBASPQZQFDY2UV5AZZ3363H' -d 'domain=domain.sample&record_id=21475617&subdomain=@&ttl=300&content=1.1.1.1' 'https://pddimp.yandex.ru/api2/admin/dns/edit'
curl -sH 'PddToken: SKC7WTYHNSK34PNQKCW5YY2UV5AZZEBASPQZQFDY2UV5AZZ3363H' -d 'domain=domain.sample&record_id=21475619&subdomain=subdomain&ttl=300&content=2.2.2.2' 'https://pddimp.yandex.ru/api2/admin/dns/edit'

yt-dlp - скачать все видео

yt-dlp --ignore-errors --continue --no-overwrites <URL>

HTTPS сертификаты Let's Encrypt на CentOS 7 (certbot,letsencrypt)

yum -y install certbot python-certbot-apache
certbot --apache

Ввести адрес электронной почты.
Подтвердить условия использования.
Желаете-ли получать рассылку на указанный адрес.

Предоставляется выбор доменов, которые найдены в конфигурации httpd:

1: kochkin.tk
2: www.kochkin.tk
3: kochkin.mooo.com

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

После чего будут получены сертификаты и в конфигурационные файлы httpd будут внесены измения для их использования. Также будет сделано перенаправление с http на https.
Для обновления сертификатов, включить системный таймер:

systemctl enable certbot-renew.timer

Отсюда и отсюда.

Просмотр сертификатов:

certbot certificates

Добавление домена к существующим:

certbot --expand -d kochkin.tk,kochkin.mooo.com,www.kochkin.tk,kochkin.us.to

Удаление доменов:

certbot delete

Использование сертификатов privkey.pem и fullchain.pem на другом компьютере с RedMine установленным в Windows

Файлы копируются в папку с Apache под Windows:

scp root@192.168.10.108:/etc/letsencrypt/live/YouDomain/fullchain.pem c:/redmine/apache2/conf/SSL/YouDomain/fullchain.pem
scp root@192.168.10.108:/etc/letsencrypt/live/YouDomain/privkey.pem c:/redmine/apache2/conf/SSL/YouDomain/privkey.pem
net stop redmineApache
net start redmineApache

192.168.10.108 - Компьютер, который обновляет сертификаты для домена.

В конфигурационном файле, в которов указываются пути к сертификатам должно быть прописано:

SSLCertificateFile "c:/redmine/apache2/conf/SSL/YouDomain/fullchain.pem"
SSLCertificateKeyFile "c:/redmine/apache2/conf/SSL/YouDomain/privkey.pem"

Преобразование автоматически сгенерированных сертификатов в формат PFX для IIS

Необходимые сертификаты (точнее, симлинки) на компьютере, который обновляет сертификаты, находятся в

/etc/letsencrypt/live/<Ваш домен>

Это файлы «privkey.pem» и «fullchain.pem»

В указанной выше папке, запустить:

openssl pkcs12 -inkey privkey.pem -in fullchain.pem -export -out YouDomain.pfx -passout pass:

Обновление PFX в IIS

CMD файл запускаемый на Windows с установленным IIS. :

scp root@192.168.10.108:/etc/letsencrypt/live/YouDomain/YouDomain.pfx YouDomain.pfx
certutil -delstore "WebHosting" "YouDomain"
certutil -f -p "" -importpfx "WebHosting" "YouDomain.pfx"
certutil -repairstore "WebHosting" "YouDomain"

192.168.10.108 - Компьютер, который обновляет сертификаты для домена.

Отключить ipv6

Временно, до перезагрузки:

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
sysctl -w net.ipv6.conf.lo.disable_ipv6=1

Для полного отключения ipv6 в ядре, добавить к параметрам ядра:

ipv6.disable=1

Отправка локальной почты с CentOS через postfix

Если домен от имени которого необходимо отправлять почту не совпадает с локальным именем машины с которой необходимо отправлять почту, надо указать имя домена, от имени которого отправляется почта в /etc/postfix/main.cf

myhostname = domain.com
myorigin = domain.com

Домен domain.com должен резольвиться на IP, с которого отправляется почта.

Узнать скорость приёма/передачи для конкретной подсети

Провайдер предоставляет доступ к интернет следующим способом:

  • Пользователю выдаётся IP адрес из приватной сети 10.0.0.0/8
  • Пользователь выходит в интернет через шлюз приватной сети (NAT)
  • При выходе в интернет, каждому пользователю соответствует реальный динамический IP
  • На сетевом интерфейсе пользователя присутствует трафик, как в/из локальной сети, так и интернет трафик

Задача: Отфильтровать скорость приёма/передачи в/из подсеть 10.0.0.0/8 от остального для раздельного подсчёта и передачи данных в zabbix.

Считать скорость на сетевом интерфейсе не получится, т.к., там присутствует «смешанный» трафик.

Создаём правила в таблице mangle iptables:

*mangle
-A PREROUTING -p all -i eth1 -s 10.0.0.0/8 -j MARK --set-mark 1
-A POSTROUTING -p all -o eth1 -d 10.0.0.0/8 -j MARK --set-mark 2
COMMIT

Получить значения можно командами:

iptables -L -vxnt mangle | grep "MARK set 0x1" | awk '{print $2}'
iptables -L -vxnt mangle | grep "MARK set 0x2" | awk '{print $2}'

В zabbix указать в предобработке значения - «Изменения в секунду»

«Чистый» трафик в/из интернета можно получить разностью полного трафика на интерфейсе (eth1) и полученного локального трафика.

Включить клиент ipv6 поверх ipv4 (Teredo) (Fedora 29)

dnf -y install miredo-client
systemctl enable miredo-client
systemctl start miredo-client
ping6 ipv6.google.com

Проверить скорость передачи между двумя компьютерами

На первом запускаем (должен быть открыт порт 5201 для входящих подключений):

iperf3 -s

На втором:

iperf3 -е 600 -с <адрес первого компьютера>

Или новый синтаксис:

iperf3 -с <адрес первого компьютера> -t 600

Запустит тест на передачу на 600 секунд.

Включить автоопределение параметров сетевой карты (autoneg)

ethtool -s enp8s0 autoneg on

Или в файле /etc/sysconfig/network-scripts/ifcfg-enp8s0:

ETHTOOL_OPTS="autoneg on"

IPSET и IPTABLES (CentOS 7)

systemctl disable --now firewalld
dnf remove firewalld*
dnf install iptables-services ipset-service
systemctl enable --now ipset && systemctl enable --now iptables

Чтобы правила IPSET автоматически сохранялись в /etc/sysconfig/ipset при перезапуске или останове службы IPSET, необходимо добавить в файл /etc/sysconfig/ipset-config переменные:

IPSET_SAVE_ON_STOP=yes
IPSET_SAVE_ON_RESTART=yes

Скачать с youtube.com видео опубликованные после определённой даты

youtube-dl -c -f bestvideo+bestaudio --dateafter 20171130 -o "%(title)s.%(ext)s" "URL"

–dateafter 20171130 - после 30 ноября 2017г.
«URL» - URL канала, плейлиста.

Документация на youtube-dl.

Обратный туннель SSH

Иногда бывает необходимо компьютеру «A» войти по SSH на компьютер «B», расположенным за NAT и не имеющего реального IP адреса. Выход есть, если компьютер «B» может соединиться по SSH с компьютером «A». Но без «помощника» не обойтись.

«Помощник» должен запустить на компьютере «B» команду:

ssh -fN -R 10022:localhost:22 user@server -p 2022

что означает: создать подключение с компьютером «A» (server), под пользователем «user» на порт 2022 и предоставить возможность обратного соединения компьютера «A» на порт 22 компьютера «B» по локальному порту 10022 компьютера «A» и уйти в фоновый режим (опция «-f»).

Для соединения с компьютером «B», используя данный туннель, на компьютере «A» выполнить:

ssh -p 10022 localhost

Или ещё один вариант. На сервере в /etc/ssh/sshd_config должна быть включена опция «GatewayPorts yes»:

ssh -fN -R 192.168.20.1:10022:localhost:22 user@server -p 2022

Для соединения:

ssh -p 10022 192.168.20.1

Подсмотрено здесь.

Проброс удалённого порта на локальный через SSH туннель

ssh -L 4489:192.168.100.100:3389 user@host.server

4489 - локальный порт
3389 - удалённый порт на 192.168.100.100 (сервер терминалов)
user@host.server - SSH сервер к которому пробрасывается туннель и с которого осуществляется подключение к 192.168.100.100
При подключении RDP клиента на локальный порт 4489, попадаем через SSH туннель на порт 3389 на 192.168.100.100.

Подсмотрено здесь.

Вариант проброса нескольких портов в фоне:

ssh -L 22008:server1:3389 -L 22007:server2:3389 -L 22006:server3:3389 -p 34033 root@sshserver -fN

SSH туннель в виде SOCKS5 прокси

ssh -fN -D 2000 usertunnel@sshserver -p 6060

2000 - Порт SOCKS5 прокси, который должен указываться в клиентской программе, например, в браузере.
usertunnel@sshserver - Пользователь@адрес SSH сервера.
6060 - Порт SSH сервера.

Для доступа к SSH серверу по сертификату, сгенерировать ключи клиента:

ssh-keygen -t rsa -b 2048

И добавить клиентский ~/.ssh/id_rsa.pub к файлу ~/.ssh/authorized_keys пользователя SSH сервера, от имени, которого производится подключение (usertunnel).
В случае Windows клиента id_rsa.pub находится в папке пользователя, например, c:\Users\Пользователь\.ssh\id_rsa.pub.

Опции SSH для подключения к своим виртуальным машинам

ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" user@host

UserKnownHostsFile=/dev/null - не сохранять ключи подключаемых хостов.
StrictHostKeyChecking=no - не проверять ключи.

Подсмотрено здесь.

Именование сетевых интерфейсов в "привычном виде"

В Fedora 15/16 сетевые интерфейсы именуются примерно так - «p2p1».
Для именования интерфейсов в виде «ethX» необходимо:

  1. Удалить пакет biosdevname (yum remove biosdevname).
  2. Удалить файл /etc/udev/rules.d/70-persistent-net.rules.
  3. Перегрузиться.
  4. Создать интерфейсы с «привычным» именем.

В CentOS 7,8

  1. Удалить пакет «biosdevname»
  2. Добавить в параметры GRUB «biosdevname=0 net.ifnames=0»
  3. Перегрузиться

Использование нестандартного порта SSH для RSYNC

rsync -e 'ssh -p 4056' archive.tar.bz2 192.168.10.24:/

Копирует файл archive.tar.bz2 из текущей папки в корневую папку машины 192.168.10.24 через SSH порт 4056.

Печать в RDP сеансе

11 декабря 2009г. Fedora 12.

  • Установите драйвера принтера на сервере Windows к которому необходимо подключаться.
  • Добавьте к rdesktop параметр -r printer:«HP-LaserJet-P1005»

Где «HP-LaserJet-P1005» - название принтера в Linux.
Если используете krdc, данный параметр прописывается в пункте \«Дополнительные параметры\» соединения.

Для xfreerdp параметр

/printer:PRINTER_NAME

Изменение номера сетевого устройства.

3 июля 2009г. Fedora 11.

Привязки MAC адресов к номерам сетевых устройств находятся в файле /etc/udev/rules.d/70-persistent-net.rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1a:4d:51:d8:1d", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Смена номера призводилась путём изменения MAC адреса.

Закачка rsync - ом.

21 октября 2008г.

Пример закачки DVD образа Tedora с зеркала yandex.ru

rsync -zavP rsync://mirror.yandex.ru/fedora/tedora/releases/9.1/x86_64/iso/Tedora-9.1-x86_64-DVD.iso /media/tedora/Tedora-9.1-x86_64-DVD.iso

Установка MAC адреса.

Для временной смены:

ifconfig eth1 hw ether 00:1A:4D:51:D8:10

Для постоянного использования - в файле \«/etc/sysconfig/network-scripts/ifcfg-eth0\» вписать строчку:

MACADDR=00:1A:4D:51:D8:10

Подключение Jabber аккаунта на gmail.com (настройки Kopete).

Основные параметры / Jabber ID – имя@gmail.com
Подключение / Шифрование (SSL) – вкл., Разрешить передачу паролей открытым текстом – вкл.,
Заменить стандартную информацию о сервере: Сервер – talk.google.com, Порт – 443.

Доступ по SSH с локали UTF8 на узел с локалью KOI8R.

    LANG=ru_RU.koi8r konsole -e ssh gate -l root -p 22

Закачка wget-ом.

закачивает все jpg файлы с сайта www.site.com:

    wget -r -v -A *.jpg http://www.site.com/

закачивает все файлы не выше указанной папки и форматирует ссылки в документах для автономного просмотра:

    wget -np -k -p -r -A * http://www.rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/

Экспорт папок для NFS.

В файле /etc/exports прописываем папки для экспорта (с доступом на запись, нескрытая):

/media/disk_d/share/ 192.168.10.*(rw,sync,nohide)

В Fedora 38 указывается подсеть с маской:

/media/disk_d/share/ 192.168.10.0/24(rw,sync,nohide)

Примечание: Для экспорта папок с NTFS надо патчить ядро (не проверялось).

Предоставление шар по самбе.

В файле /etc/samba/smb.conf :

    [global]
    netbios name = lin-01             # Имя машины
    workgroup = workgroup             # Рабочая группа
    server string = lin-01            # Строка сервера
    security = share                  # Безовасность (свободный доступ)
    [share]                           # Название ресурса
    path=/media/disk_d/share          # Папка
    writable = yes                    # Запись разрешена
    guest ok = yes                    # Разрешён доступ гостю

Автомонтирование сетевых папок.

В файле /etc/auto.master :

    /media/net /etc/auto.netw --timeout 36000

/media/net - общая папка для точек монтирования /etc/auto.netw - файл точек монтирования (файл может быть любой) –timeout 36000 - время отсоединения шары (10 часов) В /etc/auto.netw :

    lin-03-share    -rw,soft,intr                                   lin-03:/media/disk_d/share/    # Монтируется диск с VFAT
    win-02-share    -fstype=cifs,uid=user,gid=user,noperm,guest,rw  ://win-02/share                # Шара на Windows

Вышеуказанные ресурсы монтируются в - /media/net/lin-03-share и /media/net/win-02-share при первом обращении к ним.

Подключение к PPTP серверу Microsoft (сервер используется в «домашних» сетях, например LANCOM).

Прежде, чем пытаться подключиться по PPTP необходимо настроить статические маршруты, получаемые по DHCP. Без этого не будут доступны локальные ресурсы домовой сети и, соответственно, VPN сервер. О настройке читать здесь.

Для создания файла туннеля использовать pptpconfig из пакета pptp-client (http://pptpclient.sourceforge.net) При «ручном» подключении использовать pptpconfig. Для подключения при загрузке системы — команда:

    pppd call <туннель> debug nodetach &

Эта команда прописывается, например, в файле «/etc/rc.d/rc.local» При автоматическом подключении необходимо добавить

    route add default dev ppp0

в файл «/etc/ppp/ip-up».

Просмотр и запись потока по RTSP

Просмотр:

ffplay -rtsp_transport http rtsp://s10.domain.com:1935/streams/stream100
vlc rtsp://s10.domain.com:1935/streams/stream100 --rtsp-http --network-caching 15000

Запись:

ffmpeg -rtsp_transport http -i rtsp://s10.domain.com:1935/streams/stream100 -vcodec copy -acodec copy out.mp4

Доступ к SSH по ключу (без пароля)

Необходимо добавить содержимое файла ~/.ssh/id_rsa.pub, находящегося на клиентской машине из домашней папки пользователя, который должен входить на сервер к файлу ~/.ssh/authorized_keys пользователя на сервере от имени которого производится вход.

Публичный ключ id_rsa.pub (если его ещё не существует) генерируется командой:

ssh-keygen -t rsa

Добавление публичного ключа с клиентской на удалённую машину. На клиентской машине выполнить:

cat .ssh/id_rsa.pub | ssh server_user@server_address -p 3022 "cat >> .ssh/authorized_keys"

или

ssh-copy-id [-p port] [user@]hostname

Для отключения возможности входа по паролю, на сервере, в файле /etc/ssh/sshd_config установить опцию

PasswordAuthentication no

После обновления с Fedora 32 на 33 перестала работать аутентификация по ключу

Один из вариантов исправления:

update-crypto-policies --set DEFAULT:FEDORA32

https://fedoraproject.org/wiki/Changes/StrongCryptoSettings2#Upgrade.2Fcompatibility_impact

Адаптация 3G модема ZTE MF180 от Билайн для работы в Fedora 17

Версия оборудования - P671A-1-2.0.0
Версия прошивок:

  • HW - BD_BLNMF180V1.0.0B04
  • SW - PCW_BLNRUSCOMV1.0.0B05
  1. Выяснить к какому порту подключен модем, в моём случае, на /dev/ttyUSB3.
  2. В консоли от root-а выполнить команду:
# echo -e "AT+ZCDRUN=Ern" > /dev/ttyUSB3

Данная команда была послана один раз, модем нормально работает и после физического отключения.
Модем может нормально работать при отсутствии виндового ПО, нормально настраивается в NetworkManager.

Найдено здесь.

Данная команда отключает доступ к диску модема, поэтому становятся недоступны ПО и драйверы, расположенные на нём.
ПО и драйверы для Windows можно скачать с форума Билайн.


P.S. Если есть необходимость вернуть всё назад (сам не проверял):

# echo -e "AT+ZCDRUN=Frn" > /dev/ttyUSB3

Найдено здесь.

Устранение задержки при подключении к SSH серверу

11 декабря 2013г. Scientific Linux 6.4

На сервере в файле /etc/ssh/sshd_config установить параметр:

UseDNS no

Подключение посредством протокола l2tp в сети StarNet г. Волжского. (Вариант с openl2tp)

8 сентября 2011г., Fedora 15

Устанавливаем:

yum install openl2tp

Файл конфигурации (по умолчанию - «/etc/openl2tpd.conf»):

ppp profile modify profile_name=default auth_eap=no auth_mschapv1=no auth_mschapv2=no
tunnel create tunnel_name=starnet dest_ipaddr=l2tp.starnet persist=yes
session create tunnel_name=starnet session_name=starnet user_name=UserName user_password=Password
system modify deny_remote_tunnel_creates=yes

Вместо UserName и Password прописываем имя и пароль, выданные провайдером.

В файле «/etc/sysconfig/openl2tpd» закомментируем строки (назначение этого файла для меня непонятно):

#OPENL2TPDARGS=
#OPENL2TPD_CONFIG_FILE=

Создаём файл «/etc/ppp/peers/starnet»:

nodeflate                                                                                                                 
nobsdcomp                                                                                                                 
noauth
nomppe
lock
refuse-eap
persist
maxfail 0
holdoff 10

Для соединения во время старта системы делаем следующее:
Создаём файл «/sbin/ifup-local» (Он автоматом запускается после поднятия интерфейса, в моём случае - eth1)
В нём прибиваются «лишние» процессы pppd и запускается openl2tpd

#!/bin/sh
if [ "$1" == "eth1"  ]; then
   killall pppd
   systemctl start openl2tpd.service &
fi

Чтобы завершить лишние процессы при отключении eth1, создаём файл «/sbin/ifdown-pre-local» (Он автоматом запускается перед отключением интерфейса):

#!/bin/sh
if [ "$1" == "eth1"  ]; then
   killall pppd
   systemctl stop openl2tpd.service
fi

Чтобы выполнить какие-либо задачи после поднятия ppp, их необходимо прописать в «/etc/ppp/ip-up.local», например:

#!/bin/bash
/sbin/route del default
/sbin/route add default dev ppp0

Файлы ifup-local, ifdown-pre-local и ip-up.local должны быть помечены, как исполняемые.

Использование rsync без транспорта

Используется для синхронизации файлов в локальной сети без шифрации трафика.

На сервере необходимо запустить rsync в режиме демона, для этого нужно создать файл конфигурации «rsyncd.conf» в «/etc/» примерно следующего содержания:

uid = 0
gid = 0
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
list = yes

[storage]
path = /mnt/storage/
read only = false
transfer logging = yes

Используемые параметры:

uid = 0, gid = 0 - на сервере rsync работает с правами root
pid file - расположение pid файла
log file - расположение файла журнала
list = yes - позволить просматривать доступные ресурсы для rsync

[storage] - название ресурса
path - путь к ресурсу
read only = false - позволить запись
transfer logging = yes - записывать в журнал

На сервере запускаем:

rsync --daemon

Для синхронизации данных с сервера на клиентскую машину на клиенте запускаем:

rsync -axvH server::storage /mnt/local-backup/

server - адрес сервера с запущенным rsync в режиме демона
storage - название ресурса
/mnt/local-backup/ - папка, куда производится копирование

По умолчанию rsync использует порт 873/tcp. На сервере должен быть открыт для входящих подключений.

Подключение посредством протокола l2tp в сети StarNet г. Волжского. (Вариант с xl2tp)

17 августа 2010г. Fedora 13.

Из личного опыта рекомендую подключаться с помощью openl2tp. Меньше нагружает систему, держит более высокую скорость.

Устанавливаем пакет «xl2tpd» из реп.

Редактируем файл «/etc/xl2tpd/xl2tpd.conf»:

[global]
access control = yes
[lac starnet]                            ;сюда имя хоста или адрес сервера
lns = l2tp.starnet                       ;сюда вписывать айпи адрес или доменное имя сервера
redial = yes                             ;перезванивать при разрывах
redial timeout = 10                      ;сколько секунд ждать
require chap = yes                       ;включена авторизация CHAP
require authentication = no              ;авторизация типа хост <-> хост
name = family_ns                         ;имя пользователя
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
require pap = no
autodial = yes                           ;соединять автоматически

Редактируем файл «/etc/ppp/options.xl2tpd»:

name family_ns
remotename l2tp
ipparam starnet
connect /bin/true
nodeflate
nobsdcomp
persist
maxfail 0
nopcomp
noaccomp
defaultroute

Редактируем файл «/etc/ppp/chap-secrets»:

family_ns * password

Параметры:
family_ns - логин
password - пароль

Запускаем:

service xl2tpd start

Мультикаст (IPTV) в сети PowerNet г. Волжского.

19 Августа 2023г. Fedora 38.

Задача 1: Просмотр IPTV.

В правилах iptables в цепочке filter:

-A INPUT -p igmp -d 224.0.0.0/4 -j ACCEPT
-A INPUT -p udp -m addrtype -d 224.0.0.0/4 -j ACCEPT  --dst-type MULTICAST 

Задача 2: Проброс мультикаст трафика в другую сеть.

Для начала необходимо проделать действия, указанные в Задаче 1.
«Другая» сеть подключена через eth1.

Разрешение маршрутизации:

В файле «/etc/sysctl.conf»

net.ipv4.ip_forward = 1

Применить:

sysctl -p

Добавить правило iptables в цепочке filter:

-A FORWARD -j ACCEPT

Установка и запуск igmpproxy:

Скачать https://github.com/pali/igmpproxy
Бинарник версии 0.4 скомпилированный на Fedora 38: igmpproxy-0.4
Бинарник версии 0.1 скомпилированный на Fedora 38: igmpproxy-0.1

Распаковать, скомпилировать.
Поместить бинарник igmpproxy в «/usr/sbin/», файл конфигурации - в «/etc/igmpproxy.conf»
В файле конфигурации:

quickleave

# Интерфейс провайдера
phyint eth0 upstream ratelimit 0  threshold 1
altnet 10.0.0.0/8
altnet 172.16.0.0/12

# Интерфес локалки
phyint eth1 downstream ratelimit 0 threshold 1

Запуск:

/usr/sbin/igmpproxy /etc/igmpproxy.conf

Или создать службу /etc/systemd/system/igmpproxy.service:

[Unit]
Description=IGMP Proxy Service
DefaultDependencies=no
Wants=network-online.target
After=network-online.target

[Service]
Restart=always
TimeoutStopSec=5
ExecStart=/sbin/igmpproxy -n -d /etc/igmpproxy.conf

Type=simple
StandardOutput=append:/var/log/igmpproxy.log
StandardError=append:/var/log/igmpproxy-error.log

[Install]
WantedBy=default.target

Ключ -n не позволяет запускать, как демон (иначе, служба завершается с ошибкой «Failed with result 'start-limit-hit'»).
Ключ -d перенаправляет все сообщения в консоль (а по факту, в указанные файлы журналов) вместо системного журнала.

Запуск vnc сервера

16 декабря 2009г. Fedora 12.

Действия на подчинённой рабочей станции/сервере:
Устанавливаем vnc-server

yum install vnc-server

Входим пользователем для которого делается доступ (пользователь создан ранее) и задаём пароль для доступа к vnc серверу

vncpasswd

Редактируем \«/etc/sysconfig/vncservers\»

VNCSERVERS="2:vncuser"
VNCSERVERARGS[2]="-geometry 1024x768"

Цифра \«2\» указывает порядковый номер пользователя и порт, который прослушивает vnc сервер для пользователя \«vncuser\» (5902)
Если необходимо предоставить доступ к vnc серверу нескольким пользователям, vncservers выглядит примерно так:

VNCSERVERS="2:vncuser 3:vncotheruser"
VNCSERVERARGS[2]="-geometry 1024x768"
VNCSERVERARGS[3]="-geometry 1280x1024"

Запускаем vnc сервер

service vncserver start

Так-же необходимо разрешить входящие подключения в для используемых портов.
Проверяем наличие файла \«~/.vnc/xstartup\». В случае его отсутствия - создаём с таким содержимым:

unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

Проблемы: При подаче команды завершения сеанса из DE vnc сервер не завершает сеанс полностью и при последующем соединении пользователь видит чёрный экран с курсором мыши. Для восстановления работоспособности необходимо войти через ssh и перезапустить vnc сервер \«service vncserver restart\» или не завершать сеанс из DE, а просто отключаться.

Для корректной работы буфера обмена между клиентом и сервером, на клиенте должен быть запущен vncconfig:

Подключение посредством pptp к сети StarNet г. Волжского.

7 сентябра 2009г. Fedora 11.

Цель: Поднимать ppp соединение сразу после подъёма eth, чтобы у других служб (httpd) была возможность нормально запуститься.
NetworkManager не используется. Необходимые пакеты: pptp, ppp.
Для нижеуказанных действий необходимы права root-а.

1. Интерфейс eth0 настраиваем в system-config-network:
Включить:

  • Активировать устройство при запуске компьютера
  • Автоматически получать адрес IP при помощи dhcp
  • Автоматически получать информацию DNS от провайдера
  • Добавить маршрут: Сеть назначения - 10.0.0.0, Маска подсети - 255.0.0.0, Шлюз - 10.1.104.1

Сохранить и включить интерфейс.

Проверить командами ifconfig и route:

#ifconfig
eth0    Link encap:Ethernet  HWaddr 00:1A:4D:51:D8:1D
        inet addr:10.1.104.222  Bcast:10.1.104.255  Mask:255.255.255.0
        inet6 addr: fe80::21a:4dff:fe51:d81d/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:411842 errors:0 dropped:0 overruns:0 frame:0
        TX packets:551290 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:237257905 (226.2 MiB)  TX bytes:394473380 (376.1 MiB)
        Interrupt:18 Base address:0x2000
#route:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
Starnet-Gateway 10.1.104.1      255.255.255.255 UGH   0      0        0 eth0
10.1.104.0      *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
10.0.0.0        10.1.104.1      255.0.0.0       UG    0      0        0 eth0
default         10.1.104.1      0.0.0.0         UG    0      0        0 eth0

Проверяем доступ к локальной сети, например к www.ahtuba.com

2. Создаём ppp подключение:

Создаём файл туннеля pptp ("/etc/ppp/peers/starnet"):

pty "pptp vpn.starnet --nolaunchpppd --loglevel 0 --nobuffer"
user family_nn
password "password"
nodeflate
nobsdcomp
noauth
nomppe
lock
refuse-eap

Где \«family_nn\» и \«password\» имя пользователя и пароль подключения, \«vpn.starnet\» - адрес сервера VPN.

Проверяем подключение:

#route del default
#pppd call starnet debug nodetach

using channel 4
Using interface ppp0
Connect: ppp0 <--> /dev/pts/2
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x3584e1c1> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <auth chap MS-v2> <magic 0x4020e09b>]
sent [LCP ConfAck id=0x1 <auth chap MS-v2> <magic 0x4020e09b>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x3584e1c1> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x3584e1c1> <pcomp> <accomp>]
rcvd [CHAP Challenge id=0x1 <6bd7921e57986ee4216d61f86b83c524>, name = "gw"]
sent [CHAP Response id=0x1 <efdda57b4aa2f67... ...43d4d1bb12d7b800>, name = "family_nn"]
rcvd [CHAP Success id=0x1 "S=185A9704DF8E43B51D15E990A4029FA01CAC7D72"]
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0>]
rcvd [IPCP ConfReq id=0x1 <addr 172.21.1.1>]
sent [IPCP ConfAck id=0x1 <addr 172.21.1.1>]
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x2 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x2 <addr 94.147.123.211>]
sent [IPCP ConfReq id=0x3 <addr 94.147.123.211>]
rcvd [IPCP ConfAck id=0x3 <addr 94.147.123.211>]
local  IP address 94.147.123.211
remote IP address 172.21.1.1
Script /etc/ppp/ip-up started (pid 11650)
Script /etc/ppp/ip-up finished (pid 11650), status = 0x0

С другой консоли даём команду:

#route add default dev ppp0

Проверяем наличие доступа к интернету…

Для закрытия ppp соединения:

#killall -TERM pptpcm

Для автоматического изменения шлюза по умолчанию добавляем в файле \«/etc/ppp/ip-up\» (в конце, перед строчкой с \«exit 0\»):

route del default
route add default dev ppp0

И в файле \«/etc/ppp/ip-down\» (в конце, перед строчкой с \«exit 0\»):

route add default gw 10.1.104.1

2. Автоматизация при включении/отключении eth:
В файле \«/etc/sysconfig/network-scripts/ifup-post\» перед \«exit 0\», пишем команду включения ppp:

sleep 1
pppd call starnet nodetach &

В файле \«/etc/sysconfig/network-scripts/ifdown-eth\» после строки \«check_device_down ${DEVICE} && [ «$BOOTPROTO»…\», пишем команду отключения ppp:

killall -TERM pptpcm

Последнее необязательно, т.к. ppp упадёт при отключении eth.

Проверяем:

#service network stop
#service network start

Как заставить DHCP клиента получать статические маршруты.

21 апреля 2010г. - Изменено для Fedora 12. Проверено у провайдера Волжский StarNet

Необходимо прописать в файле /etc/dhclient-eth0.conf (или создать таковой).

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
#
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes;

Это заставляет DHCP клиента получать информацию о статических маршрутах.

Далее, создать файл /etc/dhcp/dhclient-exit-hooks и сделать его исполняемым:

if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then
  rfc_routes=($new_rfc3442_classless_static_routes)
  for(( i=0; i < ${#rfc_routes[@]}; )); do
    net_length=${rfc_routes[$i]}
    ((i++))
    net_address=(0 0 0 0)
    for(( j=0; j < $[$net_length / 8 + ($net_length % 8 ? 1 : 0)]; j++, i++)); do
      net_address[$j]=${rfc_routes[$i]}
      done
    gateway=(0 0 0 0)
    for (( j=0; j < 4; j++, i++ )); do
      gateway[$j]=${rfc_routes[$i]}
      done
    old_IFS="$IFS"
    IFS='.'
    if [ x"$net_length" == x"32" ]; then
      /sbin/route add -host "${net_address[*]}" gw "${gateway[*]}"
      logger "dhclient-exit-hooks: GateWay ${gateway[*]} for host ${net_address[*]}"
    else
      /sbin/route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
      logger "dhclient-exit-hooks: GateWay ${gateway[*]} for network ${net_address[*]}"
    fi
    IFS="$old_IFS"
    done
fi

Этот скрипт добавит статические маршруты.

Включение/отключение питания удалённого компьютера.

Цель: управление питанием удалённого компьютера по сети.
Включение питания не зависит от ОС подчинённого компьютера.
Подчинённый компьютер должен иметь возможность включаться посредством подачи на сетевую карту Magic пакета (в BIOS включить опцию \«Wake On Lan\»; в Windows - в настройках драйвера сетевой карты, в Linux - команда

ethtool -s eth0 wol g

Для включения питания выполнить на управляющем компьютере

wol 10:24:87:33:48:16

или

ether-wake -i eth0 10:24:87:33:48:16

eth0 - интерфейс управляющей машины через который будет послан Magic пакет.
10:24:87:33:48:16 - MAC адрес подчинённой машины.
(Об ether-wake взято здесь)

Отключение питания (для Windows)

net rpc shutdown /p /d P:01:01 /f -I 192.168.21.11 -U UserName%Password

UserName должен иметь права на выключение компьютера с Windows.

Подключение SIP телефона Gigaset C530A IP в сети POWERNET

Состояние до подключения.

Провайдером выделяется пользователю несколько приватных IP адресов в сети 10.xxx.xxx.xxx. Адреса раздаются по DHCP с возможностью привязки к MAC адресам устройств. Пользователь может использовать эти адреса подключая свои устройства через простой свич без использования маршрутизатора. Приватные IP адреса провайдер, прозрачно для пользователя, преобразует в реальные. В определённый момент времени, IP адрес приватной сети соответствует выделенному реальному IP адресу.

Несмотря на возможность подключения нескольких устройств без маршрутизатора, есть явный недостаток - все устройства пользователя оказываются в публичной сети и подвергаются опасности. Поэтому в квартире всё-таки используется маршрутизатор/брандмауэр - компьютер с двумя сетевыми картами с установленым Scientific Linux 6.5.

От провайдера маршрутизатор получает адрес 10.xxx.xxx.xxx по DHCP. Для «квартирных» устройств сам раздаёт адреса по DHCP в сети 192.168.xxx.xxx.

SIP телефон имеет адрес из сети 192.168.xxx.xxx. Подключен к SIPNET.RU и работает без проблем.

Правила IPTABLES на маршрутизаторе («/etc/sysconfig/iptables»):

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SIP
-A INPUT -p tcp --dport 60000:60099 -j ACCEPT
-A INPUT -p udp --dport 60000:60999 -j ACCEPT
-A INPUT -p udp --dport 16384:16482 -j ACCEPT
-A INPUT -p udp --dport 5060 -j ACCEPT
-A INPUT -p tcp --dport 5060 -j ACCEPT

*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]

-A POSTROUTING -m iprange --src-range 192.168.xxx.aaa-192.168.xxx.bbb -o eth1 -j MASQUERADE

eth0 - Имеет IP 192.168.aaa.bbb, квартирная сеть. Он-же адрес шлюза для «квартирных» устройств.
eth1 - Имеет IP из 10.xxx.xxx.xxx, сеть провайдера.
Строка «-A INPUT -p udp –dport 16384:16482 -j ACCEPT» была добавлена в процессе подключения аккаунта SIP от POWERNET (сначала не помогла, но, на всякий случай оставлена).

Маршрут по умолчанию на маршрутизаторе установлен на шлюз провайдера («route -n»):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.xxx.yyy.zzz  0.0.0.0         UG    0      0        0 eth1

Модуль ядра «ip_nat_sip» не используется.

Подключение SIP аккаунта POWERNET и возникшие проблемы.

Провайдером была предоставлена подробнейшая документация по подключению телефона данной модели к их сети. Никаких специфичных настроек не предусматривается. Предоставлено имя пользователя, номер телефона, пароль и адрес сервера регистрации в сети 10.xxx.xxx.xxx. Регистрация на сервере провайдера прошла успешно. Никаких сообщений об ошибках нет.

При звонке с SIP телефона, на его экране выводится сообщение «Статус ошибки 503». Соединения не происходит. При звонке на SIP телефон (на его городской номер) с мобильного телефона, сообщается, что абонент недоступен.

Судя по ошибке 503, сервер отказывает в соединении. Попытки проброса портов SIP сигнализации и медиа ничего не дали. В конце концов телефон был подключен напрямую к сети провайдера. Получив IP адрес вида 10.xxx.xxx.xxx телефон зарегистрировался, звонки и голос стали проходить в обе стороны.

Решение.

Возникло подозрение, что провайдер установил запрет (или разрешение), допускающий звонки только с SIP устройств, имеющих адрес провайдера или один из адресов, зарегистрированных за конкретным абонентом.

При анализе трафика tcpdump-ом, было обнаружено, что при попытке звонка, на SIP сервер уходят сообщения, содержащие IP адрес телефона из сети 192.168.xxx.xxx.

Рассматривалось несколько вариантов решения: от установки дополнительного свича на вводе от провайдера до установки своего SIP сервера на маршрутизаторе на котором уже маршрутизировать SIP звонки. Как наипростейшие варианты: подгрузка модуля ядра «ip_nat_sip» (которая ничего не дала) и присвоение телефону IP адреса провайдера из сети 10.xxx.xxx.xxx при физическом подключении за маршрутизатором (как и было раньше) среди устройств с адресами 192.168.xxx.xxx посредством «proxy arp».

Информация о том, как использовать устройство с IP адресом не принадлежавшим конкретной сети найдено здесь.

  • В «Личном кабинете» провайдера были зарезервированы два IP адреса из сети 10.xxx.xxx.xxx (такая услуга предоставляется бесплатно). Один предназначен для маршрутизатора. Привязан к MAC адресу маршрутизатора. Маршрутизатор получает адрес от провайдера по DHCP (как и раньше). Используется для обычного интернет трафика. Второй зарезервирован для телефона, фактически, является заглушкой «чтоб не отключили» (далее - 10.aaa.bbb.ccc).
  • Для включения «proxy arp» и установки маршрута, на маршрутизаторе, в файл «/sbin/ifup-local» записано следующее:

if [ «$1» == «eth1» ]; then

echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
ip r a 10.aaa.bbb.ccc dev eth0
fi

eth1 - провайдер, eth0 - квартирная сеть, 10.aaa.bbb.ccc - адрес сети провайдера, зарезервированый для телефона.

  • Для отключения маршрута при отключении eth1, на маршрутизаторе, в файл «/sbin/ifdown-pre-local» записано следующее (возможно, это лишнее):

if [ «$1» == «eth1» ]; then

ip r d 10.aaa.bbb.ccc dev eth0
fi

Теперь после «поднятия» интефейса eth1 (провайдер), имеем дополнительный маршрут («route -n»):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.aaa.bbb.ccc  0.0.0.0         255.255.255.255 UH    0      0        0 eth0
  • Устанавлимаем «провайдерский» IP адрес на телефоне, который физически подключен в локальной сети:
Тип IP-адреса:             Статический
IP-адрес:                  10.aaa.bbb.ccc
Маска подсети:             255.255.255.0
Стандартный шлюз:          192.168.aaa.bbb (адрес маршрутизатора в "квартирной" сети, шлюз, который используют остальные устройства в квартире)
Предпочитаемый DNS-сервер  10.fff.ggg.hhh  (DNS1 провайдера)
Альтернативный DNS-сервер  10.fff.ggg.iii  (DNS2 провайдера)

Что в итоге.

  1. Не надо приобретать дополнительный свич, переносить базу телефона, добавлять ещё кучу проводов.
  2. База телефона осталась на своём месте, никакие переподключения не производились.
  3. На телефоне IP адрес провайдера, в SIP пакетах нет адреса «квартирной» сети.
  4. «Городской телефон» от POWERNET работает.
  5. SIPNET.RU работает, как и раньше.
  6. Доступ к WEB интерфейсу телефона работает из «квартирной» сети.

VSFTPD

Добавить пользователя VSFTPD

useradd -n user1 -d /mnt/disk/ftp/user1 -s /sbin/nologin
passwd user1

user1 - Имя добавляемого пользователя.
/mnt/disk/ftp/user1 - папка пользователя на FTP сервере.

Включить протокол FTPS в VSFTPD

Создание самоподписанного сертификата на 10 лет:

openssl req -x509 -nodes -days 3650 -newkey rsa -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem -subj "/C=DE/ST=Berlin/L=Berlin/O=Secret Service/OU=IT Department/CN=secret.domain/CN=sysadmin@secret.domain"

В «/etc/vsftpd/vsftpd.conf» добавляем:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
implicit_ssl=YES
listen_port=990

В клиентах установить «Требовать FTP через TLS (неявный)» или «Require Implicit FTP over TLS» или «SSL/TLS Implicit encryption» для протокола FTP (или FTPS), порт - 990.

Возможные проблемы

Виртуальные пользователи

yum -y install compat-db

В /etc/vsftpd/vsftpd.conf:

guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/mnt/storage/ftp/$USER

Сохраняем оригинальный /etc/pam.d/vsftpd:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.orig

А в новый /etc/pam.d/vsftpd:

auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
session required pam_loginuid.so

В /etc/vsftpd/virtual_users прописываем пользователей и пароли:

user1
passwd1
user2
passwd2

Создаём базу пользователей и паролей:

db_load -T -t hash -f /etc/vsftpd/virtual_users /etc/vsftpd/virtual_users.db

Устанавливаем владнльца на папки пользователей:

chown -R ftp. /mnt/storage/ftp

Пример рабочего vsftpd.conf

Наверх