Compare commits

...

13 Commits

Author SHA1 Message Date
MAXIMILI
9e641f1ca1
Merge 6695245357 into abe507c9c3 2024-11-07 20:49:23 +00:00
maximilionus
6695245357 docs: quickstart, bsd fix formatting and structure 2024-11-07 23:48:05 +03:00
maximilionus
ca39017d10 docs: Fix bsd structure issues 2024-11-07 21:04:02 +03:00
maximilionus
7129923a70 docs: Fix formatting of bsd footer 2024-11-07 19:53:17 +03:00
maximilionus
9f1687ffec docs: Add TOC to bsd.md 2024-11-07 19:46:23 +03:00
bol-van
abe507c9c3
Merge pull request #726 from spvkgn/fix-actions
github: set env variable for directory name
2024-11-07 14:54:51 +03:00
spvkgn
fa1430b604 github: set env variable for directory name 2024-11-07 16:43:31 +05:00
bol-van
a5e6b20e71 git build: rename directory to zapret-<tag> 2024-11-07 12:50:09 +03:00
bol-van
b79d8becd3
Merge pull request #721 from spvkgn/actions
github: Add Actions builder
2024-11-07 11:31:56 +03:00
spvkgn
6250a26127 github: Add Actions builder 2024-11-06 20:55:57 +05:00
bol-van
db0caf7d58 install_easy.sh: allow to download lists in autohostlist filter mode 2024-11-06 16:18:41 +03:00
bol-van
34c6c5e9ba installer.sh: minor fix 2024-11-06 15:57:21 +03:00
bol-van
868d115c5d uninstall_easy: offer to remove deps in openwrt 2024-11-06 13:19:55 +03:00
7 changed files with 453 additions and 28 deletions

