Skip to content

Commit ecd1bb5

Browse files
authored
luci: Add ctdir REPLY returns and adjust marking rules (#4319)
1 parent 398ef15 commit ecd1bb5

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

luci-app-passwall/root/usr/share/passwall/iptables.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -999,13 +999,14 @@ add_firewall_rule() {
999999
$ipt_m -N PSW_RULE
10001000
$ipt_m -A PSW_RULE -j CONNMARK --restore-mark
10011001
$ipt_m -A PSW_RULE -m mark --mark ${FWMARK} -j RETURN
1002-
$ipt_m -A PSW_RULE -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j MARK --set-xmark ${FWMARK}
1003-
$ipt_m -A PSW_RULE -p udp -m conntrack --ctstate NEW -j MARK --set-xmark ${FWMARK}
1002+
$ipt_m -A PSW_RULE -p tcp -m tcp --syn -j MARK --set-xmark ${FWMARK}
1003+
$ipt_m -A PSW_RULE -p udp -m conntrack --ctstate NEW,RELATED -j MARK --set-xmark ${FWMARK}
10041004
$ipt_m -A PSW_RULE -j CONNMARK --save-mark
10051005

10061006
$ipt_m -N PSW
10071007
$ipt_m -A PSW $(dst $IPSET_LAN) -j RETURN
10081008
$ipt_m -A PSW $(dst $IPSET_VPS) -j RETURN
1009+
$ipt_m -A PSW -m conntrack --ctdir REPLY -j RETURN
10091010

10101011
[ ! -z "${WAN_IP}" ] && {
10111012
ipset -F $IPSET_WAN
@@ -1024,7 +1025,6 @@ add_firewall_rule() {
10241025
$ipt_m -N PSW_OUTPUT
10251026
$ipt_m -A PSW_OUTPUT $(dst $IPSET_LAN) -j RETURN
10261027
$ipt_m -A PSW_OUTPUT $(dst $IPSET_VPS) -j RETURN
1027-
10281028
[ -n "$IPT_APPEND_DNS" ] && {
10291029
local local_dns dns_address dns_port
10301030
for local_dns in $(echo $IPT_APPEND_DNS | tr ',' ' '); do
@@ -1044,6 +1044,7 @@ add_firewall_rule() {
10441044

10451045
[ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_BLOCK) -j DROP
10461046
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_WHITE) -j RETURN
1047+
$ipt_m -A PSW_OUTPUT -m conntrack --ctdir REPLY -j RETURN
10471048
$ipt_m -A PSW_OUTPUT -m mark --mark 255 -j RETURN
10481049

10491050
ip rule add fwmark ${FWMARK} lookup 999 priority 999
@@ -1077,13 +1078,14 @@ add_firewall_rule() {
10771078
$ip6t_m -N PSW_RULE
10781079
$ip6t_m -A PSW_RULE -j CONNMARK --restore-mark
10791080
$ip6t_m -A PSW_RULE -m mark --mark ${FWMARK} -j RETURN
1080-
$ip6t_m -A PSW_RULE -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j MARK --set-xmark ${FWMARK}
1081-
$ip6t_m -A PSW_RULE -p udp -m conntrack --ctstate NEW -j MARK --set-xmark ${FWMARK}
1081+
$ip6t_m -A PSW_RULE -p tcp -m tcp --syn -j MARK --set-xmark ${FWMARK}
1082+
$ip6t_m -A PSW_RULE -p udp -m conntrack --ctstate NEW,RELATED -j MARK --set-xmark ${FWMARK}
10821083
$ip6t_m -A PSW_RULE -j CONNMARK --save-mark
10831084

10841085
$ip6t_m -N PSW
10851086
$ip6t_m -A PSW $(dst $IPSET_LAN6) -j RETURN
10861087
$ip6t_m -A PSW $(dst $IPSET_VPS6) -j RETURN
1088+
$ip6t_m -A PSW -m conntrack --ctdir REPLY -j RETURN
10871089

10881090
WAN6_IP=$(get_wan_ips ip6)
10891091
[ ! -z "${WAN6_IP}" ] && {
@@ -1106,6 +1108,7 @@ add_firewall_rule() {
11061108
$ip6t_m -A PSW_OUTPUT $(dst $IPSET_VPS6) -j RETURN
11071109
[ "${USE_BLOCK_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_BLOCK6) -j DROP
11081110
[ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_WHITE6) -j RETURN
1111+
$ip6t_m -A PSW_OUTPUT -m conntrack --ctdir REPLY -j RETURN
11091112

11101113
ip -6 rule add fwmark ${FWMARK} table 999 priority 999
11111114
ip -6 route add local ::/0 dev lo table 999

luci-app-passwall/root/usr/share/passwall/nftables.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1037,14 +1037,15 @@ add_firewall_rule() {
10371037
nft "flush chain $NFTABLE_NAME PSW_MANGLE"
10381038
nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_LAN counter return"
10391039
nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_VPS counter return"
1040+
nft "add rule $NFTABLE_NAME PSW_MANGLE ct direction reply counter return"
10401041

10411042
nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE"
10421043
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE"
10431044
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_LAN counter return"
10441045
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_VPS counter return"
1045-
10461046
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_BLOCK counter drop"
10471047
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_WHITE counter return"
1048+
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ct direction reply counter return"
10481049
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE meta mark 255 counter return"
10491050

10501051
# jump chains
@@ -1105,13 +1106,15 @@ add_firewall_rule() {
11051106
nft "flush chain $NFTABLE_NAME PSW_MANGLE_V6"
11061107
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return"
11071108
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return"
1109+
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ct direction reply counter return"
11081110

11091111
nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6"
11101112
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6"
11111113
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return"
11121114
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return"
11131115
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_BLOCK6 counter drop"
11141116
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_WHITE6 counter return"
1117+
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ct direction reply counter return"
11151118
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta mark 255 counter return"
11161119

11171120
[ -n "$IPT_APPEND_DNS" ] && {

0 commit comments

Comments
 (0)