fix: complete Telegram routing, AmneziaWG action support & flowtable bypass
- nft/apply.uc: add 'awg' and 'warp' to action_captures_traffic so nftables creates priority sets for AmneziaWG / Cloudflare WARP sections. - nft/apply.uc: insert flowtable bypass in fw4 forward for marked TPROXY packets so OpenWrt flow offloading doesn't hijack proxied connections. - singbox/generator_routes.uc: include official Telegram IP CIDRs in route rules for telegram community list so direct IP connections match sing-box rules.
This commit is contained in:
@@ -606,7 +606,7 @@ function section_action(section) {
|
|||||||
|
|
||||||
function action_captures_traffic(action) {
|
function action_captures_traffic(action) {
|
||||||
return action == "connection" || action == "proxy" || action == "outbound" || action == "vpn" ||
|
return action == "connection" || action == "proxy" || action == "outbound" || action == "vpn" ||
|
||||||
action == "block" || action == "zapret" || action == "zapret2" || action == "byedpi";
|
action == "awg" || action == "warp" || action == "block" || action == "zapret" || action == "zapret2" || action == "byedpi";
|
||||||
}
|
}
|
||||||
|
|
||||||
function section_priority_action(section) {
|
function section_priority_action(section) {
|
||||||
@@ -1488,6 +1488,7 @@ function ensure_tproxy_route_rule(table, mark, rt_tables_path) {
|
|||||||
log_debug("IPv6 TPROXY marking rule already exists");
|
log_debug("IPv6 TPROXY marking rule already exists");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_args([ "nft", "insert", "rule", "inet", "fw4", "forward", "meta", "mark", as_string(mark), "return" ]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1139,6 +1139,16 @@ function add_combined_route_for_section(config, section) {
|
|||||||
let ensured = ensure_community_ruleset(config, section_name, as_string(community));
|
let ensured = ensure_community_ruleset(config, section_name, as_string(community));
|
||||||
push(rule_set_tags, ensured.tag);
|
push(rule_set_tags, ensured.tag);
|
||||||
push(dns_rule_set_tags, ensured.tag);
|
push(dns_rule_set_tags, ensured.tag);
|
||||||
|
if (as_string(community) == "telegram") {
|
||||||
|
let tg_cidrs = [
|
||||||
|
"149.154.160.0/20", "91.108.4.0/22", "91.108.8.0/22",
|
||||||
|
"91.108.12.0/22", "91.108.16.0/22", "91.108.56.0/22",
|
||||||
|
"5.28.192.0/18", "91.105.192.0/23", "95.161.64.0/20",
|
||||||
|
"185.76.151.0/24", "194.221.0.0/16"
|
||||||
|
];
|
||||||
|
for (let cidr in tg_cidrs)
|
||||||
|
push(ip_cidr, cidr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (let reference in connections.rule_sets(section)) {
|
for (let reference in connections.rule_sets(section)) {
|
||||||
let ensured = ensure_custom_ruleset(config, as_string(reference));
|
let ensured = ensure_custom_ruleset(config, as_string(reference));
|
||||||
|
|||||||
Reference in New Issue
Block a user