379
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,379 @@
name: build
run-name: ${{ startsWith(github.ref, 'refs/tags/v') && format('Release {0}', github.ref_name) || null }}
on:
workflow_dispatch:
push:
tags:
- v[0-9]+*
# branches:
# - master
# paths:
# - 'ip2net/**'
# - 'mdig/**'
# - 'nfq/**'
# - 'tpws/**'
jobs:
build-linux:
name: Linux ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- arch: arm64
tool: aarch64-unknown-linux-musl
- arch: arm
tool: arm-unknown-linux-musleabi
# - arch: armhf
# tool: arm-unknown-linux-musleabihf
# - arch: armv7
# tool: armv7-unknown-linux-musleabi
# - arch: armv7hf
# tool: armv7-unknown-linux-musleabihf
# - arch: mips64el
# tool: mips64el-unknown-linux-musl
- arch: mips64
tool: mips64-unknown-linux-musl
# - arch: mipsel
# tool: mipsel-unknown-linux-musl
- arch: mipselsf
tool: mipsel-unknown-linux-muslsf
# - arch: mips
# tool: mips-unknown-linux-musl
- arch: mipssf
tool: mips-unknown-linux-muslsf
# - arch: ppc64
# tool: powerpc64-unknown-linux-musl
- arch: ppc
tool: powerpc-unknown-linux-musl
- arch: x86
tool: i586-unknown-linux-musl
- arch: x86_64
tool: x86_64-unknown-linux-musl
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: zapret
- name: Set up build tools
env:
REPO: 'spvkgn/musl-cross'
TOOL: ${{ matrix.tool }}
run: |
sudo apt update -qq && sudo apt install -y libcap-dev
mkdir -p $HOME/tools
wget -qO- https://github.com/$REPO/releases/download/latest/$TOOL.tar.xz | tar -C $HOME/tools -xJ || exit 1
[ -d "$HOME/tools/$TOOL/bin" ] && echo "$HOME/tools/$TOOL/bin" >> $GITHUB_PATH
- name: Build
env:
ARCH: ${{ matrix.arch }}
TARGET: ${{ matrix.tool }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
DEPS_DIR=$GITHUB_WORKSPACE/deps
export CC="$TARGET-gcc"
export LD=$TARGET-ld
export AR=$TARGET-ar
export NM=$TARGET-nm
export STRIP=$TARGET-strip
export PKG_CONFIG_PATH=$DEPS_DIR/lib/pkgconfig
# optimize for size
export CFLAGS="-Os -flto=auto"
export LDFLAGS="-Os"
# netfilter libs
git clone --depth 1 -b libmnl-1.0.5 git://git.netfilter.org/libmnl
git clone --depth 1 -b libnfnetlink-1.0.2 git://git.netfilter.org/libnfnetlink
git clone --depth 1 -b libnetfilter_queue-1.0.5 git://git.netfilter.org/libnetfilter_queue
for i in libmnl libnfnetlink libnetfilter_queue ; do
(
cd $i
./autogen.sh && \
./configure --prefix= --host=$TARGET --enable-static --disable-shared && \
make install -j$(nproc) DESTDIR=$DEPS_DIR
)
sed -i "s|^prefix=.*|prefix=$DEPS_DIR|g" $DEPS_DIR/lib/pkgconfig/$i.pc
done
# zlib
gh api repos/madler/zlib/releases/latest --jq '.tag_name' |\
xargs -I{} wget -qO- https://github.com/madler/zlib/archive/refs/tags/{}.tar.gz | tar -xz
(
cd zlib-*
./configure --prefix= --static && \
make install -j$(nproc) DESTDIR=$DEPS_DIR
)
# headers
# wget https://git.alpinelinux.org/aports/plain/main/bsd-compat-headers/queue.h && \
# wget https://git.kernel.org/pub/scm/libs/libcap/libcap.git/plain/libcap/include/sys/capability.h && \
install -Dm644 -t $DEPS_DIR/include/sys /usr/include/x86_64-linux-gnu/sys/queue.h /usr/include/sys/capability.h
# zapret
CFLAGS="$CFLAGS -static-libgcc -static -I$DEPS_DIR/include" \
LDFLAGS="$LDFLAGS -L$DEPS_DIR/lib" \
make -C zapret -j$(nproc)
tar -C zapret/binaries/my -cJf zapret-linux-$ARCH.tar.xz .
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: zapret-linux-${{ matrix.arch }}
path: zapret-*.tar.xz
if-no-files-found: error
build-macos:
name: macOS
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build zapret
run: |
make mac -j$(sysctl -n hw.logicalcpu)
tar -C binaries/my -cJf zapret-mac-x64.tar.xz .
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: zapret-mac-x64
path: zapret-*.tar.xz
if-no-files-found: error
build-freebsd:
name: FreeBSD ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
matrix:
include:
- target: x86_64
arch: x86_64
# - target: i386
# arch: x86
container:
image: empterdose/freebsd-cross-build:11.4
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install packages
run: apk add tar xz
- name: Build zapret
env:
TARGET: ${{ matrix.target }}
ARCH: ${{ matrix.arch }}
run: |
settarget $TARGET-freebsd11 make bsd -j$(nproc) || exit 1
tar -C binaries/my -cJf zapret-freebsd-$ARCH.tar.xz .
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: zapret-freebsd-${{ matrix.arch }}
path: zapret-*.tar.xz
if-no-files-found: error
build-windows:
name: Windows ${{ matrix.arch }}
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
arch: [ x86_64, x86 ]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: zapret
- name: Set up MinGW
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.arch == 'x86_64' && 'MINGW64' || 'MINGW32' }}
install: >-
${{ matrix.arch == 'x86_64' && 'mingw-w64-x86_64-toolchain' || 'mingw-w64-i686-toolchain' }}
- name: Build ip2net, mdig
shell: msys2 {0}
run: |
mkdir -p output
cd zapret
mingw32-make -C ip2net win
mingw32-make -C mdig win
cp -a {ip2net/ip2net,mdig/mdig}.exe ../output
- name: Restore psmisc from cache
id: cache-restore-psmisc
uses: actions/cache/restore@v4
with:
path: ${{ github.workspace }}/psmisc
key: psmisc-${{ matrix.arch }}
- name: Set up Cygwin
env:
PACKAGES: ${{ steps.cache-restore-psmisc.outputs.cache-hit != 'true' && 'cygport gettext-devel libiconv-devel libncurses-devel' || null }}
uses: cygwin/cygwin-install-action@v4
with:
platform: ${{ matrix.arch }}
site: ${{ matrix.arch == 'x86_64' && 'http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2024/01/30/231215' || null }}
check-sig: ${{ matrix.arch == 'x86_64' && 'false' || null }}
packages: >-
gcc-core
make
zlib-devel
zip
unzip
wget
${{ env.PACKAGES }}
- name: Build psmisc
if: steps.cache-restore-psmisc.outputs.cache-hit != 'true'
env:
URL: https://mirrors.kernel.org/sourceware/cygwin/x86_64/release/psmisc
shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}'
run: >-
export MAKEFLAGS=-j$(nproc) &&
mkdir -p psmisc && cd psmisc &&
wget -qO- ${URL} | grep -Po 'href=\"\Kpsmisc-(\d+\.)+\d+.+src\.tar\.xz(?=\")' | xargs -I{} wget -O- ${URL}/{} | tar -xJ &&
cd psmisc-*.src &&
echo CYGCONF_ARGS+=\" --disable-dependency-tracking --disable-nls\" >> psmisc.cygport &&
cygport psmisc.cygport prep compile install
- name: Save psmisc to cache
if: steps.cache-restore-psmisc.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/psmisc
key: psmisc-${{ matrix.arch }}
- name: Build winws
env:
TARGET: ${{ matrix.arch == 'x86_64' && 'cygwin' || 'cygwin32' }}
shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}'
run: >-
export MAKEFLAGS=-j$(nproc) &&
cd zapret &&
make -C nfq ${TARGET} &&
cp -a nfq/winws.exe ../output
- name: Create zip
env:
BITS: ${{ matrix.arch == 'x86_64' && '64' || '32' }}
DIR: ${{ matrix.arch == 'x86_64' && 'x64' || 'x86' }}
shell: C:\cygwin\bin\bash.exe -e '{0}'
run: >-
cp -a -t output psmisc/psmisc-*.src/psmisc-*/inst/usr/bin/killall.exe /usr/bin/cygwin1.dll &&
wget -O WinDivert.zip https://github.com/basil00/WinDivert/releases/download/v2.2.2/WinDivert-2.2.2-A.zip &&
unzip -j WinDivert.zip "*/${DIR}/WinDivert.dll" "*/${DIR}/WinDivert${BITS}.sys" -d output &&
zip zapret-win-${{ matrix.arch }}.zip -j output/*
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: zapret-win-${{ matrix.arch }}
path: zapret-*.zip
if-no-files-found: error
release:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
needs: [ build-linux, build-windows, build-macos, build-freebsd ]
permissions:
contents: write
runs-on: ubuntu-latest
env:
repo_dir: zapret-${{ github.ref_name }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: ${{ env.repo_dir }}
- name: Download artifacts
uses: actions/download-artifact@v4
id: bins
with:
path: ${{ env.repo_dir }}/binaries
pattern: zapret-*
- name: Install upx
uses: crazy-max/ghaction-upx@v3
with:
install-only: true
- name: Prepare binaries
shell: bash
run: |
cd ${{ steps.bins.outputs.download-path }}
run_upx() {
upx --best --lzma $@ || true
}
run_dir() {
for f in $dir/* ; do
# extract binaries
case $f in
*.tar.xz )
tar -C $dir -xvf $f && rm $f
if [[ $dir == *-linux-x86_64 ]]; then
tar -C $dir -czvf $dir/tpws_wsl.tgz tpws
run_upx $dir/*
elif [[ $dir =~ linux ]] && [[ $dir != *-linux-mips64 ]]; then
run_upx $dir/*
fi
;;
*.zip )
unzip $f -d $dir && rm $f
if [[ $dir =~ win ]]; then
chmod -x $dir/*
run_upx --force $dir/cygwin1.dll
fi
;;
esac
done
mv $dir $1
}
for dir in * ; do
if [ -d $dir ]; then
echo "Processing $dir"
case $dir in
*-freebsd-x86_64 ) run_dir freebsd-x64 ;;
*-linux-arm ) run_dir arm ;;
*-linux-arm64 ) run_dir aarch64 ;;
*-linux-mips64 ) run_dir mips64r2-msb ;;
*-linux-mipselsf ) run_dir mips32r1-lsb ;;
*-linux-mipssf ) run_dir mips32r1-msb ;;
*-linux-ppc ) run_dir ppc ;;
*-linux-x86 ) run_dir x86 ;;
*-linux-x86_64 ) run_dir x86_64 ;;
*-mac-x64 ) run_dir mac64 ;;
*-win-x86 ) run_dir win32 ;;
*-win-x86_64 ) run_dir win64 ;;
esac
fi
done
ls -lhR
- name: Create release bundles
run: |
rm -rf ${{ env.repo_dir }}/.git*
tar -czf ${{ env.repo_dir }}.tar.gz ${{ env.repo_dir }}
zip -qr ${{ env.repo_dir }}.zip ${{ env.repo_dir }}
- name: Upload release assets
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
prerelease: false
draft: false
body: |
### zapret ${{ github.ref_name }}
files: |
zapret*.tar.gz
zapret*.zip

View File

@ -682,6 +682,20 @@ check_prerequisites_linux()
fi fi
} }
removable_pkgs_openwrt()
{
PKGS="iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptables-mod-ipopt iptables-mod-conntrack-extra ip6tables-mod-nat ip6tables-extra kmod-nft-queue gzip coreutils-sort coreutils-sleep curl"
}
remove_extra_pkgs_openwrt()
{
local PKGS
echo \* remove dependencies
removable_pkgs_openwrt
echo these packages may have been installed by install_easy.sh : $PKGS
ask_yes_no N "do you want to remove them" && opkg remove --autoremove $PKGS
}
check_prerequisites_openwrt() check_prerequisites_openwrt()
{ {
echo \* checking prerequisites echo \* checking prerequisites

View File

@ -1,5 +1,38 @@
# Настройка BSD-подобных систем # Настройка BSD-подобных систем
* [Поддерживаемые версии](#поддерживаемые-версии)
* [Особенности BSD систем](#особенности-bsd-систем)
* [Отсутствие nfqueue](#отсутствие-nfqueue)
* [Типы Firewall](#типы-firewall)
* [Сборка](#сборка)
* [Divert сокеты](#divert-сокеты)
* [Lookup Tables](#lookup-tables)
* [Загрузка ip таблиц из файла](#загрузка-ip-таблиц-из-файла)
* [Отсутствие splice](#отсутствие-splice)
* [mdig и ip2net](#mdig-и-ip2net)
* [FreeBSD](#freebsd)
* [Подгрузка ipdivert](#подгрузка-ipdivert)
* [Авто-восстановление правил ipfw и работа в фоне](#авто-восстановление-правил-ipfw-и-работа-в-фоне)
* [tpws в прозрачном режиме](#tpws-в-прозрачном-режиме)
* [Запуск dvtws](#запуск-dvtws)
* [PF в FreeBSD](#pf-в-freebsd)
* [pfsense](#pfsense)
* [OpenBSD](#openbsd)
* [tpws бинд на ipv4](#tpws-бинд-на-ipv4)
* [tpws для проходящего трафика](#tpws-для-проходящего-трафика)
* [Запуск dvtws](#запуск-dvtws)
* [Проблемы с badsum](#проблемы-с-badsum)
* [Особенность отправки fake пакетов](#особенность-отправки-fake-пакетов)
* [Перезагрузка PF таблиц](#перезагрузка-pf-таблиц)
* [MacOS](#macos)
* [Введение](#введение)
* [dvtws бесполезен](#dvtws-бесполезен)
* [tpws](#tpws)
* [Проблема link-local адреса](#проблема-link-local-адреса)
* [Сборка](#сборка)
* [Простая установка](#простая-установка)
* [Вариант Custom](#вариант-custom)
## Поддерживаемые версии ## Поддерживаемые версии
**FreeBSD** 11.x+ , **OpenBSD** 6.x+, частично **MacOS Sierra** + **FreeBSD** 11.x+ , **OpenBSD** 6.x+, частично **MacOS Sierra** +
@ -13,6 +46,7 @@
## Особенности BSD систем ## Особенности BSD систем
### Отсутствие nfqueue ### Отсутствие nfqueue
В **BSD** нет `nfqueue`. Похожий механизм - divert sockets. Из каталога В **BSD** нет `nfqueue`. Похожий механизм - divert sockets. Из каталога
[`nfq/`](../nfq/) под **BSD** собирается `dvtws` вместо `nfqws`. Он разделяет с [`nfq/`](../nfq/) под **BSD** собирается `dvtws` вместо `nfqws`. Он разделяет с
@ -64,7 +98,7 @@ tables. Это прямой аналог ipset. lookup tables не раздел
выполняется команда из `LISTS_RELOAD`. В противном случае не делается ничего. выполняется команда из `LISTS_RELOAD`. В противном случае не делается ничего.
Если `LISTS_RELOAD=-`, то заполнение таблиц отключается даже при наличии ipfw. Если `LISTS_RELOAD=-`, то заполнение таблиц отключается даже при наличии ipfw.
### PF с файла ### Загрузка ip таблиц из файла
PF может загружать ip таблицы из файла. Чтобы использовать эту возможность PF может загружать ip таблицы из файла. Чтобы использовать эту возможность
следует отключить сжатие gzip для листов через параметр файла config: следует отключить сжатие gzip для листов через параметр файла config:
`GZIP_LISTS=0`. `GZIP_LISTS=0`.
@ -76,12 +110,13 @@ PF может загружать ip таблицы из файла. Чтобы
**BSD** для его эмуляции используется epoll-shim - прослойка для эмуляции epoll **BSD** для его эмуляции используется epoll-shim - прослойка для эмуляции epoll
на базе kqueue. на базе kqueue.
### mdig, ip2net ### mdig и ip2net
mdig и ip2net полностью работоспособны в **BSD**. В них нет ничего mdig и ip2net полностью работоспособны в **BSD**. В них нет ничего
системо-зависимого. системо-зависимого.
## FreeBSD ## FreeBSD
### Подгрузка ipdivert ### Подгрузка ipdivert
Divert сокеты требуют специального модуля ядра - `ipdivert`. Divert сокеты требуют специального модуля ядра - `ipdivert`.
@ -132,8 +167,7 @@ $ ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1
$ /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 $ /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1
``` ```
#### Трафик только на таблицу zapret #### Трафик только на таблицу zapret, за исключением таблицы nozapret
> За исключением таблицы nozapret
```sh ```sh
$ ipfw delete 100 $ ipfw delete 100
@ -178,8 +212,7 @@ $ ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not div
$ /opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 $ /opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2
``` ```
#### Трафик только на таблицу zapret #### Трафик только на таблицу zapret, за исключением таблицы nozapret
> За исключением таблицы nozapret
```sh ```sh
$ ipfw delete 100 $ ipfw delete 100
@ -223,23 +256,22 @@ $ /opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2
### pfsense ### pfsense
#### Что это #### Описание
pfsense основан на **FreeBSD** и использует фаервол PF, имеющий проблемы с pfsense основан на **FreeBSD** и использует фаервол PF, имеющий проблемы с
divert. К счастью, модули ipfw и ipdivert присутствуют в поставке последних divert. К счастью, модули ipfw и ipdivert присутствуют в поставке последних
версий pfsense. Их можно подгрузить через `kldload`. версий pfsense. Их можно подгрузить через `kldload`.
#### Особенности
В некоторых более старых версиях pfsense требуется изменить порядок фаерволов В некоторых более старых версиях pfsense требуется изменить порядок фаерволов
через `sysctl`, сделав ipfw первым. В более новых эти параметры `sysctl` через `sysctl`, сделав ipfw первым. В более новых эти параметры `sysctl`
отсутствуют, но система работает как надо и без них. В некоторых случаях отсутствуют, но система работает как надо и без них. В некоторых случаях
фаервол PF может ограничивать возможности `dvtws`, в частности в области фаервол PF может ограничивать возможности `dvtws`, в частности в области
фрагментации ip. фрагментации ip.
#### Исполняемые файлы Присутствуют по умолчанию правила scrub для реассемблинга фрагментов.
Присутствуют по умолчанию правила scrub для реассемблинга фрагментов. Бинарики
из [`binaries/freebsd-x64`](../binaries/freebsd-x64) собраны под **FreeBSD Бинарики из [`binaries/freebsd-x64`](../binaries/freebsd-x64) собраны под
11**. Они должны работать и на последующих версиях **FreeBSD**, включая **FreeBSD 11**. Они должны работать и на последующих версиях **FreeBSD**,
pfsense. Можно пользоваться `install_bin.sh`. включая pfsense. Можно пользоваться `install_bin.sh`.
#### Автозапуск #### Автозапуск
Пример скрипта автозапуска лежит в [`init.d/pfsense`](../init.d/pfsense). Его Пример скрипта автозапуска лежит в [`init.d/pfsense`](../init.d/pfsense). Его
@ -377,7 +409,7 @@ $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1
> `/dev/pf`, поэтому прозрачный режим **требует root**. > `/dev/pf`, поэтому прозрачный режим **требует root**.
### Запуск `dvtws` ### Запуск dvtws
#### Весь трафик #### Весь трафик
`/etc/pf.conf`: `/etc/pf.conf`:
@ -392,8 +424,7 @@ $ pfctl -f /etc/pf.conf
$ ./dvtws --port=989 --dpi-desync=split2 $ ./dvtws --port=989 --dpi-desync=split2
``` ```
#### Трафик только на таблицу zapret #### Трафик только на таблицу zapret, за исключением таблицы nozapret
> За исключением таблицы nozapret
`/etc/pf.conf`: `/etc/pf.conf`:
``` ```
@ -438,8 +469,6 @@ $ ./dvtws --port=989 --dpi-desync=split2
предотвращает повторный заворот diverted фреймов, поэтому проблемы зацикливания предотвращает повторный заворот diverted фреймов, поэтому проблемы зацикливания
нет. нет.
### Возможная оптимизация трафика
divert-packet автоматически вносит обратное правило для перенаправления. Трюк с divert-packet автоматически вносит обратное правило для перенаправления. Трюк с
no state и in правилом позволяет обойти эту проблему, чтобы напрасно не гнать no state и in правилом позволяет обойти эту проблему, чтобы напрасно не гнать
массивный трафик через `dvtws`. массивный трафик через `dvtws`.
@ -481,6 +510,7 @@ $ pfctl -Tl -f /etc/pf.conf
## MacOS ## MacOS
### Введение ### Введение
Иначально ядро этой ОС "darwin" основывалось на **BSD**, потому в ней много Иначально ядро этой ОС "darwin" основывалось на **BSD**, потому в ней много
похожего на другие версии **BSD**. Однако, как и в других массовых коммерческих похожего на другие версии **BSD**. Однако, как и в других массовых коммерческих
@ -584,12 +614,6 @@ local. Скрывать link local не имеет смысла, а динами
$ make -C /opt/zapret mac $ make -C /opt/zapret mac
``` ```
> [!IMPORTANT]
> Скрипты получения листов [`ipset/*.sh`](../ipset/) работают. Если будете
> пользоваться [`get_combined.sh`](../ipset/get_combined.sh), нужно установить
> GNU grep через `brew`. Имеющийся очень старый и безумно медленный с оцией
> `-f`.
### Простая установка ### Простая установка
В **MacOS** поддерживается `install_easy.sh` В **MacOS** поддерживается `install_easy.sh`
@ -631,6 +655,7 @@ $ /opt/zapret/init.d/macos/zapret restart
$ /opt/zapret/init.d/macos/zapret start-daemons $ /opt/zapret/init.d/macos/zapret start-daemons
$ /opt/zapret/init.d/macos/zapret stop-daemons $ /opt/zapret/init.d/macos/zapret stop-daemons
$ /opt/zapret/init.d/macos/zapret restart-daemons $ /opt/zapret/init.d/macos/zapret restart-daemons
```
Работа только с PF: Работа только с PF:
```sh ```sh
@ -693,7 +718,7 @@ custom firewall отличается от linux варианта. Вместо
нужно сгенерировать правила для `zapret-v4` и `zapret-v6` anchors и выдать их в нужно сгенерировать правила для `zapret-v4` и `zapret-v6` anchors и выдать их в
stdout. Это делается в функциях `zapret_custom_firewall_v4()` и stdout. Это делается в функциях `zapret_custom_firewall_v4()` и
`zapret_custom_firewall_v6()`. Определения таблиц заполняются основным скриптом `zapret_custom_firewall_v6()`. Определения таблиц заполняются основным скриптом
- вам это делать не нужно. Можно ссылаться на таблицы `zapret` и `zapret-user` \- вам это делать не нужно. Можно ссылаться на таблицы `zapret` и `zapret-user`
в v4, `zapret6` и `zapret6-user`. в v4, `zapret6` и `zapret6-user`.
Cм. пример [в файле](../init.d/macos/custom.d.examples/50-extra-tpws). Cм. пример [в файле](../init.d/macos/custom.d.examples/50-extra-tpws).

View File

@ -359,3 +359,7 @@ blockcheck: do not require root if SKIP_PKTWS=1
v68: v68:
readme.md : move russian version to markdown readme.md : move russian version to markdown
nfqws,tpws: use alternate $ sign for $<config_file>
repo: binaries removed from repo. git actions binaries build in releases.
uninstall_easy.sh: offer to remove dependencies in openwrt
install_easy.sh: allow to download lists in autohostlist filter mode

View File

@ -252,4 +252,4 @@
довольно безобидные, а есть сильно ломающие, которые подходят только для довольно безобидные, а есть сильно ломающие, которые подходят только для
точечного пробития отдельных ресурсов, когда ничего лучше нет. Хорошая точечного пробития отдельных ресурсов, когда ничего лучше нет. Хорошая
стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков
- ttl, fooling. \- ttl, fooling.

View File

@ -206,12 +206,12 @@ select_mode()
select_getlist() select_getlist()
{ {
if [ "$MODE_FILTER" = "ipset" -o "$MODE_FILTER" = "hostlist" ]; then if [ "$MODE_FILTER" = "ipset" -o "$MODE_FILTER" = "hostlist" -o "$MODE_FILTER" = "autohostlist" ]; then
local D=N local D=N
[ -n "$GETLIST" ] && D=Y [ -n "$GETLIST" ] && D=Y
echo echo
if ask_yes_no $D "do you want to auto download ip/host list"; then if ask_yes_no $D "do you want to auto download ip/host list"; then
if [ "$MODE_FILTER" = "hostlist" ] ; then if [ "$MODE_FILTER" = "hostlist" -o "$MODE_FILTER" = "autohostlist" ] ; then
GETLISTS="get_refilter_domains.sh get_antizapret_domains.sh get_reestr_resolvable_domains.sh get_reestr_hostlist.sh" GETLISTS="get_refilter_domains.sh get_antizapret_domains.sh get_reestr_resolvable_domains.sh get_reestr_hostlist.sh"
GETLIST_DEF="get_antizapret_domains.sh" GETLIST_DEF="get_antizapret_domains.sh"
else else

View File

@ -72,6 +72,9 @@ remove_openwrt()
nft_del_table nft_del_table
restart_openwrt_firewall restart_openwrt_firewall
crontab_del crontab_del
remove_extra_pkgs_openwrt
echo
echo to fully remove zapret : rm -r \"$ZAPRET_BASE\"
} }
remove_macos() remove_macos()