Compare commits

..

3 Commits

Author SHA1 Message Date
itdoginfo
16f737914b Update 2024-10-30 16:56:25 +03:00
itdoginfo
6b19fbf7d9 Fix all traffic to trpoxy for IP, two chains, exclude NTP 2024-10-30 16:54:58 +03:00
itdoginfo
c8051bbbc8 Update 2024-10-29 18:50:28 +03:00
7 changed files with 61 additions and 27 deletions

View File

@@ -9,7 +9,7 @@ sh <(wget -O - https://raw.githubusercontent.com/itdoginfo/domain-routing-openwr
Оставляет туннели, зоны, forwarding. А также stubby и dnscrypt. Они не помешают. Конфиг sing-box будет перезаписан в podkop.
# Установка
# Установка Podkop
Пакет работает на всех архитектурах.
Будет точно работать только на OpenWrt 23.05.
@@ -64,6 +64,7 @@ opkg update && opkg install sing-box
# Известные баги
- [x] Не работает proxy при режимах main vpn, second proxy
- [ ] Не всегда отрабатывает ucitrack (применение настроек из luci). Не удаётся повторить
- [x] All traffic for IP ломает инет на клиенте. Proxy mode
# ToDo
Сделано
@@ -73,17 +74,19 @@ opkg update && opkg install sing-box
- [x] Дополнительная вкладка для ещё одного туннеля. Домены, подсети.
- [x] Улучшение скрипта автоматической установки. Спрашивать про туннели.
- [x] Зависимость от dnsmasq-full
Приоритет 1
- [x] В nft разделить правило tproxy на маркировку и tproxy
- [ ] Нужен дебаг. Restart ucitrack в отдельный скрипт postinst, не отрабатывает.
- [x] Весь трафик для устойства пускать в туннель\прокси
- [x] Исключение для IP, не ходить в туннель\прокси совсем 0x0
- [x] Врубать галочкой yacd в sing-box
- [x] Свои списки. Просто список доменов с переносом строки
- [x] Свои списки ipv4
- [ ] Ntp (порт 123) делать маркировку 0x0. По галке
- [ ] Вернуть две цепочки nft
- [x] В nft разделить правило tproxy на маркировку и tproxy
- [x] Вернуть две цепочки nft
- [x] Ntp (порт 123) делать маркировку 0x0. По галке
- [x] Открытый прокси порт на роутере для браузеров
Приоритет 1
- [ ] Переделать на PROCD и выкинуть ucitrack
- [ ] Нужен дебаг. Restart ucitrack в отдельный скрипт postinst, не отрабатывает.
Приоритет 2
- [ ] Кнопка обновления списка доменов и подсетей
@@ -102,7 +105,6 @@ Wiki
- [ ] Мониторинг tls
Низкий приоритет
- [x] Открытый прокси порт на роутере для браузеров
- [ ] Переменная, раз во сколько часов обновлять списки
- [ ] Галочка, которая режет доступ к doh серверам

View File

@@ -66,7 +66,7 @@ while true; do
;;
6)
echo "Skip"
echo "Skip. Use this if you're installing an upgrade."
break
;;

View File

@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-podkop
PKG_VERSION:=0.1.8
PKG_VERSION:=0.1.9
PKG_RELEASE:=1
LUCI_TITLE:=LuCI podkop app

View File

@@ -135,7 +135,7 @@ return view.extend({
o.depends('exclude_from_ip_enabled', '1');
o.rmempty = false;
o = s.taboption('main', form.Flag, 'yacd', _('Yacd enable'), _('http://openwrt.lan:9090:/ui'));
o = s.taboption('main', form.Flag, 'yacd', _('Yacd enable'), _('http://openwrt.lan:9090/ui'));
o.default = '0';
o.depends('mode', 'proxy');
o.rmempty = false;
@@ -143,6 +143,11 @@ return view.extend({
o = s.taboption('main', form.Flag, 'socks5', _('Mixed enable'), _('Browser port: 2080'));
o.default = '0';
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;
// Second section

View File

@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=podkop
PKG_VERSION:=0.1.8
PKG_VERSION:=0.1.9
PKG_RELEASE:=1
PKG_MAINTAINER:=ITDog <podkop@itdog.info>

View File

@@ -22,6 +22,7 @@ config main 'main'
list exclude_traffic_ip ''
option yacd '0'
option socks5 '0'
option exclude_ntp '0'
config second 'second'
option second_enable '0'

View File

@@ -8,7 +8,6 @@ config_load "$NAME"
EXTRA_COMMANDS="list_update add_route_interface version"
EXTRA_HELP=" list_update Updating domain and subnet lists
version Show version
add_route_interface Adding route for interface
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/init.d/sing-box restart
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() {
@@ -237,10 +242,6 @@ reload() {
start
}
version() {
echo VERSION_FROM_MAKEFILE
}
log() {
local message="$1"
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
@@ -390,7 +391,7 @@ add_set() {
nft add table inet PodkopTable
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\; }
config_get mode "$connect" "mode"
case "$mode" in
@@ -405,8 +406,7 @@ add_set() {
;;
"proxy")
#nft add chain inet PodkopTable mangle { type filter hook prerouting priority mangle \; }
#nft add chain inet PodkopTable proxy { type filter hook prerouting priority mangle \; }
nft add chain inet PodkopTable proxy { type filter hook prerouting priority -100 \; }
if nft list table inet PodkopTable | grep -q "ip daddr @"$set_name" meta l4proto"; then
log "Nft rule tproxy exists"
else
@@ -414,13 +414,17 @@ add_set() {
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 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
nft add rule inet PodkopTable mangle iifname "br-lan" meta mark 0x105 meta l4proto udp 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 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
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 iifname "br-lan" meta mark 0x106 meta l4proto tcp tproxy ip to :1603 counter
nft add rule inet PodkopTable mangle iifname "br-lan" meta mark 0x106 meta l4proto udp 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 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
;;
@@ -645,14 +649,36 @@ list_custom_subnets_create() {
list_all_traffic_from_ip() {
local ip="$1"
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
}
list_exclude_traffic_from_ip() {
local ip="$1"
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
}
@@ -911,4 +937,4 @@ sing_box_config_check() {
log "Sing-box configuration is invalid"
exit 1
fi
}
}