mirror of
https://github.com/itdoginfo/podkop.git
synced 2026-01-27 04:40:37 +03:00
fix: replace fakeip mark 0x105 with 0x80000 to avoid conflict with mwan3 (#275)
This commit is contained in:
@@ -164,12 +164,12 @@ stop_main() {
|
|||||||
|
|
||||||
log "Flush ip rule"
|
log "Flush ip rule"
|
||||||
if ip rule list | grep -q "podkop"; then
|
if ip rule list | grep -q "podkop"; then
|
||||||
ip rule del fwmark 0x105 table podkop priority 105
|
ip rule del fwmark "$NFT_FAKEIP_MARK" table "$RT_TABLE_NAME" priority 105
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "Flush ip route"
|
log "Flush ip route"
|
||||||
if ip route list table podkop > /dev/null 2>&1; then
|
if ip route list table "$RT_TABLE_NAME" > /dev/null 2>&1; then
|
||||||
ip route flush table podkop
|
ip route flush table "$RT_TABLE_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "Stop sing-box"
|
log "Stop sing-box"
|
||||||
@@ -251,20 +251,18 @@ br_netfilter_disable() {
|
|||||||
# Main funcs
|
# Main funcs
|
||||||
|
|
||||||
route_table_rule_mark() {
|
route_table_rule_mark() {
|
||||||
local table=podkop
|
grep -q "105 $RT_TABLE_NAME" /etc/iproute2/rt_tables || echo "105 $RT_TABLE_NAME" >> /etc/iproute2/rt_tables
|
||||||
|
|
||||||
grep -q "105 $table" /etc/iproute2/rt_tables || echo "105 $table" >> /etc/iproute2/rt_tables
|
if ! ip route list table "$RT_TABLE_NAME" 2>/dev/null | grep -q "local default dev lo scope host"; then
|
||||||
|
|
||||||
if ! ip route list table $table | grep -q "local default dev lo scope host"; then
|
|
||||||
log "Added route for tproxy" "debug"
|
log "Added route for tproxy" "debug"
|
||||||
ip route add local 0.0.0.0/0 dev lo table $table
|
ip route add local 0.0.0.0/0 dev lo table "$RT_TABLE_NAME"
|
||||||
else
|
else
|
||||||
log "Route for tproxy exists" "debug"
|
log "Route for tproxy exists" "debug"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! ip rule list | grep -q "from all fwmark 0x105 lookup $table"; then
|
if ! ip rule list | grep -q "from all fwmark $NFT_FAKEIP_MARK lookup $RT_TABLE_NAME"; then
|
||||||
log "Create marking rule" "debug"
|
log "Create marking rule" "debug"
|
||||||
ip -4 rule add fwmark 0x105 table $table priority 105
|
ip -4 rule add fwmark "$NFT_FAKEIP_MARK" table "$RT_TABLE_NAME" priority 105
|
||||||
else
|
else
|
||||||
log "Marking rule exist" "debug"
|
log "Marking rule exist" "debug"
|
||||||
fi
|
fi
|
||||||
@@ -314,19 +312,19 @@ create_nft_rules() {
|
|||||||
nft add chain inet "$NFT_TABLE_NAME" mangle_output '{ type route hook output priority -150; policy accept; }'
|
nft add chain inet "$NFT_TABLE_NAME" mangle_output '{ type route hook output priority -150; policy accept; }'
|
||||||
nft add chain inet "$NFT_TABLE_NAME" proxy '{ type filter hook prerouting priority -100; policy accept; }'
|
nft add chain inet "$NFT_TABLE_NAME" proxy '{ type filter hook prerouting priority -100; policy accept; }'
|
||||||
|
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto tcp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto tcp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto udp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto udp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto tcp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto tcp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto udp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto udp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
|
|
||||||
nft add rule inet "$NFT_TABLE_NAME" proxy meta mark 0x105 meta l4proto tcp tproxy ip to 127.0.0.1:1602 counter
|
nft add rule inet "$NFT_TABLE_NAME" proxy meta mark "$NFT_FAKEIP_MARK" meta l4proto tcp tproxy ip to 127.0.0.1:1602 counter
|
||||||
nft add rule inet "$NFT_TABLE_NAME" proxy meta mark 0x105 meta l4proto udp tproxy ip to 127.0.0.1:1602 counter
|
nft add rule inet "$NFT_TABLE_NAME" proxy meta mark "$NFT_FAKEIP_MARK" meta l4proto udp tproxy ip to 127.0.0.1:1602 counter
|
||||||
|
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "@$NFT_LOCALV4_SET_NAME" return
|
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "@$NFT_LOCALV4_SET_NAME" return
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto tcp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto tcp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto udp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "@$NFT_COMMON_SET_NAME" meta l4proto udp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto tcp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto tcp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto udp meta mark set 0x105 counter
|
nft add rule inet "$NFT_TABLE_NAME" mangle_output ip daddr "$SB_FAKEIP_INET4_RANGE" meta l4proto udp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
|
|
||||||
local exclude_ntp
|
local exclude_ntp
|
||||||
config_get_bool exclude_ntp "settings" "exclude_ntp" "0"
|
config_get_bool exclude_ntp "settings" "exclude_ntp" "0"
|
||||||
@@ -1273,7 +1271,7 @@ import_community_service_subnet_list_handler() {
|
|||||||
URL=$SUBNETS_DISCORD
|
URL=$SUBNETS_DISCORD
|
||||||
nft_create_ipv4_set "$NFT_TABLE_NAME" "$NFT_DISCORD_SET_NAME"
|
nft_create_ipv4_set "$NFT_TABLE_NAME" "$NFT_DISCORD_SET_NAME"
|
||||||
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr \
|
nft add rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip daddr \
|
||||||
"@$NFT_DISCORD_SET_NAME" udp dport '{ 50000-65535 }' meta mark set 0x105 counter
|
"@$NFT_DISCORD_SET_NAME" udp dport '{ 50000-65535 }' meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
;;
|
;;
|
||||||
*) return 0 ;;
|
*) return 0 ;;
|
||||||
esac
|
esac
|
||||||
@@ -1562,8 +1560,10 @@ nft_list_all_traffic_from_ip() {
|
|||||||
local ip="$1"
|
local ip="$1"
|
||||||
|
|
||||||
if ! nft list chain inet "$NFT_TABLE_NAME" mangle | grep -q "ip saddr $ip"; then
|
if ! nft list chain inet "$NFT_TABLE_NAME" mangle | grep -q "ip saddr $ip"; then
|
||||||
nft insert rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip saddr "$ip" meta l4proto tcp meta mark set 0x105 counter
|
nft insert rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip saddr "$ip" \
|
||||||
nft insert rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip saddr "$ip" meta l4proto udp meta mark set 0x105 counter
|
meta l4proto tcp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
|
nft insert rule inet "$NFT_TABLE_NAME" mangle iifname "@$NFT_INTERFACE_SET_NAME" ip saddr "$ip" \
|
||||||
|
meta l4proto udp meta mark set "$NFT_FAKEIP_MARK" counter
|
||||||
nft insert rule inet "$NFT_TABLE_NAME" mangle ip saddr "$ip" ip daddr @localv4 return
|
nft insert rule inet "$NFT_TABLE_NAME" mangle ip saddr "$ip" ip daddr @localv4 return
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ TMP_RULESET_FOLDER="$TMP_SING_BOX_FOLDER/rulesets"
|
|||||||
CLOUDFLARE_OCTETS="8.47 162.159 188.114" # Endpoints https://github.com/ampetelin/warp-endpoint-checker
|
CLOUDFLARE_OCTETS="8.47 162.159 188.114" # Endpoints https://github.com/ampetelin/warp-endpoint-checker
|
||||||
JQ_REQUIRED_VERSION="1.7.1"
|
JQ_REQUIRED_VERSION="1.7.1"
|
||||||
COREUTILS_BASE64_REQUIRED_VERSION="9.7"
|
COREUTILS_BASE64_REQUIRED_VERSION="9.7"
|
||||||
|
RT_TABLE_NAME="podkop"
|
||||||
|
|
||||||
## nft
|
## nft
|
||||||
NFT_TABLE_NAME="PodkopTable"
|
NFT_TABLE_NAME="PodkopTable"
|
||||||
@@ -19,6 +20,7 @@ NFT_LOCALV4_SET_NAME="localv4"
|
|||||||
NFT_COMMON_SET_NAME="podkop_subnets"
|
NFT_COMMON_SET_NAME="podkop_subnets"
|
||||||
NFT_DISCORD_SET_NAME="podkop_discord_subnets"
|
NFT_DISCORD_SET_NAME="podkop_discord_subnets"
|
||||||
NFT_INTERFACE_SET_NAME="interfaces"
|
NFT_INTERFACE_SET_NAME="interfaces"
|
||||||
|
NFT_FAKEIP_MARK="0x80000"
|
||||||
|
|
||||||
## sing-box
|
## sing-box
|
||||||
SB_REQUIRED_VERSION="1.12.0"
|
SB_REQUIRED_VERSION="1.12.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user