<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Заметки Александра Чернышева: заметки с тегом centos</title>
<link>https://aschernyshev.ru/tags/centos/</link>
<description>Keep in mind</description>
<author>Александр Чернышев</author>
<language>ru</language>
<generator>E2 (v3576; Aegea)</generator>

<itunes:owner>
<itunes:name>Александр Чернышев</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Keep in mind</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>OpenVPN 2.5 MD5 support</title>
<guid isPermaLink="false">87</guid>
<link>https://aschernyshev.ru/all/openvpn-2-5-md5-support/</link>
<pubDate>Thu, 07 Apr 2022 17:49:45 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/openvpn-2-5-md5-support/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl edit openvpn-client@&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Service]
Environment=&amp;quot;OPENSSL_ENABLE_MD5_VERIFY=1 NSS_HASH_ALG_SUPPORT=+MD5&amp;quot;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>MTProto Proxy на CentOS7</title>
<guid isPermaLink="false">74</guid>
<link>https://aschernyshev.ru/all/mtproto-proxy-na-centos7/</link>
<pubDate>Tue, 10 Jul 2018 19:38:59 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/mtproto-proxy-na-centos7/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://aschernyshev.ru/pictures/mtproxy.png" width="234" height="234" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Решил попробовать использовать вместо &lt;a href="https://aschernyshev.ru/all/nastroyka-socks5-proksi-na-centos7/"&gt;&lt;b&gt;3proxy&lt;/b&gt;&lt;/a&gt; вышедшей не так давно &lt;a href="https://github.com/TelegramMessenger/MTProxy"&gt;&lt;b&gt;MTProto Proxy&lt;/b&gt;&lt;/a&gt;, собрал &lt;a href="https://cloud.mail.ru/public/cTC6/3Dv569TxC"&gt;пакет для 7 CentOS&lt;/a&gt;. Из зависимостей требует zlib, openssl и curl. В процессе установки автоматически генерируется секретный ключ авторизации, загружаются список серверов и ключ для доступа.&lt;br /&gt;
Установка сводится к следующим действиям&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;yum localinstall mtproto-proxy-20824f5-1.el7.x86_64.rpm
systemctl enable mtproto-proxy
systemctl start mtproto-proxy
firewall-cmd --permanent --zone=external --add-service=mtproto-proxy&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;По умолчанию сервер запускается на порту &lt;b&gt;8443&lt;/b&gt;. Если это необходимо изменить, то основные настройки вынесены в /etc/sysconfig/mtproto-proxy. Так же придется отредактировать и /etc/firewalld/services/mtproto-proxy.xml.&lt;/p&gt;
&lt;p&gt;Теперь для подключения, в приложении, необходимо перейти по ссылке.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;https://t.me/proxy?server=&amp;lt;SERVER_IP&amp;gt;&amp;amp;port=&amp;lt;PORT&amp;gt;&amp;amp;secret=&amp;lt;SECRET_KEY&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;где:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;SERVER_IP - ip адрес сервера mtproto-proxy
PORT - порт на котором запущен mtproto-proxy
SECRET_KEY - секретный ключ, который был создан в процессе установки&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для страждущих паранойей &lt;b&gt;src.rpm&lt;/b&gt; пакет, для самостоятельной сборки, можно скачать &lt;a href="https://cloud.mail.ru/public/K7bc/dgrrtHejy"&gt;&lt;b&gt;здесь&lt;/b&gt;&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>Настройка SOCKS5 прокси на CentOS7</title>
<guid isPermaLink="false">73</guid>
<link>https://aschernyshev.ru/all/nastroyka-socks5-proksi-na-centos7/</link>
<pubDate>Fri, 20 Apr 2018 21:45:37 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/nastroyka-socks5-proksi-na-centos7/</comments>
<description>
&lt;p&gt;В свете последних событий, понадобился &lt;b&gt;SOCKS5&lt;/b&gt; прокси с авторизацией.&lt;br /&gt;
Поискав в интернете остановил свой выбор на &lt;b&gt;&lt;a href="https://github.com/z3APA3A/3proxy"&gt;3proxy&lt;/a&gt;&lt;/b&gt; от &lt;b&gt;z3APA3A&lt;/b&gt;, как наиболее легковесном, функциональном и активно развивающемся, последний релиз которого состоялся &lt;b&gt;&lt;a href="https://github.com/z3APA3A/3proxy/releases"&gt;18.04.2018&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
К сожалению актуальной версии пакета в репозиториях CentOS не нашлось, поэтому пришлось переписать spec-файл для текущей версии 0.8.12.&lt;/p&gt;
&lt;p&gt;Для начала необходимо скачать &lt;a href="https://cloud.mail.ru/public/C9Vu/N9NiXPmdZ"&gt;3proxy&lt;/a&gt;, после чего можно приступать к его установки.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;yum localinstall 3proxy-0.8.12-1.el7.centos.x86_64.rpm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Так как меня интересует именно SOCKS-прокси, то конфигурационный файл будет иметь следующий вид. Если нужен дополнительный функционал, то можно почитать 3proxy.cfg.example или &lt;a href="https://github.com/z3APA3A/3proxy/wiki/How-To-(%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)"&gt;wiki&lt;/a&gt; проекта на github.com&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /etc/3proxy/3proxy.cfg&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;daemon
setgid 99
setuid 99

