mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-14 10:48:32 +05: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
|
tpws-socks - tpws socks mode
|
||||||
binds to localhost and LAN interface (if IFACE_LAN is specified or the system is OpenWRT). port 988
|
binds to localhost and LAN interface (if IFACE_LAN is specified or the system is OpenWRT). port 988
|
||||||
nfqws - nfqws
|
nfqws - nfqws
|
||||||
nfqws - use nfqws
|
|
||||||
|
|
||||||
filter - only fill ipset or load hostlist
|
filter - only fill ipset or load hostlist
|
||||||
custom - use custom script for running daemons and establishing firewall rules
|
custom - use custom script for running daemons and establishing firewall rules
|
||||||
|
|
||||||
|
@ -925,10 +925,6 @@ install_easy.sh автоматизирует описанные выше руч
|
|||||||
или названия пакетов не соответствуют прописанным в инсталятор, пакеты нужно установить вручную.
|
или названия пакетов не соответствуют прописанным в инсталятор, пакеты нужно установить вручную.
|
||||||
Требуется : ipset curl
|
Требуется : ipset curl
|
||||||
|
|
||||||
ВАЖНО : Хоть инсталятор и спрашивает является ли система роутером,
|
|
||||||
настройка маршрутизации , маскарада и т.д. не входит в задачу zapret.
|
|
||||||
Роутер вдруг сам волшебно не поднимется. Предполагается, что роутер вы уже настроили сами.
|
|
||||||
|
|
||||||
В комплекте идут статические бинарики для большинства архитектур. Какой-то из них подойдет
|
В комплекте идут статические бинарики для большинства архитектур. Какой-то из них подойдет
|
||||||
с вероятностью 99%. Но если у вас экзотическая система, инсталятор попробует собрать бинарики сам
|
с вероятностью 99%. Но если у вас экзотическая система, инсталятор попробует собрать бинарики сам
|
||||||
через make. Для этого нужны gcc, make и необходимые -dev пакеты. Можно форсировать режим
|
через make. Для этого нужны gcc, make и необходимые -dev пакеты. Можно форсировать режим
|
||||||
@ -936,8 +932,16 @@ install_easy.sh автоматизирует описанные выше руч
|
|||||||
|
|
||||||
install_easy.sh make
|
install_easy.sh make
|
||||||
|
|
||||||
Для MacOS готовые бинарики не поставляются, поэтому всегда выбирается вариант установки через make.
|
Под openwrt все уже сразу готово для использования системы в качестве роутера.
|
||||||
Запуск make на чистой системе вызывает автоматическую установку developer tools. В них есть все необходимое.
|
Имена интерфейсов WAN и LAN известны из настроек системы.
|
||||||
|
Под другими системами роутер вы настраиваете самостоятельно. Инсталятор в это не вмешивается.
|
||||||
|
Инсталятор в зависимости от выбранного режима может спросить LAN и WAN интерфейсы.
|
||||||
|
Нужно понимать, что заворот проходящего трафика на tpws в прозрачном режиме происходит до выполнения маршрутизаци,
|
||||||
|
следовательно возможна фильтрация по LAN и невозможна по WAN.
|
||||||
|
Решение о завороте на tpws локального исходящего трафика принимается после выполнения маршрутизации,
|
||||||
|
следовательно ситуация обратная : LAN не имеет смысла, фильтрация по WAN возможна.
|
||||||
|
Заворот на nfqws происходит всегда после маршрутизации, поэтому к нему применима только фильтрация по WAN.
|
||||||
|
Возможность прохождения трафика в том или ином направлении настраивается вами в процессе конфигурации роутера.
|
||||||
|
|
||||||
Деинсталяция выполняется через uninstall_easy.sh
|
Деинсталяция выполняется через uninstall_easy.sh
|
||||||
|
|
||||||
|
142
install_easy.sh
142
install_easy.sh
@ -23,6 +23,8 @@ DNSCHECK_DIG1=/tmp/dig1.txt
|
|||||||
DNSCHECK_DIG2=/tmp/dig2.txt
|
DNSCHECK_DIG2=/tmp/dig2.txt
|
||||||
DNSCHECK_DIGS=/tmp/digs.txt
|
DNSCHECK_DIGS=/tmp/digs.txt
|
||||||
|
|
||||||
|
[ -n "$TPPORT" ] || TPPORT=988
|
||||||
|
|
||||||
SYSTEMD_SYSTEM_DIR=/lib/systemd/system
|
SYSTEMD_SYSTEM_DIR=/lib/systemd/system
|
||||||
[ -d "$SYSTEMD_SYSTEM_DIR" ] || SYSTEMD_SYSTEM_DIR=/usr/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()
|
||||||
{
|
{
|
||||||
select_mode_mode
|
select_mode_mode
|
||||||
|
select_mode_iface
|
||||||
select_mode_http
|
select_mode_http
|
||||||
select_mode_keepalive
|
select_mode_keepalive
|
||||||
select_mode_https
|
select_mode_https
|
||||||
@ -395,24 +398,6 @@ ask_config()
|
|||||||
select_getlist
|
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()
|
ask_config_offload()
|
||||||
{
|
{
|
||||||
is_flow_offload_avail && {
|
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
|
local ifs i0 def new
|
||||||
[ -n "$IFACE_LAN" ] && T=Y
|
eval def="\$$1"
|
||||||
local old_lan=$IFACE_LAN
|
|
||||||
local old_wan=$IFACE_WAN
|
[ -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
|
echo
|
||||||
if [ "$SYSTEM" = "macos" ]; then
|
|
||||||
echo "WARNING ! OS feature \"internet sharing\" is not supported."
|
case "$MODE" in
|
||||||
echo "Only manually configured PF router is supported."
|
tpws-socks)
|
||||||
else
|
echo "select LAN interface to allow socks access from your LAN. select NONE for localhost only."
|
||||||
echo "WARNING ! This installer will not configure routing, NAT, ... for you. Its your responsibility."
|
echo "expect socks on tcp port $TPPORT"
|
||||||
fi
|
ask_iface_lan
|
||||||
if ask_yes_no $T "is this system a router"; then
|
;;
|
||||||
echo LAN interface :
|
tpws)
|
||||||
ask_iface IFACE_LAN
|
echo "select LAN interface to operate in router mode. select NONE for local outgoing traffic only."
|
||||||
echo WAN interface :
|
if [ "$SYSTEM" = "macos" ]; then
|
||||||
[ -n "$IFACE_WAN" ] || IFACE_WAN="ANY"
|
echo "WARNING ! OS feature \"internet sharing\" is not supported."
|
||||||
ask_iface IFACE_WAN "ANY"
|
echo "Only manually configured PF router is supported."
|
||||||
[ "$IFACE_WAN" = "ANY" ] && {
|
else
|
||||||
# any = not defined
|
echo "WARNING ! This installer will not configure routing, NAT, ... for you. Its your responsibility."
|
||||||
IFACE_WAN=
|
fi
|
||||||
write_config_var IFACE_WAN
|
ask_iface_lan
|
||||||
}
|
;;
|
||||||
else
|
custom)
|
||||||
[ -n "$old_lan" ] && {
|
echo "select LAN interface for your custom script (how it works depends on your code)"
|
||||||
IFACE_LAN=""
|
ask_iface_lan
|
||||||
write_config_var IFACE_LAN
|
;;
|
||||||
}
|
esac
|
||||||
[ -n "$old_wan" ] && {
|
|
||||||
IFACE_WAN=""
|
case "$MODE" in
|
||||||
write_config_var IFACE_WAN
|
tpws)
|
||||||
}
|
echo "select WAN interface for $MODE operations. select ANY to operate on any interface."
|
||||||
fi
|
[ -n "$IFACE_LAN" ] && echo "WAN filtering works only for local outgoing traffic !"
|
||||||
}
|
ask_iface_wan
|
||||||
ask_config_desktop()
|
;;
|
||||||
{
|
nfqws)
|
||||||
select_router_iface
|
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()
|
copy_all()
|
||||||
@ -843,7 +873,6 @@ install_systemd()
|
|||||||
install_binaries
|
install_binaries
|
||||||
check_dns
|
check_dns
|
||||||
select_ipv6
|
select_ipv6
|
||||||
ask_config_desktop
|
|
||||||
ask_config
|
ask_config
|
||||||
service_install_systemd
|
service_install_systemd
|
||||||
download_list
|
download_list
|
||||||
@ -1211,7 +1240,6 @@ install_macos()
|
|||||||
install_binaries
|
install_binaries
|
||||||
check_dns
|
check_dns
|
||||||
select_ipv6
|
select_ipv6
|
||||||
ask_config_desktop
|
|
||||||
ask_config
|
ask_config
|
||||||
service_install_macos
|
service_install_macos
|
||||||
macos_fw_reload_trigger_clear
|
macos_fw_reload_trigger_clear
|
||||||
|
Loading…
Reference in New Issue
Block a user