🗽 Sync 2026-04-04 08:46:19

This commit is contained in:
github-actions[bot] committed 2026-04-04 08:46:19 +08:00
1 parent cc48a1d6ad
commit 874bea09f4
10 files changed
+258 -105

No files matched your search

@@ -744,7 +744,7 @@ add_firewall_rule() {
}
$ipt_m -A PSW2_OUTPUT -m mark --mark 255 -j RETURN
ip rule add fwmark ${FWMARK} lookup 999 priority 999
ip rule add fwmark ${FWMARK} table 999 priority 999
ip route add local 0.0.0.0/0 dev lo table 999
[ "$accept_icmpv6" = "1" ] && {
@@ -953,10 +953,10 @@ del_firewall_rule() {
done
done
ip rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null
ip rule del fwmark ${FWMARK} 2>/dev/null
ip route del local 0.0.0.0/0 dev lo table 999 2>/dev/null
ip -6 rule del fwmark ${FWMARK} table 999 priority 999 2>/dev/null
ip -6 rule del fwmark ${FWMARK} 2>/dev/null
ip -6 route del local ::/0 dev lo table 999 2>/dev/null
log_i18n 0 "Delete %s rules is complete." "iptables"
@@ -642,9 +642,35 @@ filter_direct_node_list() {
done
}
del_script_mwan3() {
[ -s "/etc/init.d/mwan3" ] && sed -i "/${CONFIG}/d" /etc/init.d/mwan3 >/dev/null 2>&1
}
add_script_mwan3() {
del_script_mwan3
[ -s "/etc/init.d/mwan3" ] && {
sed -i '/start_service()/,/}/ s/^}/ \/usr\/share\/passwall2\/nftables.sh mwan3_start\n}/' /etc/init.d/mwan3
sed -i '/stop_service().*{/a \ \/usr\/share\/passwall2\/nftables.sh mwan3_stop' /etc/init.d/mwan3
}
}
mwan3_stop() {
local handles=$(nft -a list chain ip mangle mwan3_hook 2>/dev/null | grep "${FWMARK}" | awk -F '# handle ' '{print$2}')
for handle in $handles; do
nft delete rule ip mangle mwan3_hook handle ${handle} 2>/dev/null
done
}
mwan3_start() {
mwan3_stop
nft list chain ip mangle mwan3_hook >/dev/null 2>&1 && nft insert rule ip mangle mwan3_hook ct mark ${FWMARK} counter return >/dev/null 2>&1
}
add_firewall_rule() {
log_i18n 0 "Starting to load %s firewall rules..." "nftables"
gen_nft_tables
add_script_mwan3
mwan3_start
gen_nftset $NFTSET_WAN ipv4_addr 0 "-1"
gen_nftset $NFTSET_LOCAL ipv4_addr 0 "-1"
gen_nftset $NFTSET_LAN ipv4_addr 0 "-1" $(gen_lanlist)
@@ -798,7 +824,7 @@ add_firewall_rule() {
}
unset WAN_IP
ip rule add fwmark ${FWMARK} lookup 999 priority 999
ip rule add fwmark ${FWMARK} table 999 priority 999
ip route add local 0.0.0.0/0 dev lo table 999
#ipv6 tproxy mode and udp
@@ -974,10 +1000,10 @@ del_firewall_rule() {
# Need to be removed at the end, otherwise it will show "Resource busy"
nft delete chain $NFTABLE_NAME handle $(nft -a list chains | grep -E "PSW2_RULE" | awk -F '# handle ' '{print$2}') 2>/dev/null
ip rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null
ip rule del fwmark ${FWMARK} 2>/dev/null
ip route del local 0.0.0.0/0 dev lo table 999 2>/dev/null
ip -6 rule del fwmark ${FWMARK} table 999 priority 999 2>/dev/null
ip -6 rule del fwmark ${FWMARK} 2>/dev/null
ip -6 route del local ::/0 dev lo table 999 2>/dev/null
destroy_nftset $NFTSET_LOCAL
@@ -990,6 +1016,8 @@ del_firewall_rule() {
destroy_nftset $NFTSET_LAN6
destroy_nftset $NFTSET_VPS6
del_script_mwan3
log_i18n 0 "Delete %s rules is complete." "nftables"
}
@@ -1071,6 +1099,12 @@ insert_nftset)
filter_direct_node_list)
filter_direct_node_list
;;
mwan3_start)
mwan3_start
;;
mwan3_stop)
mwan3_stop
;;
stop)
stop
;;
@@ -1079,3 +1113,7 @@ start)
;;
*) ;;
esac
reload_service() {
restart
}