nscache 65536
nserver 127.0.0.1

timeouts 1 5 30 60 180 1800 15 60

external 0.0.0.0
internal 0.0.0.0

config /etc/3proxy/3proxy.cfg
monitor /etc/3proxy/3proxy.cfg
monitor /etc/3proxy/counters
monitor /etc/3proxy/passwd
monitor /etc/3proxy/bandlimiters

log /var/log/3proxy/3proxy.log
logformat &amp;quot;L%o %d %H:%M:%S      %U | %C | %R:%r | %O | %I | %n&amp;quot;
archiver gz /bin/gzip %F
rotate 7

users $/etc/3proxy/passwd

include /etc/3proxy/counters
include /etc/3proxy/bandlimiters

auth strong
flush
socks -p81080&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь добавляем пользователей, для этого выполним скрипт &lt;b&gt;add3proxyuser.sh&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/etc/3proxy/add3proxyuser.sh username password day_limit bandwidth&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;i&gt;где:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;username&lt;/b&gt; — имя пользователя&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;password&lt;/b&gt; — пароль&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;day_limit&lt;/b&gt; — лимит трафика в Мегабайтах в день&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;bandwidth&lt;/b&gt; — полоса пропускания в битах в секунду&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Для примера заведем пользователя с логином и паролем admin, лимитом трафика в 100 Мегабайт в день и полосой пропускания в 1 Мегабит.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/etc/3proxy/add3proxyuser.sh admin admin 100 1048576&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь в файле, &lt;b&gt;/etc/3proxy/passwd&lt;/b&gt;, появилась запись с логином и MD5-хешем пароля&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;admin:CR:$1$10216$EvIj9vLnQi/zydUXJXYa60&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Активируем и запускаем сервис&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl enable 3proxy
systemctl start 3proxy&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавляем правило в Firewall разрешающее внешнее подключение к прокси&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;firewall-cmd --permanent --zone=external --add-port=81080/tcp&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь можно применять настройки прокси перейдя по ссылке следующего содержания:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;https://t.me/socks?server=my.server.org&amp;amp;port=81080&amp;amp;user=admin&amp;amp;pass=admin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для страждущих паранойей src.rpm пакет, для самостоятельной сборки, можно скачать &lt;b&gt;&lt;a href="https://cloud.mail.ru/public/3dnc/j1RFzsyxJ"&gt;здесь&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>HTTP/2.0 в Nginx на CentOS 7</title>
<guid isPermaLink="true">https://aschernyshev.ru/all/http-2-0-v-nginx-na-centos-7/</guid>
<link>https://aschernyshev.ru/all/http-2-0-v-nginx-na-centos-7/</link>
<pubDate>Wed, 12 Jul 2017 12:03:18 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/http-2-0-v-nginx-na-centos-7/</comments>
<description>
&lt;p&gt;&lt;b&gt;UPD&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Вышло обновление openssl-1.0.2k и даное руководство больше не актуально.&lt;/b&gt;&lt;br /&gt;
_____________________________________________________________________&lt;/p&gt;
&lt;p&gt;Решил включить HTTP/2.0 в Nginx. В процессе тестирование, при прохождении &lt;a href="https://tools.keycdn.com/http2-test"&gt;теста&lt;/a&gt;  выяснилось, что не активно &lt;a href="https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation"&gt;ALPN&lt;/a&gt; (Application-Layer Protocol Negotiation).&lt;/p&gt;
&lt;p&gt;Для полноценной работы HTTP/2.0, Nginx должен быть собран с &lt;a href="http://xgu.ru/wiki/OpenSSL"&gt;OpenSSL&lt;/a&gt; версии не ниже чем 1.0.2. В репах CentOS есть только OpenSSL версии 1.0.1.&lt;br /&gt;
Решить эту проблему можно двумя способами: собрать Nginx с флагом &lt;a href="https://victor.4devs.io/ru/architecture/nginx-http2-does-not-work.html"&gt;—with-openssl&lt;/a&gt; или собрать OpenSSL 1.0.2 для CentOS.&lt;br /&gt;
Первый вариант у меня не взлетел, сборка пакета завершалась неудачно, поэтому я остановился на втором варианте.&lt;br /&gt;
В интернет нашел &lt;a href="http://ja.528p.com/linux/centos6/XE001-openssl.html"&gt;сайт&lt;/a&gt;, где автор предлагает пачтить сорцы OpenSSL, но недавно в CentOS прилетело обновление glibc-2.17.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;rpm -qa | grep glibc
glibc-common-2.17-157.el7_3.4.x86_64
glibc-2.17-157.el7_3.4.x86_64
glibc-devel-2.17-157.el7_3.4.x86_64
glibc-headers-2.17-157.el7_3.4.x86_64&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;readelf -s /usr/lib64/libc.so.6 | grep secure_getenv&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;614: 0000000000038950    27 FUNC    WEAK   DEFAULT   12 __libc_secure_getenv@@GLIBC_PRIVATE
857: 0000000000038950    27 FUNC    WEAK   DEFAULT   12 __secure_getenv@GLIBC_2.2.5
1715: 0000000000038950    27 FUNC    WEAK   DEFAULT   12 secure_getenv@@GLIBC_2.17
5228: 0000000000038950    27 FUNC    LOCAL  DEFAULT   12 __GI___libc_secure_getenv
6506: 0000000000038950    27 FUNC    WEAK   DEFAULT   12 __secure_getenv@GLIBC_2.2
6529: 0000000000038950    27 FUNC    WEAK   DEFAULT   12 secure_getenv
6918: 0000000000038950    27 FUNC    WEAK   DEFAULT   12 __libc_secure_getenv&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Так что ничего патчить не нужно, а просто собираем &lt;a href="https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/releases/23/Workstation/source/SRPMS/o/openssl-1.0.2d-2.fc23.src.rpm"&gt;openssl&lt;/a&gt; из FC23. Дополнительно потребуется пересобрать еще один пакет из FC23 &lt;a href="https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/releases/23/Workstation/source/SRPMS/c/crypto-policies-20150518-3.gitffe885e.fc23.src.rpm"&gt;crypto-policies&lt;/a&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;yum install epel-release &amp;amp;&amp;amp; yum update &amp;amp;&amp;amp; yum install mock&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mkdir -p ~/rpmbuild/{SPECS,SOURCES,SRPMS}&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;wget http://nginx.org/packages/centos/7/SRPMS/nginx-1.12.1-1.el7.ngx.src.rpm&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;rpm -ivh ~/nginx-1.12.1-1.el7.ngx.src.rpm&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;grep 'Requires: openssl &amp;gt;= 1.0.1' -P -R -I -l ~/rpmbuild/SPECS/nginx.spec | xargs sed -i 's/Requires: openssl &amp;gt;= 1.0.1/Requires: openssl &amp;gt;= 1.0.2/g'&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;grep 'BuildRequires: openssl-devel &amp;gt;= 1.0.1' -P -R -I -l ~/rpmbuild/SPECS/nginx.spec | xargs sed -i 's/BuildRequires: openssl-devel &amp;gt;= 1.0.1/BuildRequires: openssl-devel &amp;gt;= 1.0.2/g'&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;grep 'define main_release 1' -P -R -I -l  ~/rpmbuild/SPECS/nginx.spec | xargs sed -i 's/define main_release 1/define main_release 2/g'&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;grep '%changelog' -P -R -I -l  /root/rpmbuild/SPECS/nginx.spec | xargs sed -i 's/%changelog/%changelog\n* Wed Jul 12 2017 Aleksandr Chernyshev &amp;lt;mail@aschernyshev.ru&amp;gt;\n- 1.12.1 \n- Rebuild with openssl-1.0.2d\n/g'&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/bin/mock -r epel-7-x86_64 --spec=~/rpmbuild/SPECS/nginx.spec --sources=~/rpmbuild/SOURCES/ --resultdir=~/rpmbuild/SRPMS/ --no-clean --buildsrpm&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;wget https://aschernyshev.ru/repository/rhel/7/noarch/crypto-policies-20150518-3.gitffe885e.el7.centos.noarch.rpm
wget https://aschernyshev.ru/repository/rhel/7/x86_64/openssl-libs-1.0.2d-2.el7.centos.x86_64.rpm
wget https://aschernyshev.ru/repository/rhel/7/x86_64/openssl-1.0.2d-2.el7.centos.x86_64.rpm
wget https://aschernyshev.ru/repository/rhel/7/x86_64/openssl-devel-1.0.2d-2.el7.centos.x86_64.rpm&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/bin/mock -r epel-7-x86_64 --init
/usr/bin/mock -r epel-7-x86_64 --install ~/crypto-policies-20150518-3.gitffe885e.el7.centos.noarch.rpm
/usr/bin/mock -r epel-7-x86_64 --install ~/openssl-libs-1.0.2d-2.el7.centos.x86_64.rpm
/usr/bin/mock -r epel-7-x86_64 --install ~/openssl-1.0.2d-2.el7.centos.x86_64.rpm
/usr/bin/mock -r epel-7-x86_64 --install ~/openssl-devel-1.0.2d-2.el7.centos.x86_64.rpm
/usr/bin/mock -r epel-7-x86_64 --no-clean ~/rpmbuild/SRPMS/nginx-1.12.1-2.el7.centos.ngx.src.rpm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Устанавливаем получившиеся &lt;a href="https://aschernyshev.ru/repository/rhel/7/noarch/crypto-policies-20150518-3.gitffe885e.el7.centos.noarch.rpm"&gt;crypto-policies&lt;/a&gt;, &lt;a href="https://aschernyshev.ru/repository/rhel/7/x86_64/openssl-1.0.2d-2.el7.centos.x86_64.rpm"&gt;openssl&lt;/a&gt;, &lt;a href="https://aschernyshev.ru/repository/rhel/7/x86_64/openssl-libs-1.0.2d-2.el7.centos.x86_64.rpm"&gt;openssl-libs&lt;/a&gt; , &lt;a href="https://aschernyshev.ru/repository/rhel/7/x86_64/nginx-1.12.1-2.el7.centos.ngx.x86_64.rpm"&gt;nginx&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>Сборка пакетов без лишнего мусора в CentOS</title>
<guid isPermaLink="true">https://aschernyshev.ru/all/sborka-paketov-bez-lishnego-musora-v-centos/</guid>
<link>https://aschernyshev.ru/all/sborka-paketov-bez-lishnego-musora-v-centos/</link>
<pubDate>Fri, 17 Feb 2017 16:49:11 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/sborka-paketov-bez-lishnego-musora-v-centos/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://aschernyshev.ru/pictures/centos_logo.jpg" width="229" height="255" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;В процессе сборки rpm-пакетов, при разрешения зависимостей, в систему устанавливается большое количество приложений. Чтобы не засорять host-систему rpm-пакеты можно собирать в chroot. Для этих целей в CentOS существует отличные приложения &lt;a href="https://github.com/rpm-software-management/mock"&gt;&lt;b&gt;mock&lt;/b&gt;&lt;/a&gt;, которое значительно упрощает этот процесс.&lt;/p&gt;
&lt;p&gt;Для начала необходимо подключить репозиторий &lt;b&gt;EPEL&lt;/b&gt; и установить mock&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;yum install epel-release -y &amp;amp;&amp;amp; yum update &amp;amp;&amp;amp; yum install mock -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Далле создадим отдельного пользователя из под которого будет производится сборка пакетов&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;useradd mockbuild
usermod -a -G mock mockbuild&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Сменим текущего пользователя на mockbuild&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;su mockbuild&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Далее перейдем в домашний каталог пользователя mockbuild и создадим дерево каталогов&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;cd ~/
mkdir -p rpmbuild/{SPECS,SOURCES,SRPMS}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Конфигурации для сборки под разные дистрибутивы и архитектуры хранятся в /etc/mock/&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ls -alhrt /etc/mock/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Первоначально необходимо создать chroot окружение, для этого выполним&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mock -r epel-7-x86_64 --init&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если в процессе сборки вдруг что-то пошло не так, то отчистить chroot можно выполнив&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mock -r epel-7-x86_64 --clean&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В самом простом случае, если уже есть готовый src.rpm для сборки rpm-пакет необходимо выполнить&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/bin/mock -r epel-7-x86_64 --no-clean --rebuild ~/rpmbuild/SRPMS/package.src.rpm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если в пакет требуется внести изменения, то для начала необходимо распаковать src.rpm&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;rpm -ivh package.src.rpm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После чего отредактировать необходимые файлы и заново собрать src.rpm&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/bin/mock -r epel-7-x86_64 --spec=~/rpmbuild/SPECS/package.spec --sources=~/rpmbuild/SOURCES/ --resultdir=~/rpmbuild/SRPMS/ --no-clean --buildsrpm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И после этого уже собрать rpm-пакет&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/bin/mock -r epel-7-x86_64 --no-clean --rebuild ~/rpmbuild/SRPMS/package.src.rpm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Процесс сборки rpm-пакета с зависимостями которых нет в репозитариях, будет выглядеть следующим образом.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/usr/bin/mock -r epel-7-x86_64 --init
/usr/bin/mock -r epel-7-x86_64 --install ~/rpm/package-1.el7.centos.x86_64.rpm
/usr/bin/mock -r epel-7-x86_64 --install ~/rpm/package-2.el7.centos.x86_64.rpm
/usr/bin/mock -r epel-7-x86_64 --install ~/rpm/package-3.el7.centos.x86_64.rpm
/usr/bin/mock -r epel-7-x86_64 --no-clean ~/main.el7.centos.src.rpm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Более подробную информацию можно найти на странице документации &lt;a href="https://github.com/rpm-software-management/mock/wiki"&gt;mock&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>FFmpeg CentOS7</title>
<guid isPermaLink="true">https://aschernyshev.ru/all/ffmpeg-centos7/</guid>
<link>https://aschernyshev.ru/all/ffmpeg-centos7/</link>
<pubDate>Mon, 13 Feb 2017 22:17:33 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/ffmpeg-centos7/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://aschernyshev.ru/pictures/ffmpeg_logo.jpg" width="225" height="225" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Оформил  rpm-пакет &lt;a href="https://cloud.mail.ru/public/N5Kr/8sfhKREqj"&gt; FFmpeg&lt;/a&gt;  для CentOS7.&lt;/p&gt;
&lt;p&gt;Исполняемые файлы взяты &lt;a href="https://www.johnvansickle.com/ffmpeg/"&gt;здесь&lt;/a&gt;.&lt;/p&gt;
</description>
</item>

