mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-19 05:58:19 +03:00
Fix all traffic to trpoxy for IP, two chains, exclude NTP
This commit is contained in:
16
README.md
16
README.md
@@ -64,6 +64,7 @@ opkg update && opkg install sing-box
|
|||||||
# Известные баги
|
# Известные баги
|
||||||
- [x] Не работает proxy при режимах main vpn, second proxy
|
- [x] Не работает proxy при режимах main vpn, second proxy
|
||||||
- [ ] Не всегда отрабатывает ucitrack (применение настроек из luci). Не удаётся повторить
|
- [ ] Не всегда отрабатывает ucitrack (применение настроек из luci). Не удаётся повторить
|
||||||
|
- [x] All traffic for IP ломает инет на клиенте. Proxy mode
|
||||||
|
|
||||||
# ToDo
|
# ToDo
|
||||||
Сделано
|
Сделано
|
||||||
@@ -73,17 +74,19 @@ opkg update && opkg install sing-box
|
|||||||
- [x] Дополнительная вкладка для ещё одного туннеля. Домены, подсети.
|
- [x] Дополнительная вкладка для ещё одного туннеля. Домены, подсети.
|
||||||
- [x] Улучшение скрипта автоматической установки. Спрашивать про туннели.
|
- [x] Улучшение скрипта автоматической установки. Спрашивать про туннели.
|
||||||
- [x] Зависимость от dnsmasq-full
|
- [x] Зависимость от dnsmasq-full
|
||||||
|
|
||||||
Приоритет 1
|
|
||||||
- [x] В nft разделить правило tproxy на маркировку и tproxy
|
|
||||||
- [ ] Нужен дебаг. Restart ucitrack в отдельный скрипт postinst, не отрабатывает.
|
|
||||||
- [x] Весь трафик для устойства пускать в туннель\прокси
|
- [x] Весь трафик для устойства пускать в туннель\прокси
|
||||||
- [x] Исключение для IP, не ходить в туннель\прокси совсем 0x0
|
- [x] Исключение для IP, не ходить в туннель\прокси совсем 0x0
|
||||||
- [x] Врубать галочкой yacd в sing-box
|
- [x] Врубать галочкой yacd в sing-box
|
||||||
- [x] Свои списки. Просто список доменов с переносом строки
|
- [x] Свои списки. Просто список доменов с переносом строки
|
||||||
- [x] Свои списки ipv4
|
- [x] Свои списки ipv4
|
||||||
- [ ] Ntp (порт 123) делать маркировку 0x0. По галке
|
- [x] В nft разделить правило tproxy на маркировку и tproxy
|
||||||
- [ ] Вернуть две цепочки nft
|
- [x] Вернуть две цепочки nft
|
||||||
|
- [x] Ntp (порт 123) делать маркировку 0x0. По галке
|
||||||
|
- [x] Открытый прокси порт на роутере для браузеров
|
||||||
|
|
||||||
|
Приоритет 1
|
||||||
|
- [ ] Переделать на PROCD и выкинуть ucitrack
|
||||||
|
- [ ] Нужен дебаг. Restart ucitrack в отдельный скрипт postinst, не отрабатывает.
|
||||||
|
|
||||||
Приоритет 2
|
Приоритет 2
|
||||||
- [ ] Кнопка обновления списка доменов и подсетей
|
- [ ] Кнопка обновления списка доменов и подсетей
|
||||||
@@ -102,7 +105,6 @@ Wiki
|
|||||||
- [ ] Мониторинг tls
|
- [ ] Мониторинг tls
|
||||||
|
|
||||||
Низкий приоритет
|
Низкий приоритет
|
||||||
- [x] Открытый прокси порт на роутере для браузеров
|
|
||||||
- [ ] Переменная, раз во сколько часов обновлять списки
|
- [ ] Переменная, раз во сколько часов обновлять списки
|
||||||
- [ ] Галочка, которая режет доступ к doh серверам
|
- [ ] Галочка, которая режет доступ к doh серверам
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-podkop
|
PKG_NAME:=luci-app-podkop
|
||||||
PKG_VERSION:=0.1.8
|
PKG_VERSION:=0.1.9
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
LUCI_TITLE:=LuCI podkop app
|
LUCI_TITLE:=LuCI podkop app
|
||||||
|
|||||||
@@ -143,6 +143,11 @@ return view.extend({
|
|||||||
o = s.taboption('main', form.Flag, 'socks5', _('Mixed enable'), _('Browser port: 2080'));
|
o = s.taboption('main', form.Flag, 'socks5', _('Mixed enable'), _('Browser port: 2080'));
|
||||||
o.default = '0';
|
o.default = '0';
|
||||||
o.depends('mode', 'proxy');
|
o.depends('mode', 'proxy');
|
||||||
|
o.rmempty = false;
|
||||||
|
|
||||||
|
o = s.taboption('main', form.Flag, 'exclude_ntp', _('Exclude NTP'), _('For issues with open connections sing-box'));
|
||||||
|
o.default = '0';
|
||||||
|
o.depends('mode', 'proxy');
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
// Second section
|
// Second section
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=podkop
|
PKG_NAME:=podkop
|
||||||
PKG_VERSION:=0.1.8
|
PKG_VERSION:=0.1.9
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_MAINTAINER:=ITDog <podkop@itdog.info>
|
PKG_MAINTAINER:=ITDog <podkop@itdog.info>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ config main 'main'
|
|||||||
list exclude_traffic_ip ''
|
list exclude_traffic_ip ''
|
||||||
option yacd '0'
|
option yacd '0'
|
||||||
option socks5 '0'
|
option socks5 '0'
|
||||||
|
option exclude_ntp '0'
|
||||||
|
|
||||||
config second 'second'
|
config second 'second'
|
||||||
option second_enable '0'
|
option second_enable '0'
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ config_load "$NAME"
|
|||||||
|
|
||||||
EXTRA_COMMANDS="list_update add_route_interface version"
|
EXTRA_COMMANDS="list_update add_route_interface version"
|
||||||
EXTRA_HELP=" list_update Updating domain and subnet lists
|
EXTRA_HELP=" list_update Updating domain and subnet lists
|
||||||
version Show version
|
|
||||||
add_route_interface Adding route for interface
|
add_route_interface Adding route for interface
|
||||||
sing_box_config_vless For test vless string"
|
sing_box_config_vless For test vless string"
|
||||||
|
|
||||||
@@ -187,6 +186,12 @@ start() {
|
|||||||
}]' /etc/sing-box/config.json >/tmp/sing-box-config-tmp.json && mv /tmp/sing-box-config-tmp.json /etc/sing-box/config.json
|
}]' /etc/sing-box/config.json >/tmp/sing-box-config-tmp.json && mv /tmp/sing-box-config-tmp.json /etc/sing-box/config.json
|
||||||
/etc/init.d/sing-box restart
|
/etc/init.d/sing-box restart
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
config_get_bool exclude_ntp "main" "exclude_ntp" "0"
|
||||||
|
if [ "$exclude_ntp" -eq 1 ]; then
|
||||||
|
log "NTP traffic exclude for proxy"
|
||||||
|
nft insert rule inet PodkopTable mangle udp dport 123 return
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
stop() {
|
stop() {
|
||||||
@@ -237,10 +242,6 @@ reload() {
|
|||||||
start
|
start
|
||||||
}
|
}
|
||||||
|
|
||||||
version() {
|
|
||||||
echo VERSION_FROM_MAKEFILE
|
|
||||||
}
|
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
local message="$1"
|
local message="$1"
|
||||||
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
||||||
@@ -390,7 +391,7 @@ add_set() {
|
|||||||
|
|
||||||
nft add table inet PodkopTable
|
nft add table inet PodkopTable
|
||||||
log "Create set $set_name"
|
log "Create set $set_name"
|
||||||
nft add chain inet PodkopTable mangle { type filter hook prerouting priority mangle \; policy accept \;}
|
nft add chain inet PodkopTable mangle { type filter hook prerouting priority -150 \; policy accept \;}
|
||||||
nft add set inet PodkopTable "$set_name" { type ipv4_addr\; flags interval\; auto-merge\; }
|
nft add set inet PodkopTable "$set_name" { type ipv4_addr\; flags interval\; auto-merge\; }
|
||||||
config_get mode "$connect" "mode"
|
config_get mode "$connect" "mode"
|
||||||
case "$mode" in
|
case "$mode" in
|
||||||
@@ -405,8 +406,7 @@ add_set() {
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
"proxy")
|
"proxy")
|
||||||
#nft add chain inet PodkopTable mangle { type filter hook prerouting priority mangle \; }
|
nft add chain inet PodkopTable proxy { type filter hook prerouting priority -100 \; }
|
||||||
#nft add chain inet PodkopTable proxy { type filter hook prerouting priority mangle \; }
|
|
||||||
if nft list table inet PodkopTable | grep -q "ip daddr @"$set_name" meta l4proto"; then
|
if nft list table inet PodkopTable | grep -q "ip daddr @"$set_name" meta l4proto"; then
|
||||||
log "Nft rule tproxy exists"
|
log "Nft rule tproxy exists"
|
||||||
else
|
else
|
||||||
@@ -414,13 +414,17 @@ add_set() {
|
|||||||
if [ "$connect" = "main" ]; then
|
if [ "$connect" = "main" ]; then
|
||||||
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto tcp meta mark set 0x105 counter
|
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto tcp meta mark set 0x105 counter
|
||||||
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto udp meta mark set 0x105 counter
|
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto udp meta mark set 0x105 counter
|
||||||
nft add rule inet PodkopTable mangle iifname "br-lan" meta mark 0x105 meta l4proto tcp tproxy ip to :1602 counter
|
if ! ( nft list table inet PodkopTable | grep -q "meta mark 0x00000105 meta l4proto tcp tproxy" ); then
|
||||||
nft add rule inet PodkopTable mangle iifname "br-lan" meta mark 0x105 meta l4proto udp tproxy ip to :1602 counter
|
nft add rule inet PodkopTable proxy iifname "br-lan" meta mark 0x105 meta l4proto tcp tproxy ip to :1602 counter
|
||||||
|
nft add rule inet PodkopTable proxy iifname "br-lan" meta mark 0x105 meta l4proto udp tproxy ip to :1602 counter
|
||||||
|
fi
|
||||||
elif [ "$connect" = "second" ]; then
|
elif [ "$connect" = "second" ]; then
|
||||||
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto tcp meta mark set 0x106 counter
|
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto tcp meta mark set 0x106 counter
|
||||||
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto udp meta mark set 0x106 counter
|
nft add rule inet PodkopTable mangle ip daddr @"$set_name" meta l4proto udp meta mark set 0x106 counter
|
||||||
nft add rule inet PodkopTable mangle iifname "br-lan" meta mark 0x106 meta l4proto tcp tproxy ip to :1603 counter
|
if ! ( nft list table inet PodkopTable | grep -q "meta mark 0x00000106 meta l4proto tcp tproxy" ); then
|
||||||
nft add rule inet PodkopTable mangle iifname "br-lan" meta mark 0x106 meta l4proto udp tproxy ip to :1603 counter
|
nft add rule inet PodkopTable proxy iifname "br-lan" meta mark 0x106 meta l4proto tcp tproxy ip to :1603 counter
|
||||||
|
nft add rule inet PodkopTable proxy iifname "br-lan" meta mark 0x106 meta l4proto udp tproxy ip to :1603 counter
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@@ -645,14 +649,36 @@ list_custom_subnets_create() {
|
|||||||
list_all_traffic_from_ip() {
|
list_all_traffic_from_ip() {
|
||||||
local ip="$1"
|
local ip="$1"
|
||||||
if ! nft list chain inet PodkopTable mangle | grep -q "ip saddr $ip"; then
|
if ! nft list chain inet PodkopTable mangle | grep -q "ip saddr $ip"; then
|
||||||
nft insert rule inet PodkopTable mangle ip saddr $ip meta mark set 0x105 counter
|
config_get mode "main" "mode" "0"
|
||||||
|
if [ "$mode" = "vpn" ]; then
|
||||||
|
nft insert rule inet PodkopTable mangle ip saddr $ip meta mark set 0x105 counter
|
||||||
|
elif [ "$mode" = "proxy" ]; then
|
||||||
|
nft add set inet PodkopTable localv4 { type ipv4_addr\; flags interval\; }
|
||||||
|
nft add element inet PodkopTable localv4 { \
|
||||||
|
0.0.0.0/8, \
|
||||||
|
10.0.0.0/8, \
|
||||||
|
127.0.0.0/8, \
|
||||||
|
169.254.0.0/16, \
|
||||||
|
172.16.0.0/12, \
|
||||||
|
192.0.0.0/24, \
|
||||||
|
192.0.2.0/24, \
|
||||||
|
192.88.99.0/24, \
|
||||||
|
192.168.0.0/16, \
|
||||||
|
198.18.0.0/15, \
|
||||||
|
198.51.100.0/24, \
|
||||||
|
203.0.113.0/24, \
|
||||||
|
224.0.0.0/4, \
|
||||||
|
240.0.0.0-255.255.255.255 }
|
||||||
|
nft insert rule inet PodkopTable mangle ip saddr $ip meta l4proto { tcp, udp } meta mark set 0x105 counter
|
||||||
|
nft insert rule inet PodkopTable mangle ip saddr $ip ip daddr @localv4 return
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
list_exclude_traffic_from_ip() {
|
list_exclude_traffic_from_ip() {
|
||||||
local ip="$1"
|
local ip="$1"
|
||||||
if ! nft list chain inet PodkopTable mangle | grep -q "ip saddr $ip"; then
|
if ! nft list chain inet PodkopTable mangle | grep -q "ip saddr $ip"; then
|
||||||
nft insert rule inet PodkopTable mangle ip saddr $ip meta mark set 0x0 counter
|
nft insert rule inet PodkopTable mangle ip saddr $ip return
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -911,4 +937,4 @@ sing_box_config_check() {
|
|||||||
log "Sing-box configuration is invalid"
|
log "Sing-box configuration is invalid"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user