16 KiB
- Пример ручной установки на Debian-подобную систему
- CentOS 7+, Fedora
- openSUSE
- Arch Linux
- Gentoo
- Ручная установка на OpenWrt/LEDE 15.xx-21.xx
Пример ручной установки на Debian-подобную систему
На Debian основано большое количество дистрибутивов Linux, включая Ubuntu.
Здесь рассматриваются прежде всего Debian 8+ и Ubuntu 16+.
Но с большой вероятностью может сработать и на производных от них.
Главное условие - наличие systemd
, apt
и нескольких стандартных пакетов в репозитории.
Установить пакеты:
apt-get update
apt-get install ipset curl dnsutils git
Если хотите использовать nftables
, то нужен пакет nftables
, а ipset
не обязателен.
Скопировать директорию zapret
в /opt
или скачать через git
:
cd /opt
git clone --depth 1 https://github.com/bol-van/zapret
Запустить автоинсталлятор бинарников. Он сам определит рабочую архитектуру и настроит все бинарники.
/opt/zapret/install_bin.sh
АЛЬТЕРНАТИВА: make -C /opt/zapret
. Получите динамические бинарники под вашу ось.
Для сборки требуются dev пакеты: zlib1g-dev
, libcap-dev
, libnetfilter-queue-dev
.
Создать конфиг по умолчанию:
cp /opt/zapret/config.default /opt/zapret/config
Настроить параметры согласно разделу "Выбор параметров".
Создать user листы по умолчанию:
cp /opt/zapret/ipset/zapret-hosts-user-exclude.txt.default /opt/zapret/ipset/zapret-hosts-user-exclude.txt
echo nonexistent.domain > /opt/zapret/ipset/zapret-hosts-user.txt
touch /opt/zapret/ipset/zapret-hosts-user-ipban.txt
Создать ссылку на service unit в systemd
:
ln -fs /opt/zapret/init.d/systemd/zapret.service /lib/systemd/system
Удалить старые листы, если они были созданы ранее:
/opt/zapret/ipset/clear_lists.sh
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt
свои домены.
Выполнить скрипт обновления листа:
/opt/zapret/ipset/get_config.sh
Настроить таймер systemd
для обновления листа:
ln -fs /opt/zapret/init.d/systemd/zapret-list-update.service /lib/systemd/system
ln -fs /opt/zapret/init.d/systemd/zapret-list-update.timer /lib/systemd/system
Принять изменения в systemd
: systemctl daemon-reload
Включить автозапуск службы: systemctl enable zapret
Включить таймер обновления листа: systemctl enable zapret-list-update.timer
Запустить службу: systemctl start zapret
Шпаргалка по управлению службой и таймером :
- enable auto start:
systemctl enable zapret
- disable auto start:
systemctl disable zapret
- start:
systemctl start zapret
- stop:
systemctl stop zapret
- status, output messages:
systemctl status zapret
- timer info:
systemctl list-timer
- delete service:
systemctl disable zapret; rm /lib/systemd/system/zapret.service
- delete timer:
systemctl disable zapret-list-update.timer; rm /lib/systemd/system/zapret-list-update.*
CentOS 7+, Fedora
CentOS с 7 версии и более-менее новые федоры построены на systemd
.
В качестве пакетного менеджера используется yum
.
Установить пакеты:
yum install -y curl ipset dnsutils git
Далее все аналогично Debian.
openSUSE
Новые openSUSE основаны на systemd
и менеджере пакетов zypper
.
Установить пакеты:
zypper --non-interactive install curl ipset
Далее все аналогично Debian, кроме расположения systemd
.
В openSUSE он находится не в /lib/systemd
, а в /usr/lib/systemd
.
Правильные команды будут:
ln -fs /opt/zapret/init.d/systemd/zapret.service /usr/lib/systemd/system
ln -fs /opt/zapret/init.d/systemd/zapret-list-update.service /usr/lib/systemd/system
ln -fs /opt/zapret/init.d/systemd/zapret-list-update.timer /usr/lib/systemd/system
Arch Linux
Построен на базе systemd
.
Установить пакеты:
pacman -Syy
pacman --noconfirm -S ipset curl
Далее все аналогично Debian.
Gentoo
Эта система использует OpenRC - улучшенную версию sysvinit.
Установка пакетов производится командой: emerge <package_name>
Пакеты собираются из исходников.
Требуются все те же ipset
, curl
, git
для скачивания с GitHub.
git
и curl
по умолчанию могут присутствовать, ipset
отсутствует.
emerge ipset
Настроить параметры согласно разделу "Выбор параметров".
Запустить автоинсталлятор бинарников. Он сам определит рабочую архитектуру и настроит все бинарники:
/opt/zapret/install_bin.sh
АЛЬТЕРНАТИВА: make -C /opt/zapret
. Получите динамические бинарники под вашу ось.
Удалить старые листы, если они были созданы ранее:
/opt/zapret/ipset/clear_lists.sh
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt
свои домены.
Выполнить скрипт обновления листа:
/opt/zapret/ipset/get_config.sh
Зашедулить обновление листа:
crontab -e
Создать для крона строчку 0 12 */2* * /opt/zapret/ipset/get_config.sh
Подключить init скрипт:
ln -fs /opt/zapret/init.d/openrc/zapret /etc/init.d
rc-update add zapret
Запустить службу:
rc-service zapret start
Шпаргалка по управлению службой:
- enable auto start:
rc-update add zapret
- disable auto start:
rc-update del zapret
- start:
rc-service zapret start
- stop:
rc-service zapret stop
Ручная установка на OpenWrt/LEDE 15.xx-21.xx
ВАЖНО: Данная инструкция написана для систем, основанных на iptables
+firewall3
.
В новых версиях OpenWrt переходит на nftables
+firewall4
, инструкция неприменима. Пользуйтесь install_easy.sh
Установить дополнительные пакеты:
opkg update
opkg install iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra ipset curl
# (IPv6) opkg install ip6tables-mod-nat
# (опционально) opkg install gzip
# (опционально) opkg install coreutils-sort
ЭКОНОМИЯ МЕСТА:
gzip
от busybox
в разы медленней полноценного варианта. gzip
используется скриптами получения листов.
sort
от busybox
медленней полноценного варианта и жрет намного больше памяти. sort
используется скриптами получения листов.
iptables-mod-nfqueue
можно выкинуть, если не будем пользоваться nfqws
.
curl
можно выкинуть, если для получения IP листа будет использоваться только get_user.sh
Самая главная трудность - скомпилировать программы на C. Это можно сделать на Linux x64 при помощи SDK, который можно скачать с официального сайта OpenWrt или LEDE. Но процесс кросс-компиляции - это всегда сложности.
Недостаточно запустить make
как на традиционной Linux системе.
Поэтому в binaries/
имеются готовые статические бинарники для всех самых распространенных архитектур.
Статическая сборка означает, что бинарник не зависит от типа libc
(glibc
, uclibc
или musl
) и наличия установленных *.so
.
Его можно использовать сразу. Лишь бы подходил тип CPU. У ARM и MIPS есть несколько версий.
Скорее всего найдется рабочий вариант. Если нет - вам придется собирать самостоятельно.
Для всех поддерживаемых архитектур бинарники запакованы upx
. На текущий момент все, кроме mips64
.
Скопировать директорию zapret
в /opt
на роутер.
Если места достаточно, самый простой способ:
opkg update
opkg install git-http
mkdir /opt
cd /opt
git clone --depth 1 https://github.com/bol-van/zapret
Если места немного:
opkg update
opkg install openssh-sftp-server unzip
ifconfig br-lan
Скачать на комп с GitHub zip архив кнопкой "Clone or download" -> Download ZIP
Скопировать средствами sftp
zip архив на роутер в /tmp
.
mkdir /opt
cd /opt
unzip /tmp/zapret-master.zip
mv zapret-master zapret
rm /tmp/zapret-master.zip
Если места совсем мало:
На Linux системе скачать и распаковать zapret. Оставить необходимый минимум файлов.
Запаковать в архив zapret.tar.gz
.
nc -l -p 1111 < zapret.tar.gz
На роутере:
cd /tmp
nc <linux_system_ip> 1111 >zapret.tar.gz
Не стоит работать с распакованной версией zapret
на Windows. Потеряются ссылки и chmod
.
Запустить автоинсталлятор бинарников. Он сам определит рабочую архитектуру и настроит все бинарники:
/opt/zapret/install_bin.sh
Создать ссылку на скрипт запуска:
ln -fs /opt/zapret/init.d/openwrt/zapret /etc/init.d
Создать ссылку на скрипт события поднятия интерфейса:
ln -fs /opt/zapret/init.d/openwrt/90-zapret /etc/hotplug.d/iface
Создать конфиг по умолчанию:
cp /opt/zapret/config.default /opt/zapret/config
Настроить параметры согласно разделу "Выбор параметров".
Создать user листы по умолчанию:
cp /opt/zapret/ipset/zapret-hosts-user-exclude.txt.default /opt/zapret/ipset/zapret-hosts-user-exclude.txt
echo nonexistent.domain > /opt/zapret/ipset/zapret-hosts-user.txt
touch /opt/zapret/ipset/zapret-hosts-user-ipban.txt
Удалить старые листы, если они были созданы ранее:
/opt/zapret/ipset/clear_lists.sh
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt
свои домены.
Выполнить скрипт обновления листа:
/opt/zapret/ipset/get_config.sh
Зашедулить обновление листа:
crontab -e
Создать для крона строчку 0 12 */2* * /opt/zapret/ipset/get_config.sh
Включить автозапуск службы и запустить ее:
/etc/init.d/zapret enable
/etc/init.d/zapret start
ПРИМЕЧАНИЕ: на этапе старта системы интерфейсы еще не подняты. В некоторых случаях невозможно правильно сформировать параметры запуска демонов, не зная имя физического интерфейса LAN. Скрипт из /etc/hotplug.d/iface перезапустит демоны по событию поднятия LAN.
Создать ссылку на firewall include:
ln -fs /opt/zapret/init.d/openwrt/firewall.zapret /etc/firewall.zapret
Проверить была ли создана ранее запись о firewall include:
uci show firewall | grep firewall.zapret
Если firewall.zapret
нет, значит добавить:
uci add firewall include
uci set firewall.@include[-1].path="/etc/firewall.zapret"
uci set firewall.@include[-1].reload="1"
uci commit firewall
Проверить, не включен ли flow offload:
uci show firewall.@defaults[0]
Если flow_offloading=1
или flow_offloading_hw=1
:
uci set firewall.@defaults[0].flow_offloading=0
uci set firewall.@defaults[0].flow_offloading_hw=0
uci commit firewall
Перезапустить фаервол:
fw3 restart
Посмотреть через iptables -nL
, ip6tables -nL
или через luci
вкладку "firewall", появились ли нужные правила.
ЭКОНОМИЯ МЕСТА: если его мало, то можно оставить в директории zapret
лишь подкаталоги ipset/
, common/
, файл config/
, init.d/openwrt/
.
Далее нужно создать подкаталоги с реально используемыми бинарниками (ip2net
, mdig
, tpws
, nfq
) и скопировать туда из binaries/
рабочие executables.
ЕСЛИ ВСЕ ПЛОХО С МЕСТОМ: откажитесь от работы со списком РКН. используйте только get_user.sh
.
ЕСЛИ СОВСЕМ ВСЕ УЖАСНО С МЕСТОМ: берете tpws
и делаете все своими руками. поднятие iptables
, автостарт бинарника.
С некоторых версий скрипты запуска zapret без ipset
не работают (он требуется для IP exclude).
СОВЕТ: Покупайте только роутеры с USB. В USB можно воткнуть флэшку и вынести на нее корневую файловую систему или использовать ее в качестве оверлея. Не надо мучить себя, запихивая незапихиваемое в 8 мб встроенной флэшки. Для комфортной работы с zapret нужен роутер с 16 Mb встроенной памяти или USB разъемом и 128+ Mb RAM. На 64 Mb без swap будут проблемы с листами РКН. Если у вас только 64 Mb, и вы хотите листы РКН, подключите swap. 32 Mb для современных версий OpenWrt - конфигурация на грани живучести. Возможны хаотические падения процессов в oom. Работа с листами РКН невозможна в принципе.