<item>
<title>Прозрачное проксирование в I2P и TOR.</title>
<guid isPermaLink="true">https://aschernyshev.ru/all/prozrachnoe-proksirovanie-v-i2p-i-tor/</guid>
<link>https://aschernyshev.ru/all/prozrachnoe-proksirovanie-v-i2p-i-tor/</link>
<pubDate>Thu, 24 Nov 2016 14:47:40 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/prozrachnoe-proksirovanie-v-i2p-i-tor/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://aschernyshev.ru/pictures/i2p_tor_logo.jpg" width="417" height="300" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Заметка написана по мотивам статьи &lt;a href="https://habrahabr.ru/post/122835/" class="nu"&gt;«&lt;u&gt;Прозрачное проксирование в I2P и TOR&lt;/u&gt;»&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;_LANNET_&lt;/b&gt; — локальная подсеть&lt;br /&gt;
&lt;b&gt;_WANETH_&lt;/b&gt; — внешний интерфейс&lt;br /&gt;
&lt;b&gt;_LANETH_&lt;/b&gt;  — внутренний интерфейс&lt;/p&gt;
&lt;h2&gt;DNSMasq&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/dnsmasq.conf&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;log-queries
log-facility=/var/log/dnsmasq.log
listen-address= 0.0.0.0
interface=_LANETH_
except-interface=_WANETH_
domain-needed 
bogus-priv  
strict-order 
no-resolv
server=77.88.8.88
server=8.8.8.8
address=/.onion/10.10.99.99
address=/.i2p/10.10.99.99&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl enable dnsmasq.service
systemctl start dnsmasq.service&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Tor&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/tor/torrc&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;SocksPort 9050
SocksListenAddress 127.0.0.1
ExcludeNodes {ru}, {ua}, {by}
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl enable tor.service
systemctl start tor.service&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;i2pd&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/i2pd/subscriptions.txt&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;http://inr.i2p/export/alive-hosts.txt
http://stats.i2p/cgi-bin/newhosts.txt
http://i2p-projekt.i2p/hosts.txt
http://i2host.i2p/cgi-bin/i2hostetag
http://no.i2p/export/alive-hosts.txt
http://rus.i2p/hosts.txt
http://udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p/hosts.tx&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/i2pd/&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[IRC]
type = client
address = 127.0.0.1
port = 6668
destination = irc.postman.i2p
destinationport = 6667
keys = irc-keys.dat&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl enable i2pd.service
systemctl start i2pd.service&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;TinyProxy&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /etc/tinyproxy.conf&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;User nobody
Group nogroup
Port 8888
Listen _LANNET_
Timeout 200
ErrorFile 404 &amp;quot;/usr/share/tinyproxy/404.html&amp;quot;
ErrorFile 400 &amp;quot;/usr/share/tinyproxy/400.html&amp;quot;
ErrorFile 503 &amp;quot;/usr/share/tinyproxy/503.html&amp;quot;
ErrorFile 403 &amp;quot;/usr/share/tinyproxy/403.html&amp;quot;
ErrorFile 408 &amp;quot;/usr/share/tinyproxy/408.html&amp;quot;
DefaultErrorFile &amp;quot;/usr/share/tinyproxy/default.html&amp;quot;
StatFile &amp;quot;/usr/share/tinyproxy/stats.html&amp;quot;
Logfile &amp;quot;/var/log/tinyproxy/tinyproxy.log&amp;quot;
LogLevel Info
PidFile &amp;quot;/var/run/tinyproxy/tinyproxy.pid&amp;quot;
upstream 127.0.0.1:8123
upstream 127.0.0.1:4444 &amp;quot;.i2p&amp;quot;
upstream 127.0.0.1:8124 &amp;quot;.onion&amp;quot;
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
Allow 127.0.0.1
Allow 192.168.0.0/16
ViaProxyName &amp;quot;tinyproxy&amp;quot;
ConnectPort 443
ConnectPort 563&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl enable tinyproxy.service
systemctl start tinyproxy.service&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Polipo&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /etc/polipo/wan.conf&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;##################
# https://www.irif.fr/~jch/software/polipo/polipo.html#
##################

