mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-30 05:50:53 +03:00
install_easy: router concept redesign on desktop systems
This commit is contained in:
parent
1222c0534b
commit
986e5a0683
@ -404,8 +404,6 @@ tpws - tpws transparent mode
|
||||
tpws-socks - tpws socks mode
|
||||
binds to localhost and LAN interface (if IFACE_LAN is specified or the system is OpenWRT). port 988
|
||||
nfqws - nfqws
|
||||
nfqws - use nfqws
|
||||
|
||||
filter - only fill ipset or load hostlist
|
||||
custom - use custom script for running daemons and establishing firewall rules
|
||||
|
||||
|
@ -925,10 +925,6 @@ install_easy.sh автоматизирует описанные выше руч
|
||||
или названия пакетов не соответствуют прописанным в инсталятор, пакеты нужно установить вручную.
|
||||
Требуется : ipset curl
|
||||
|
||||
ВАЖНО : Хоть инсталятор и спрашивает является ли система роутером,
|
||||
настройка маршрутизации , маскарада и т.д. не входит в задачу zapret.
|
||||
Роутер вдруг сам волшебно не поднимется. Предполагается, что роутер вы уже настроили сами.
|
||||
|
||||
В комплекте идут статические бинарики для большинства архитектур. Какой-то из них подойдет
|
||||
с вероятностью 99%. Но если у вас экзотическая система, инсталятор попробует собрать бинарики сам
|
||||
через make. Для этого нужны gcc, make и необходимые -dev пакеты. Можно форсировать режим
|
||||
@ -936,8 +932,16 @@ install_easy.sh автоматизирует описанные выше руч
|
||||
|
||||
install_easy.sh make
|
||||
|
||||
Для MacOS готовые бинарики не поставляются, поэтому всегда выбирается вариант установки через make.
|
||||
Запуск make на чистой системе вызывает автоматическую установку developer tools. В них есть все необходимое.
|
||||
Под openwrt все уже сразу готово для использования системы в качестве роутера.
|
||||
Имена интерфейсов WAN и LAN известны из настроек системы.
|
||||
Под другими системами роутер вы настраиваете самостоятельно. Инсталятор в это не вмешивается.
|
||||
Инсталятор в зависимости от выбранного режима может спросить LAN и WAN интерфейсы.
|
||||
Нужно понимать, что заворот проходящего трафика на tpws в прозрачном режиме происходит до выполнения маршрутизаци,
|
||||
следовательно возможна фильтрация по LAN и невозможна по WAN.
|
||||
Решение о завороте на tpws локального исходящего трафика принимается после выполнения маршрутизации,
|
||||
следовательно ситуация обратная : LAN не имеет смысла, фильтрация по WAN возможна.
|
||||
Заворот на nfqws происходит всегда после маршрутизации, поэтому к нему применима только фильтрация по WAN.
|
||||
Возможность прохождения трафика в том или ином направлении настраивается вами в процессе конфигурации роутера.
|
||||
|
||||
Деинсталяция выполняется через uninstall_easy.sh
|
||||
|
||||
|
130
install_easy.sh
130
install_easy.sh
@ -23,6 +23,8 @@ DNSCHECK_DIG1=/tmp/dig1.txt
|
||||
DNSCHECK_DIG2=/tmp/dig2.txt
|
||||
DNSCHECK_DIGS=/tmp/digs.txt
|
||||
|
||||
[ -n "$TPPORT" ] || TPPORT=988
|
||||
|
||||
SYSTEMD_SYSTEM_DIR=/lib/systemd/system
|
||||
[ -d "$SYSTEMD_SYSTEM_DIR" ] || SYSTEMD_SYSTEM_DIR=/usr/lib/systemd/system
|
||||
|
||||
@ -346,6 +348,7 @@ select_mode_filter()
|
||||
select_mode()
|
||||
{
|
||||
select_mode_mode
|
||||
select_mode_iface
|
||||
select_mode_http
|
||||
select_mode_keepalive
|
||||
select_mode_https
|
||||
@ -395,24 +398,6 @@ ask_config()
|
||||
select_getlist
|
||||
}
|
||||
|
||||
ask_iface()
|
||||
{
|
||||
# $1 - var to ask
|
||||
# $2 - additional name (<any>)
|
||||
|
||||
local ifs i0
|
||||
[ -n "$2" ] && i0="$2 "
|
||||
case $SYSTEM in
|
||||
macos)
|
||||
ifs="$(ifconfig -l)"
|
||||
;;
|
||||
*)
|
||||
ifs="$(ls /sys/class/net)"
|
||||
;;
|
||||
esac
|
||||
ask_list $1 "$i0$ifs" && write_config_var $1
|
||||
}
|
||||
|
||||
ask_config_offload()
|
||||
{
|
||||
is_flow_offload_avail && {
|
||||
@ -460,47 +445,92 @@ ask_config_tmpdir()
|
||||
}
|
||||
}
|
||||
|
||||
select_router_iface()
|
||||
ask_iface()
|
||||
{
|
||||
# $1 - ask iface function name
|
||||
# $1 - var to ask
|
||||
# $2 - additional name for empty string synonim
|
||||
|
||||
local T=N
|
||||
[ -n "$IFACE_LAN" ] && T=Y
|
||||
local old_lan=$IFACE_LAN
|
||||
local old_wan=$IFACE_WAN
|
||||
local ifs i0 def new
|
||||
eval def="\$$1"
|
||||
|
||||
[ -n "$2" ] && i0="$2 "
|
||||
case $SYSTEM in
|
||||
macos)
|
||||
ifs="$(ifconfig -l)"
|
||||
;;
|
||||
*)
|
||||
ifs="$(ls /sys/class/net)"
|
||||
;;
|
||||
esac
|
||||
[ -z "$def" ] && eval $1="$2"
|
||||
ask_list $1 "$i0$ifs" && {
|
||||
eval new="\$$1"
|
||||
[ "$new" = "$2" ] && eval $1=""
|
||||
write_config_var $1
|
||||
}
|
||||
}
|
||||
ask_iface_lan()
|
||||
{
|
||||
echo LAN interface :
|
||||
ask_iface IFACE_LAN "NONE"
|
||||
}
|
||||
ask_iface_wan()
|
||||
{
|
||||
echo WAN interface :
|
||||
ask_iface IFACE_WAN "ANY"
|
||||
}
|
||||
|
||||
select_mode_iface()
|
||||
{
|
||||
# openwrt has its own interface management scheme
|
||||
# filter just creates ip tables, no daemons involved
|
||||
# nfqws sits in POSTROUTING chain and unable to filter by incoming interface
|
||||
# tpws redirection works in PREROUTING chain
|
||||
# in tpws-socks mode IFACE_LAN specifies additional bind interface for the socks listener
|
||||
# it's not possible to instruct tpws to route outgoing connection to an interface (OS routing table decides)
|
||||
# custom mode can also benefit from interface names (depends on custom script code)
|
||||
|
||||
if [ "$SYSTEM" = "openwrt" ] || [ "$MODE" = "filter" ]; then return; fi
|
||||
|
||||
echo
|
||||
|
||||
case "$MODE" in
|
||||
tpws-socks)
|
||||
echo "select LAN interface to allow socks access from your LAN. select NONE for localhost only."
|
||||
echo "expect socks on tcp port $TPPORT"
|
||||
ask_iface_lan
|
||||
;;
|
||||
tpws)
|
||||
echo "select LAN interface to operate in router mode. select NONE for local outgoing traffic only."
|
||||
if [ "$SYSTEM" = "macos" ]; then
|
||||
echo "WARNING ! OS feature \"internet sharing\" is not supported."
|
||||
echo "Only manually configured PF router is supported."
|
||||
else
|
||||
echo "WARNING ! This installer will not configure routing, NAT, ... for you. Its your responsibility."
|
||||
fi
|
||||
if ask_yes_no $T "is this system a router"; then
|
||||
echo LAN interface :
|
||||
ask_iface IFACE_LAN
|
||||
echo WAN interface :
|
||||
[ -n "$IFACE_WAN" ] || IFACE_WAN="ANY"
|
||||
ask_iface IFACE_WAN "ANY"
|
||||
[ "$IFACE_WAN" = "ANY" ] && {
|
||||
# any = not defined
|
||||
IFACE_WAN=
|
||||
write_config_var IFACE_WAN
|
||||
}
|
||||
else
|
||||
[ -n "$old_lan" ] && {
|
||||
IFACE_LAN=""
|
||||
write_config_var IFACE_LAN
|
||||
}
|
||||
[ -n "$old_wan" ] && {
|
||||
IFACE_WAN=""
|
||||
write_config_var IFACE_WAN
|
||||
}
|
||||
fi
|
||||
}
|
||||
ask_config_desktop()
|
||||
{
|
||||
select_router_iface
|
||||
ask_iface_lan
|
||||
;;
|
||||
custom)
|
||||
echo "select LAN interface for your custom script (how it works depends on your code)"
|
||||
ask_iface_lan
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$MODE" in
|
||||
tpws)
|
||||
echo "select WAN interface for $MODE operations. select ANY to operate on any interface."
|
||||
[ -n "$IFACE_LAN" ] && echo "WAN filtering works only for local outgoing traffic !"
|
||||
ask_iface_wan
|
||||
;;
|
||||
nfqws)
|
||||
echo "select WAN interface for $MODE operations. select ANY to operate on any interface."
|
||||
ask_iface_wan
|
||||
;;
|
||||
custom)
|
||||
echo "select WAN interface for your custom script (how it works depends on your code)"
|
||||
ask_iface_wan
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
copy_all()
|
||||
@ -843,7 +873,6 @@ install_systemd()
|
||||
install_binaries
|
||||
check_dns
|
||||
select_ipv6
|
||||
ask_config_desktop
|
||||
ask_config
|
||||
service_install_systemd
|
||||
download_list
|
||||
@ -1211,7 +1240,6 @@ install_macos()
|
||||
install_binaries
|
||||
check_dns
|
||||
select_ipv6
|
||||
ask_config_desktop
|
||||
ask_config
|
||||
service_install_macos
|
||||
macos_fw_reload_trigger_clear
|
||||
|
Loading…
Reference in New Issue
Block a user