mirror of
https://github.com/gSpotx2f/ruantiblock_openwrt.git
synced 2026-05-14 22:50:58 +00:00
Added IGNORE_LOCAL_IP option.
This commit is contained in:
@@ -36,6 +36,8 @@ export PROXY_MODE=1
|
||||
export PROXY_LOCAL_CLIENTS=0
|
||||
### Удаление записей сетов перед началом обновления (для освобождения оперативной памяти перед обновлением сетов) (0 - выкл, 1 - вкл)
|
||||
export NFTSET_CLEAR_SETS=0
|
||||
### Искоючить из обхода блокировок пакеты, у которых адрес назначения совпадает с любым IP адресом любого из интерфейсов роутера (0 - выкл, 1 - вкл)
|
||||
export IGNORE_LOCAL_IP=1
|
||||
### Режим фильтра хостов которым разрешено обходить блокировки (0 - выкл., 1 - только адреса из списка, 2 - любые адреса кроме присутствующих в списке)
|
||||
export ALLOWED_HOSTS_MODE=0
|
||||
### Список IP адресов хостов для фильтра, через пробел (прим.: 192.168.0.10 192.168.0.15)
|
||||
@@ -117,7 +119,7 @@ export ENABLE_FPROXY=0
|
||||
### Список IP адресов хостов для режима полного прокси, через пробел (прим.: 192.168.0.10 192.168.0.15)
|
||||
export FPROXY_LIST=""
|
||||
### Список приватных сетей для режима полного прокси, через пробел
|
||||
export FPROXY_PRIVATE_NETS="192.168.0.0/16 172.16.0.0/12 10.0.0.0/8"
|
||||
export FPROXY_PRIVATE_NETS="192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 100.64.0.0/10 169.254.0.0/16"
|
||||
### Режим безопасного обновления блэклиста. Скачивание во временный файл и затем замена основного. Увеличивает потребление памяти (0 - выкл, 1 - вкл)
|
||||
export ENABLE_TMP_DOWNLOADS=0
|
||||
### Скачивать блэклисты через прокси
|
||||
@@ -260,21 +262,23 @@ export IP_DATA_FILE_BYPASS="${DATA_DIR}/${NAME}_bypass.ip"
|
||||
export IP_DATA_FILE_USER_INSTANCES="${DATA_DIR}/${NAME}_user_instances.ip"
|
||||
export NFT_TABLE="ip r"
|
||||
export NFT_TABLE_DNSMASQ="4#ip#r"
|
||||
export NFTSET_LOCAL_IP="local_ip"
|
||||
export NFTSET_ALLOWED_HOSTS="allowed_ip"
|
||||
export NFTSET_BYPASS_IP="bi"
|
||||
export NFTSET_BYPASS_FQDN="bd"
|
||||
export NFTSET_FPROXY="fproxy"
|
||||
export NFTSET_FPROXY_PRIVATE="fproxy_private"
|
||||
export NFTSET_FPROXY_LOCAL="fproxy_local"
|
||||
export NFTSET_BLLIST_PROXY="bllist_proxy"
|
||||
export NFTSET_ONION="onion"
|
||||
export NFTSET_CIDR="c"
|
||||
export NFTSET_IP="i"
|
||||
export NFTSET_DNSMASQ="d"
|
||||
export NFTSET_LOCAL_IP_TYPE="ipv4_addr"
|
||||
export NFTSET_ALLOWED_HOSTS_TYPE="ipv4_addr"
|
||||
export NFTSET_BYPASS_IP_TYPE="ipv4_addr"
|
||||
export NFTSET_BYPASS_FQDN_TYPE="ipv4_addr"
|
||||
export NFTSET_FPROXY_TYPE="ipv4_addr"
|
||||
export NFTSET_FPROXY_PRIVATE_TYPE="ipv4_addr"
|
||||
export NFTSET_FPROXY_LOCAL_TYPE="ipv4_addr"
|
||||
export NFTSET_BLLIST_PROXY_TYPE="ipv4_addr"
|
||||
export NFTSET_CIDR_TYPE="ipv4_addr"
|
||||
export NFTSET_IP_TYPE="ipv4_addr"
|
||||
@@ -460,8 +464,26 @@ FormatNftSetElemsList() {
|
||||
printf "$1" | $AWK_CMD '{gsub(/[ ]+/, ",", $0); printf $0;}'
|
||||
}
|
||||
|
||||
UpdateLocalIpSets() {
|
||||
local _local_ips _fproxy_private
|
||||
_local_ips=$($IP_CMD -4 addr list 2> /dev/null | $AWK_CMD '/inet/{if($2 !~ /^(127|0)/) printf $2 ","}')
|
||||
FlushNftSets "$NFTSET_LOCAL_IP"
|
||||
if [ -n "$_local_ips" ]; then
|
||||
$NFT_CMD add element $NFT_TABLE "$NFTSET_LOCAL_IP" { "$_local_ips" }
|
||||
fi
|
||||
FlushNftSets "$NFTSET_FPROXY_LOCAL"
|
||||
_fproxy_private=$(FormatNftSetElemsList "$FPROXY_PRIVATE_NETS")
|
||||
if [ -n "$_fproxy_private" ]; then
|
||||
$NFT_CMD add element $NFT_TABLE "$NFTSET_FPROXY_LOCAL" { "$_fproxy_private" }
|
||||
fi
|
||||
if [ -n "$_local_ips" ]; then
|
||||
$NFT_CMD add element $NFT_TABLE "$NFTSET_FPROXY_LOCAL" { "$_local_ips" }
|
||||
fi
|
||||
}
|
||||
|
||||
AddBaseNftSets() {
|
||||
local _allowed_hosts _fproxy_private
|
||||
local _allowed_hosts
|
||||
$NFT_CMD add set $NFT_TABLE "$NFTSET_LOCAL_IP" { type "$NFTSET_LOCAL_IP_TYPE"\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; }
|
||||
$NFT_CMD add set $NFT_TABLE "$NFTSET_ALLOWED_HOSTS" { type "$NFTSET_ALLOWED_HOSTS_TYPE"\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; }
|
||||
_allowed_hosts=$(FormatNftSetElemsList "$ALLOWED_HOSTS_LIST")
|
||||
if [ -n "$_allowed_hosts" ]; then
|
||||
@@ -469,11 +491,8 @@ AddBaseNftSets() {
|
||||
fi
|
||||
$NFT_CMD add set $NFT_TABLE "$NFTSET_BYPASS_IP" { type "$NFTSET_BYPASS_IP_TYPE"\; size $NFTSET_MAXELEM_BYPASS_IP\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; }
|
||||
$NFT_CMD add set $NFT_TABLE "$NFTSET_BYPASS_FQDN" { type "$NFTSET_BYPASS_FQDN_TYPE"\; size $NFTSET_MAXELEM_BYPASS_FQDN\; policy "$NFTSET_POLICY_DNSMASQ"\; flags dynamic,timeout\; timeout "$NFTSET_DNSMASQ_TIMEOUT"\; }
|
||||
$NFT_CMD add set $NFT_TABLE "$NFTSET_FPROXY_PRIVATE" { type "$NFTSET_FPROXY_PRIVATE_TYPE"\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; }
|
||||
_fproxy_private=$(FormatNftSetElemsList "$FPROXY_PRIVATE_NETS")
|
||||
if [ -n "$_fproxy_private" ]; then
|
||||
$NFT_CMD add element $NFT_TABLE "$NFTSET_FPROXY_PRIVATE" { "$_fproxy_private" }
|
||||
fi
|
||||
$NFT_CMD add set $NFT_TABLE "$NFTSET_FPROXY_LOCAL" { type "$NFTSET_FPROXY_LOCAL_TYPE"\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; }
|
||||
UpdateLocalIpSets
|
||||
}
|
||||
|
||||
MakeInstanceNftSets() {
|
||||
@@ -576,7 +595,7 @@ UpdateBllistSets() {
|
||||
}
|
||||
|
||||
AddUserInstancesNftRules() {
|
||||
local _prio_offset=0 _pkts_mark=$PKTS_MARK_START _chain_prio_first _chain_prio_local _inst _vpn_route_table_id=$VPN_ROUTE_TABLE_ID_START _tproxy_route_table_id=$TPROXY_ROUTE_TABLE_ID_START _route_table_id
|
||||
local _pkts_mark=$PKTS_MARK_START _inst _vpn_route_table_id=$VPN_ROUTE_TABLE_ID_START _tproxy_route_table_id=$TPROXY_ROUTE_TABLE_ID_START _route_table_id
|
||||
for _inst in $USER_INSTANCES_ALL_FNAMES
|
||||
do
|
||||
IncludeUserInstanceVars "$_inst"
|
||||
@@ -592,7 +611,6 @@ AddUserInstancesNftRules() {
|
||||
_pkts_mark=$(($_pkts_mark + 1))
|
||||
NftInstanceAdd "\"$U_NAME\"" $_pkts_mark ${U_PROXY_MODE:=$INSTANCES_DEF_PROXY_MODE} ${U_TOR_TRANS_PORT:=$INSTANCES_DEF_TOR_TRANS_PORT} $_route_table_id "\"${U_IF_VPN:=$INSTANCES_DEF_IF_VPN}\"" ${U_T_PROXY_TYPE:=$INSTANCES_DEF_T_PROXY_TYPE} ${U_T_PROXY_PORT_TCP:=$INSTANCES_DEF_T_PROXY_PORT_TCP} ${U_T_PROXY_PORT_UDP:=$INSTANCES_DEF_T_PROXY_PORT_UDP} ${U_T_PROXY_ALLOW_UDP:=$INSTANCES_DEF_T_PROXY_ALLOW_UDP} ${U_ENABLE_ENTRIES_REMOTE_PROXY:=$INSTANCES_DEF_ENABLE_BLLIST_PROXY} ${U_ENABLE_FPROXY:=$INSTANCES_DEF_ENABLE_FPROXY} "\"$U_VPN_GW_IP\""
|
||||
ClearUserInstanceVars
|
||||
_prio_offset=$(($_prio_offset - 1))
|
||||
done
|
||||
}
|
||||
|
||||
@@ -651,7 +669,7 @@ SetNetConfig() {
|
||||
DropNetConfig() {
|
||||
DeleteNftRules
|
||||
FlushInstancesNftSets
|
||||
FlushNftSets "$NFTSET_ALLOWED_HOSTS" "$NFTSET_FPROXY_PRIVATE" "$NFTSET_BLLIST_PROXY" "$NFTSET_BYPASS_IP" "$NFTSET_BYPASS_FQDN"
|
||||
FlushNftSets "$NFTSET_LOCAL_IP" "$NFTSET_ALLOWED_HOSTS" "$NFTSET_FPROXY_LOCAL" "$NFTSET_BLLIST_PROXY" "$NFTSET_BYPASS_IP" "$NFTSET_BYPASS_FQDN"
|
||||
}
|
||||
|
||||
DestroyNetConfig() {
|
||||
@@ -1213,6 +1231,7 @@ Reload() {
|
||||
echo " ${NAME} reload..."
|
||||
DeleteNftRules &> /dev/null
|
||||
AddNftRules &> /dev/null
|
||||
UpdateLocalIpSets
|
||||
MakeToken
|
||||
}
|
||||
|
||||
@@ -1333,6 +1352,7 @@ case "$1" in
|
||||
;;
|
||||
update|force-update)
|
||||
Init
|
||||
UpdateLocalIpSets
|
||||
if CheckDnsmasqConfDir; then
|
||||
Update "$1"
|
||||
return_code=$?
|
||||
|
||||
Reference in New Issue
Block a user