displayName = WAN
proxyPort = 8123
allowedClients = 127.0.0.1, _LANNET_
dnsQueryIPv6 = false
pidFile = /var/run/polipo/polipo_wan.pid
#######
censoredHeaders = from, accept-language
censorReferer = maybe
disableVia = true
####### Cache #######
diskCacheRoot = &amp;quot;/var/cache/polipo/wan_cache/&amp;quot;
maxDiskCacheEntrySize = 524288
diskCacheDirectoryPermissions = 0700
diskCacheFilePermissions = 0600
relaxTransparency = maybe
dontCacheCookies = true
dontCacheRedirects = true
diskCacheUnlinkTime = 7d
diskCacheTruncateTime = 3d
diskCacheTruncateSize = 1MB
######## Memory ########
chunkHighMark = 50331648
objectHighMark = 16384
######## WEB Interface ########
disableLocalInterface = true
#disableConfiguration = false
#disableIndexing = false
#disableServersList = false
######## Log ########
logSyslog = true
logFile = &amp;quot;/var/log/polipo/wan.log&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /etc/polipo/tor.conf&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;##################
# https://www.irif.fr/~jch/software/polipo/polipo.html#
##################

displayName = TOR
proxyPort = 8124
allowedClients = 127.0.0.1, _LANNET_
dnsQueryIPv6 = false
pidFile = /var/run/polipo/polipo_tor.pid
####### SOCKS #######
socksParentProxy = &amp;quot;127.0.0.1:9050&amp;quot;
socksProxyType=socks5
#######
censoredHeaders = from, accept-language
censorReferer = maybe
disableVia = true
####### Cache #######
diskCacheRoot = &amp;quot;/var/cache/polipo/tor_cache/&amp;quot;
diskCacheDirectoryPermissions = 0700
diskCacheFilePermissions = 0600
relaxTransparency = maybe
dontCacheCookies = true
dontCacheRedirects = true
diskCacheUnlinkTime = 7d
diskCacheTruncateTime = 3d
diskCacheTruncateSize = 1MB
######## Memory ########
chunkHighMark = 50331648
objectHighMark = 16384
######## WEB Interface ########
disableLocalInterface = true
#disableConfiguration = false
#disableIndexing = false
#disableServersList = false
######## Log ########
logSyslog = true
logFile = &amp;quot;/var/log/polipo/tor.log&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/systemd/system/polipo@.service&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Unit]
Description=Polipo Proxy Server
After=network.target

