zapret/docs/manual_setup.txt

267 lines
15 KiB
Plaintext
Raw Normal View History

2023-07-02 20:49:28 +05:00
Пример ручной установки на debian-подобную систему
2022-05-07 16:07:55 +05:00
--------------------------------------------------
2023-07-02 20:49:28 +05:00
На debian основано большое количество дистрибутивов linux, включая ubuntu.
Здесь рассматриваются прежде всего Debian 8+ и Ubuntu 16+.
Но с большой вероятностью может сработать и на производных от них.
Главное условие - наличие systemd, apt и нескольких стандартных пакетов в репозитории.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Установить пакеты :
2022-05-07 16:07:55 +05:00
apt-get update
apt-get install ipset curl dnsutils git
2023-07-02 20:49:28 +05:00
Если хотите использовать nftables, то нужен пакет nftables, а ipset не обязателен.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Скопировать директорию zapret в /opt или скачать через git :
2022-05-07 16:07:55 +05:00
cd /opt
git clone --depth 1 https://github.com/bol-van/zapret
2023-07-02 20:49:28 +05:00
Запустить автоинсталятор бинариков. Он сам определит рабочую архитектуру и настроит все бинарики.
2022-05-07 16:07:55 +05:00
/opt/zapret/install_bin.sh
2023-07-02 20:49:28 +05:00
АЛЬТЕРНАТИВА : make -C /opt/zapret. Получите динамические бинарики под вашу ось.
Для сборки требуются dev пакеты : zlib1g-dev libcap-dev libnetfilter-queue-dev
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Настроить параметры согласно разделу "Выбор параметров".
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Создать ссылку на service unit в systemd :
2022-05-07 16:07:55 +05:00
ln -fs /opt/zapret/init.d/systemd/zapret.service /lib/systemd/system
2023-07-02 20:49:28 +05:00
Удалить старые листы, если они были созданы ранее :
2022-05-07 16:07:55 +05:00
/opt/zapret/ipset/clear_lists.sh
2023-07-02 20:49:28 +05:00
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
Выполнить скрипт обновления листа :
2022-05-07 16:07:55 +05:00
/opt/zapret/ipset/get_config.sh
2023-07-02 20:49:28 +05:00
Настроить таймер systemd для обновления листа :
2022-05-07 16:07:55 +05:00
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
2023-07-02 20:49:28 +05:00
Принять изменения в systemd :
2022-05-07 16:07:55 +05:00
systemctl daemon-reload
2023-07-02 20:49:28 +05:00
Включить автозапуск службы :
2022-05-07 16:07:55 +05:00
systemctl enable zapret
2023-07-02 20:49:28 +05:00
Включить таймер обновления листа :
2022-05-07 16:07:55 +05:00
systemctl enable zapret-list-update.timer
2023-07-02 20:49:28 +05:00
Запустить службу :
2022-05-07 16:07:55 +05:00
systemctl start zapret
2023-07-02 20:49:28 +05:00
Шпаргалка по управлению службой и таймером :
2022-05-07 16:07:55 +05:00
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
-----------------
2023-07-02 20:49:28 +05:00
Centos с 7 версии и более-менее новые федоры построены на systemd.
В качестве пакетного менеджера используется yum.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Установить пакеты :
2022-05-07 16:07:55 +05:00
yum install -y curl ipset dnsutils git
2023-07-02 20:49:28 +05:00
Далее все аналогично debian.
2022-05-07 16:07:55 +05:00
OpenSUSE
--------
2023-07-02 20:49:28 +05:00
Новые OpenSUSE основаны на systemd и менеджере пакетов zypper.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Установить пакеты :
2022-05-07 16:07:55 +05:00
zypper --non-interactive install curl ipset
2023-07-02 20:49:28 +05:00
Далее все аналогично debian, кроме расположения systemd.
В opensuse он находится не в /lib/systemd, а в /usr/lib/systemd.
Правильные команды будут :
2022-05-07 16:07:55 +05:00
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
----------
2023-07-02 20:49:28 +05:00
Построен на базе systemd.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Установить пакеты :
2022-05-07 16:07:55 +05:00
pacman -Syy
pacman --noconfirm -S ipset curl
2023-07-02 20:49:28 +05:00
Далее все аналогично debian.
2022-05-07 16:07:55 +05:00
Gentoo
------
2023-07-02 20:49:28 +05:00
Эта система использует OpenRC - улучшенную версию sysvinit.
Установка пакетов производится командой : emerge <package_name>
Пакеты собираются из исходников.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Требуются все те же ipset, curl, git для скачивания с github.
git и curl по умолчанию могут присутствовать, ipset отсутствует.
2022-05-07 16:07:55 +05:00
emerge ipset
2023-07-02 20:49:28 +05:00
Настроить параметры согласно разделу "Выбор параметров".
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Запустить автоинсталятор бинариков. Он сам определит рабочую архитектуру и настроит все бинарики.
2022-05-07 16:07:55 +05:00
/opt/zapret/install_bin.sh
2023-07-02 20:49:28 +05:00
АЛЬТЕРНАТИВА : make -C /opt/zapret. Получите динамические бинарики под вашу ось.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Удалить старые листы, если они были созданы ранее :
2022-05-07 16:07:55 +05:00
/opt/zapret/ipset/clear_lists.sh
2023-07-02 20:49:28 +05:00
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
Выполнить скрипт обновления листа :
2022-05-07 16:07:55 +05:00
/opt/zapret/ipset/get_config.sh
2023-07-02 20:49:28 +05:00
Зашедулить обновление листа :
2022-05-07 16:07:55 +05:00
crontab -e
2023-07-02 20:49:28 +05:00
Создать строчку "0 12 */2 * * /opt/zapret/ipset/get_config.sh"
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Подключить init скрипт :
2022-05-07 16:07:55 +05:00
ln -fs /opt/zapret/init.d/openrc/zapret /etc/init.d
rc-update add zapret
2023-07-02 20:49:28 +05:00
Запустить службу :
2022-05-07 16:07:55 +05:00
rc-service zapret start
2023-07-02 20:49:28 +05:00
Шпаргалка по управлению службой :
2022-05-07 16:07:55 +05:00
enable auto start : rc-update add zapret
disable auto start : rc-update del zapret
start : rc-service zapret start
stop : rc-service zapret stop
2023-07-02 20:49:28 +05:00
Ручная установка на openwrt/LEDE 15.xx-21.xx
2022-05-07 16:07:55 +05:00
--------------------------------------------
2023-07-02 20:49:28 +05:00
!!! Данная инструкция написана для систем, основанных на iptables+firewall3
!!! В новых версиях openwrt переходит на nftables+firewall4, инструкция неприменима. Пользуйтесь install_easy.sh
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Установить дополнительные пакеты :
2022-05-07 16:07:55 +05:00
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
2023-07-02 20:49:28 +05:00
(опционально) 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 на роутер.
Если места достаточно, самый простой способ :
2022-05-07 16:07:55 +05:00
opkg update
opkg install git-http
mkdir /opt
cd /opt
git clone --depth 1 https://github.com/bol-van/zapret
2023-07-02 20:49:28 +05:00
Если места немного :
2022-05-07 16:07:55 +05:00
opkg update
opkg install openssh-sftp-server unzip
ifconfig br-lan
2023-07-02 20:49:28 +05:00
Скачать на комп с github zip архив кнопкой "Clone or download"->Download ZIP
Скопировать средствами sftp zip архив на роутер в /tmp.
2022-05-07 16:07:55 +05:00
mkdir /opt
cd /opt
unzip /tmp/zapret-master.zip
mv zapret-master zapret
rm /tmp/zapret-master.zip
2023-07-02 20:49:28 +05:00
Если места совсем мало :
На linux системе скачать и распаковать zapret. Оставить необходимый минимум файлов.
Запаковать в архив zapret.tar.gz.
2022-05-07 16:07:55 +05:00
nc -l -p 1111 <zapret.tar.gz
2023-07-02 20:49:28 +05:00
На роутере
2022-05-07 16:07:55 +05:00
cd /tmp
nc <linux_system_ip> 1111 >zapret.tar.gz
2023-07-02 20:49:28 +05:00
Не стоит работать с распакованной версией zapret на windows. Потеряются ссылки и chmod.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Запустить автоинсталятор бинариков. Он сам определит рабочую архитектуру и настроит все бинарики.
2022-05-07 16:07:55 +05:00
/opt/zapret/install_bin.sh
2023-07-02 20:49:28 +05:00
Создать ссылку на скрипт запуска :
2022-05-07 16:07:55 +05:00
ln -fs /opt/zapret/init.d/openwrt/zapret /etc/init.d
2023-07-02 20:49:28 +05:00
Создать ссылку на скрипт события поднятия интерфейса :
2022-05-07 16:07:55 +05:00
ln -fs /opt/zapret/init.d/openwrt/90-zapret /etc/hotplug.d/iface
2023-07-02 20:49:28 +05:00
Настроить параметры согласно разделу "Выбор параметров".
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Удалить старые листы, если они были созданы ранее :
2022-05-07 16:07:55 +05:00
/opt/zapret/ipset/clear_lists.sh
2023-07-02 20:49:28 +05:00
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
Выполнить скрипт обновления листа :
2022-05-07 16:07:55 +05:00
/opt/zapret/ipset/get_config.sh
2023-07-02 20:49:28 +05:00
Зашедулить обновление листа :
2022-05-07 16:07:55 +05:00
crontab -e
2023-07-02 20:49:28 +05:00
Создать строчку "0 12 */2 * * /opt/zapret/ipset/get_config.sh"
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Включить автозапуск службы и запустить ее :
2022-05-07 16:07:55 +05:00
/etc/init.d/zapret enable
/etc/init.d/zapret start
2023-07-02 20:49:28 +05:00
ПРИМЕЧАНИЕ : на этапе старта системы интерфейсы еще не подняты. в некоторых случаях невозможно правильно
сформировать параметры запуска демонов, не зная имя физического интерфейса LAN.
рипт из /etc/hotplug.d/iface перезапустит демоны по событию поднятия LAN.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
Создать ссылку на firewall include :
2022-05-07 16:07:55 +05:00
ln -fs /opt/zapret/init.d/openwrt/firewall.zapret /etc/firewall.zapret
2023-07-02 20:49:28 +05:00
Проверить была ли создана ранее запись о firewall include :
2022-05-07 16:07:55 +05:00
uci show firewall | grep firewall.zapret
2023-07-02 20:49:28 +05:00
Если firewall.zapret нет, значит добавить :
2022-05-07 16:07:55 +05:00
uci add firewall include
uci set firewall.@include[-1].path="/etc/firewall.zapret"
uci set firewall.@include[-1].reload="1"
uci commit firewall
2023-07-02 20:49:28 +05:00
Проверить не включен ли flow offload :
2022-05-07 16:07:55 +05:00
uci show firewall.@defaults[0]
2023-07-02 20:49:28 +05:00
Если flow_offloading=1 или flow_offloading_hw=1 ,
2022-05-07 16:07:55 +05:00
uci set firewall.@defaults[0].flow_offloading=0
uci set firewall.@defaults[0].flow_offloading_hw=0
uci commit firewall
2023-07-02 20:49:28 +05:00
Перезапустить фаервол :
2022-05-07 16:07:55 +05:00
fw3 restart
2023-07-02 20:49:28 +05:00
Посмотреть через iptables -nL, ip6tables -nL или через luci вкладку "firewall" появились ли нужные правила.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
ЭКОНОМИЯ МЕСТА : если его мало, то можно оставить в директории zapret лишь подкаталоги
ipset, common, файл config, init.d/openwrt.
Далее нужно создать подкаталоги с реально используемыми бинариками (ip2net, mdig, tpws, nfq)
и скопировать туда из binaries рабочие executables.
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
ЕСЛИ ВСЕ ПЛОХО С МЕСТОМ : откажитесь от работы со списком РКН. используйте только get_user.sh
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
ЕСЛИ СОВСЕМ ВСЕ УЖАСНО С МЕСТОМ : берете tpws и делаете все своими руками. поднятие iptables, автостарт бинарика.
С некоторых версий скрипты запуска zapret без ipset не работают (он требуется для ip exclude)
2022-05-07 16:07:55 +05:00
2023-07-02 20:49:28 +05:00
СОВЕТ : Покупайте только роутеры с USB. В USB можно воткнуть флэшку и вынести на нее корневую файловую систему
или использовать ее в качестве оверлея. Не надо мучать себя, запихивая незапихиваемое в 8 мб встроенной флэшки.
Для комфортной работы с zapret нужен роутер с 16 Mb встроенной памяти или USB разъемом и 128+ Mb RAM.
На 64 Mb без swap будут проблемы с листами РКН. Если у вас только 64 Mb, и вы хотите листы РКН, подключите swap.
32 Mb для современных версий openwrt - конфигурация на грани живучести. Возможны хаотические падения процессов в oom.
Работа с листами РКН невозможна в принципе.
2022-05-07 16:07:55 +05:00