Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
fedora:020-network [01.09.2023 21:13] (текущий) – [LIBVIRTD без IPTABLES. Fedora 38] Oleg Kochkin
Строка 1: Строка 1:
 +====== Сеть ======
  
 +===== Оключить влияние 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 (адрес подсети зависит о настроек):
 +<code>
 +-A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
 +</code>
 +В таблице filter:
 +<code>
 +-A INPUT -i virbr0 -j ACCEPT
 +-A FORWARD -i virbr0 -j ACCEPT
 +-A FORWARD -o virbr0 -j ACCEPT
 +</code>
 +
 +===== DOCKER без IPTABLES. Fedora 38 =====
 +Причина: неподконтрольные действия podman в отношении правил iptables.\\
 +Цель: установить [[https://hub.docker.com/r/rusanter/acestream-proxy|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:
 +<code>
 +-A POSTROUTING -s 172.17.0.0/24 -j MASQUERADE
 +</code>
 +В таблице filter:
 +<code>
 +-A INPUT -i docker0 -j ACCEPT
 +-A FORWARD -i docker0 -j ACCEPT
 +-A FORWARD -o docker0 -j ACCEPT
 +</code>
 +
 +  * В процессе запуска была проблема: не отрабатывали 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
 +
 +[[https://www.liquidweb.com/kb/how-to-setup-lets-encrypt-on-centos-7/|Отсюда]] и [[https://www.reddit.com/r/linuxadmin/comments/adlhm0/centos_certbot_automated_renewal_questionhelp/|отсюда]].
 +
 +Просмотр сертификатов:
 +  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:
 +<code>
 +*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
 +</code>
 +Получить значения можно командами:
 +
 +  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 канала, плейлиста.
 +
 +[[http://rg3.github.com/youtube-dl/documentation.html|Документация на 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
 +
 +//Подсмотрено [[http://rus-linux.net/MyLDP/sec/reverse-SSH-tunnel.html|здесь]]//.
 +
 +===== Проброс удалённого порта на локальный через 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.
 +
 +//Подсмотрено [[https://serverfault.com/questions/214816/remote-desktop-over-ssh-socks-proxy-to-bypass-firewall|здесь]]//.
 +
 +Вариант проброса нескольких портов в фоне:
 +  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 - не проверять ключи.
 +
 +//Подсмотрено [[https://www.shellhacks.com/ru/disable-ssh-host-key-checking/|здесь]]//.
 +
 +===== Именование сетевых интерфейсов в "привычном виде" =====
 +В Fedora 15/16 сетевые интерфейсы именуются примерно так - "p2p1".\\
 +Для именования интерфейсов в виде "ethX" необходимо:\\
 +  - Удалить пакет biosdevname (yum remove biosdevname).
 +  - Удалить файл /etc/udev/rules.d/70-persistent-net.rules.
 +  - Перегрузиться.
 +  - Создать интерфейсы с "привычным" именем.
 +
 +==== В CentOS 7,8 ====
 +  - Удалить пакет "biosdevname"
 +  - Добавить в параметры GRUB "biosdevname=0 net.ifnames=0"
 +  - Перегрузиться
 +
 +===== Использование нестандартного порта 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 сервер. О настройке читать **//[[fedora:020007|здесь]]//**.
 +
 +Для создания файла туннеля использовать 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
 +
 +  - Выяснить к какому порту подключен модем, в моём случае, на /dev/ttyUSB3.
 +  - В консоли от root-а выполнить команду:
 +
 +  # echo -e "AT+ZCDRUN=Ern" > /dev/ttyUSB3
 +
 +Данная команда была послана один раз, модем нормально работает и после физического отключения.\\
 +Модем может нормально работать при отсутствии виндового ПО, нормально настраивается в NetworkManager.
 +
 +Найдено [[http://startubuntu.ru/?p=5641|здесь]].
 +
 +Данная команда отключает доступ к диску модема, поэтому становятся недоступны ПО и драйверы, расположенные на нём.\\
 +ПО и драйверы для Windows можно скачать [[http://homenet.beeline.ru/index.php?showtopic=292439|с форума Билайн]].
 +
 +-----
 +
 +P.S. Если есть необходимость вернуть всё назад (сам не проверял):
 +  # echo -e "AT+ZCDRUN=Frn" > /dev/ttyUSB3
 +
 +Найдено [[http://linuxfree.my1.ru/forum/6-4-1#7|здесь]].
 +
 +===== Устранение задержки при подключении к 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.//
 +
 +**Из личного опыта рекомендую подключаться с помощью [[020001|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:
 +<code>
 +-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 
 +</code>
 +
 +==== Задача 2: Проброс мультикаст трафика в другую сеть. ====
 +Для начала необходимо проделать действия, указанные в Задаче 1.\\
 +"Другая" сеть подключена через eth1.
 +
 +=== Разрешение маршрутизации: ===
 +В файле "/etc/sysctl.conf"
 +  net.ipv4.ip_forward = 1
 +Применить:
 +  sysctl -p
 +Добавить правило iptables в цепочке filter:
 +<code>
 +-A FORWARD -j ACCEPT
 +</code>
 +
 +=== Установка и запуск igmpproxy: ===
 +
 +Скачать [[https://github.com/pali/igmpproxy]]\\
 +Бинарник версии 0.4 скомпилированный на Fedora 38: {{ :fedora:igmpproxy-0.4 |}}\\
 +Бинарник версии 0.1 скомпилированный на Fedora 38: {{ :fedora: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:\\
 +{{:fedora:vncconfig.png|}}
 +
 +===== Подключение посредством 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
 +
 +Сохранить и включить интерфейс.\\
 +<html><details><summary>Проверить командами ifconfig и route:</summary></html>
 +
 +  #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 eth0
 + 10.1.104.0      *               255.255.255.0            0        0 eth0
 + link-local      *               255.255.0.0         1002          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
 +<html></details></html>
 +Проверяем доступ к локальной сети, например к www.ahtuba.com...
 +
 +**2.** Создаём ppp подключение:\\
 +<html><details><summary>Создаём файл туннеля pptp ("/etc/ppp/peers/starnet"):</summary></html>
 +  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.
 +<html></details></html>
 +<html><details><summary>Проверяем подключение:</summary></html>
 +  #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
 +<html></details></html>
 +С другой консоли даём команду:
 +  #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. Проверено у провайдера [[http://www.ahtuba.com/|Волжский 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 взято [[http://forum.russianfedora.ru/viewtopic.php?f=20&t=4948#p32150|здесь]])
 +
 +==== Отключение питания (для 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 =====
 +
 +[[http://powernet.com.ru/telefon.php|Услуга "Городской телефон" от POWERNET, г. Волжский]]
 +
 +==== Состояние до подключения. ====
 +Провайдером выделяется пользователю несколько приватных IP адресов в сети 10.xxx.xxx.xxx. Адреса раздаются по DHCP с возможностью привязки к MAC адресам устройств.
 + Пользователь может использовать эти адреса подключая свои устройства через простой свич без использования маршрутизатора. 
 +Приватные IP адреса провайдер, прозрачно для пользователя, преобразует в реальные. В определённый момент времени, IP адрес приватной сети соответствует выделенному реальному IP адресу.
 +
 +Несмотря на возможность подключения нескольких устройств без маршрутизатора, есть явный недостаток - все устройства пользователя оказываются в публичной сети и подвергаются опасности. Поэтому в квартире всё-таки используется маршрутизатор/брандмауэр - компьютер с двумя сетевыми картами с установленым [[https://www.scientificlinux.org/|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 адресом не принадлежавшим конкретной сети найдено [[http://unixforum.org/index.php?s=a4a08a47d042775f8f698e6d32c631d8&showtopic=118633&view=findpost&p=1107123|здесь]].
 +
 +  * В "Личном кабинете" провайдера были зарезервированы два 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 провайдера)
 +
 +==== Что в итоге. ====
 +
 +  - Не надо приобретать дополнительный свич, переносить базу телефона, добавлять ещё кучу проводов.
 +  - База телефона осталась на своём месте, никакие переподключения не производились.
 +  - На телефоне IP адрес провайдера, в SIP пакетах нет адреса "квартирной" сети.
 +  - "Городской телефон" от POWERNET работает.
 +  - SIPNET.RU работает, как и раньше.
 +  - Доступ к 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.
 +
 +[[https://www.dmosk.ru/instruktions.php?object=vsftpd-centos#errors|Возможные проблемы]]
 +
 +==== Виртуальные пользователи ====
 +
 +  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
 +
 +{{:fedora:vsftpd.conf|Пример рабочего vsftpd.conf}}
Наверх