[Service]
User=proxy
Group=proxy
Type=simple
Restart=always
PIDFile=/var/run/polipo/polipo_%i.pid
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/cache/polipo/%i_cache
ExecStartPre=/bin/chown proxy:proxy /var/cache/polipo/%i_cache -R
ExecStartPre=/bin/chmod 700 /var/cache/polipo/%i_cache -R
ExecStart=/usr/bin/polipo -c /etc/polipo/%i.conf
ExecReload=/bin/kill -USR1 $MAINPID


[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/tmpfiles.d/polipo.conf&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;d /run/polipo 0755 proxy proxy -&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Скрипт для очистки кеша&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /usr/local/polipo/polipo_trimcache.sh&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

export PATH=&amp;quot;$PATH:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin&amp;quot;
SN=&amp;quot;$(basename &amp;quot;$0&amp;quot;)&amp;quot;

function print_help() {
    printf &amp;quot;\n&amp;quot;
    printf &amp;quot;Использование: %s options...\n&amp;quot; &amp;quot;$SN&amp;quot;
    printf &amp;quot;Параметры:\n&amp;quot;
    printf &amp;quot;  -n         Имя копии Polipo.\n&amp;quot;
    printf &amp;quot;  -h         Справка.\n&amp;quot;
    printf &amp;quot;\n&amp;quot;
}

# Если скрипт запущен без аргументов, открываем справку.
if [[ $# = 0 ]]; then
    print_help &amp;amp;&amp;amp; exit 1
fi
while getopts &amp;quot;:n:h&amp;quot; opt ;
do
    case $opt in
        n) NAME=$OPTARG;
            ;;
        h) print_help
            exit 1
            ;;
        *) printf &amp;quot;Неправильный параметр\n&amp;quot;;
           printf &amp;quot;Для вызова справки запустите %s -h\n&amp;quot; &amp;quot;$SN&amp;quot;;
            exit 1
            ;;
        esac
done

if [[ &amp;quot;$NAME&amp;quot; == &amp;quot;&amp;quot; ]] ;  then
 printf &amp;quot;\n&amp;quot;
 printf &amp;quot;Параметры запуска не указаны.\n&amp;quot;
 printf &amp;quot;Для справки наберите: %s -h\n&amp;quot; &amp;quot;$SN&amp;quot;
 printf &amp;quot;\n&amp;quot;
 exit 1
fi

CONFIG_FILE=/etc/polipo/$NAME.conf
FORBIDDEN_FILE=/etc/polipo/forbidden
PIDFILE=/var/run/polipo/polipo_$NAME.pid
RUNAS=proxy

if [ ! -x /usr/bin/polipo ]; then
  exit 0
fi

if [ ! -f &amp;quot;$FORBIDDEN_FILE&amp;quot; ]; then
  FORBIDDEN_FILE=/dev/null
fi

if [ -f &amp;quot;$PIDFILE&amp;quot; ]; then
  # Instruct polipo to to flush its in-memory cache to disk (signal USR1)
  kill -USR1 &amp;quot;$(cat &amp;quot;$PIDFILE&amp;quot;)&amp;quot;
  # Allow some time for polipo to perform the requested flush
  sleep 2
  # Since f17, the following su command prints &amp;quot;...killed.&amp;quot; to stdout ???
  runuser -s /bin/sh -c \
    &amp;quot;nice polipo -x -c $CONFIG_FILE forbiddenFile=$FORBIDDEN_FILE &amp;gt; /dev/null&amp;quot; \
    $RUNAS 2&amp;gt; /dev/null
  # Instruct polipo to to discard its in-memory cache (signal USR2)
  kill -USR2 &amp;quot;$(cat &amp;quot;$PIDFILE&amp;quot;)&amp;quot;
fi

exit 0&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/systemd/system/polipo_trimcache@.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем сервис для очистки кеша&lt;/p&gt;
&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Unit]
Description=Polipo trim cache on %I
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/lib/polipo/polipo_trimcache.sh -n %i&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаем таймер&lt;/p&gt;
&lt;hr /&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/systemd/system/polipo_trimcache@.timer&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Unit]
Description=Polipo trim cache timer on %I

[Timer]
OnCalendar=*-*-* 00:00:00
Persistent=true

[Install]
WantedBy=timers.target&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Активируем и запускаем сервисы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl enable polipo@wan
systemctl enable polipo_trimcache@wan.timer
systemctl start polipo@wan
systemctl sart polipo_trimcache@wan.timer
systemctl enable polipo@tor
systemctl enable polipo_trimcache@tor.timer
systemctl start polipo@tor
systemctl sart polipo_trimcache@tor.timer&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>MiniDLNA CentOS7</title>
<guid isPermaLink="true">https://aschernyshev.ru/all/minidlna-centos7/</guid>
<link>https://aschernyshev.ru/all/minidlna-centos7/</link>
<pubDate>Wed, 23 Nov 2016 12:27:26 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/minidlna-centos7/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://aschernyshev.ru/pictures/dlna_logo.jpg" width="300" height="300" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Оформил пакет &lt;a href="https://sourceforge.net/projects/minidlna/"&gt;&lt;b&gt;MiniDLNA&lt;/b&gt;&lt;/a&gt; &lt;b&gt;1.1.5&lt;/b&gt; для CentOS7.&lt;br /&gt;
За основу использована официальная, статическая сборка с &lt;a href="https://freefr.dl.sourceforge.net/project/minidlna/minidlna/1.1.5/minidlna-1.1.5_static.tar.gz"&gt;SourceForge&lt;/a&gt;.&lt;br /&gt;
Установка производится по стандартным путям, в пакет включен юнит для &lt;b&gt;systemd&lt;/b&gt; и пресет для &lt;b&gt;firewalld&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.mail.ru/public/7SaH/6TWJRM92n"&gt;minidlna-1.1.5-1.el7.centos.x86_64.rpm&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Запуск скриптов при изменении состояния интерфейса в CentOS</title>
<guid isPermaLink="true">https://aschernyshev.ru/all/zapusk-skriptov-pri-izmenenii-sostoyaniya-interfeysa-v-centos/</guid>
<link>https://aschernyshev.ru/all/zapusk-skriptov-pri-izmenenii-sostoyaniya-interfeysa-v-centos/</link>
<pubDate>Wed, 12 Oct 2016 10:34:46 +0300</pubDate>
<author>Александр Чернышев</author>
<comments>https://aschernyshev.ru/all/zapusk-skriptov-pri-izmenenii-sostoyaniya-interfeysa-v-centos/</comments>
<description>
&lt;p&gt;В некоторых случаях может понадобится запускать определенный сценарий при изменении состояния интерфейса (UP/DOWN). В Debian это, реализовано «из коробки». Такую возможность можно реализовать и в CentOS, для этого необходимо в &lt;b&gt;sbin&lt;/b&gt; создать скрипты: &lt;b&gt;ifup-pre-local&lt;/b&gt;, &lt;b&gt;ifup-local&lt;/b&gt;, &lt;b&gt;ifdown-pre-local&lt;/b&gt;, &lt;b&gt;ifdown-local&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Перед поднятием интерфейса&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /sbin/ifup-pre-local&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
#
PREUP=&amp;quot;/etc/sysconfig/network-scripts/pre-up-${1:6}&amp;quot;
if [ -x $PREUP ]; then
exec $PREUP
fi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;После поднятия интерфейса&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /sbin/ifup-local&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
#
POSTUP=&amp;quot;/etc/sysconfig/network-scripts/post-up-${1:6}&amp;quot;
if [ -x $POSTUP ]; then
exec $POSTUP
fi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Перед отключение интерфейса&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /sbin/ifdown-pre-local&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
#
PREDOWN=&amp;quot;/etc/sysconfig/network-scripts/pre-down-$1&amp;quot;
if [ -x $PREDOWN ]; then
exec $PREDOWN
fi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;После отключение интерфейса&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /sbin/ifdown-local&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
#
POSTDOWN=&amp;quot;/etc/sysconfig/network-scripts/post-down-$1&amp;quot;
if [ -x $POSTDOWN ]; then
exec $POSTDOWN
fi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Делаем их исполняемыми&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod +x /sbin/ifup-local
chmod +x /sbin/ifdown-local

chmod +x /sbin/ifup-pre-local
chmod +x /sbin/ifdown-pre-local&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Создаем файлы сценариев, которые необходимо выполнять&lt;/b&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vim /etc/sysconfig/network-scripts/pre-up-&amp;lt;if_name&amp;gt;
vim /etc/sysconfig/network-scripts/pre-down-&amp;lt;if_name&amp;gt;
vim /etc/sysconfig/network-scripts/post-up-&amp;lt;if_name&amp;gt;
vim /etc/sysconfig/network-scripts/post-down-&amp;lt;if_name&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod +x /etc/sysconfig/network-scripts/pre-*
chmod +x /etc/sysconfig/network-scripts/post-*&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>