@@ -62,8 +62,8 @@ start_redirect() {
62
62
if [ " ${bin_name} " = " clash" ] ; then
63
63
${iptables} -t nat -A BOX_EXTERNAL -p udp --dport 53 -j REDIRECT --to-ports ${clash_dns_port}
64
64
${iptables} -t nat -A BOX_LOCAL -p udp --dport 53 -j REDIRECT --to-ports ${clash_dns_port}
65
- ${iptables} -t nat -A BOX_EXTERNAL -d ${clash_fake_ip_range } -p icmp -j DNAT --to-destination 127.0.0.1
66
- ${iptables} -t nat -A BOX_LOCAL -d ${clash_fake_ip_range } -p icmp -j DNAT --to-destination 127.0.0.1
65
+ ${iptables} -t nat -A BOX_EXTERNAL -d ${fake_ip_range_v4 } -p icmp -j DNAT --to-destination 127.0.0.1
66
+ ${iptables} -t nat -A BOX_LOCAL -d ${fake_ip_range_v4 } -p icmp -j DNAT --to-destination 127.0.0.1
67
67
# else
68
68
# Other types of inbound should be added here to receive DNS traffic instead of sniffing
69
69
# ${iptables} -t nat -A BOX_EXTERNAL -p udp --dport 53 -j REDIRECT --to-ports ${redir_port}
@@ -73,6 +73,10 @@ start_redirect() {
73
73
for subnet in ${intranet[@]} ; do
74
74
${iptables} -t nat -A BOX_EXTERNAL -d ${subnet} -j RETURN
75
75
${iptables} -t nat -A BOX_LOCAL -d ${subnet} -j RETURN
76
+ ${iptables} -t nat -N LOCAL_IP_V4
77
+ ${iptables} -t nat -F LOCAL_IP_V4
78
+ ${iptables} -t nat -A BOX_EXTERNAL -j LOCAL_IP_V4
79
+ ${iptables} -t nat -A BOX_LOCAL -j LOCAL_IP_V4
76
80
done
77
81
78
82
${iptables} -t nat -A BOX_EXTERNAL -p tcp -i lo -j REDIRECT --to-ports ${redir_port}
@@ -159,6 +163,8 @@ stop_redirect() {
159
163
${iptables} -t nat -X BOX_EXTERNAL
160
164
${iptables} -t nat -F BOX_LOCAL
161
165
${iptables} -t nat -X BOX_LOCAL
166
+ ${iptables} -t nat -F LOCAL_IP_V4
167
+ ${iptables} -t nat -X LOCAL_IP_V4
162
168
}
163
169
164
170
start_tproxy () {
@@ -203,10 +209,16 @@ start_tproxy() {
203
209
for subnet6 in ${intranet6[@]} ; do
204
210
${iptables} -t mangle -A BOX_EXTERNAL -d ${subnet6} -j RETURN
205
211
done
212
+ ${iptables} -t mangle -N LOCAL_IP_V6
213
+ ${iptables} -t mangle -F LOCAL_IP_V6
214
+ ${iptables} -t mangle -A BOX_EXTERNAL -j LOCAL_IP_V6
206
215
else
207
216
for subnet in ${intranet[@]} ; do
208
217
${iptables} -t mangle -A BOX_EXTERNAL -d ${subnet} -j RETURN
209
218
done
219
+ ${iptables} -t mangle -N LOCAL_IP_V4
220
+ ${iptables} -t mangle -F LOCAL_IP_V4
221
+ ${iptables} -t mangle -A BOX_EXTERNAL -j LOCAL_IP_V4
210
222
fi
211
223
212
224
${iptables} -t mangle -A BOX_EXTERNAL -p tcp -i lo -j TPROXY --on-port ${tproxy_port} --tproxy-mark ${mark_id}
@@ -255,10 +267,12 @@ start_tproxy() {
255
267
for subnet6 in ${intranet6[@]} ; do
256
268
${iptables} -t mangle -A BOX_LOCAL -d ${subnet6} -j RETURN
257
269
done
270
+ ${iptables} -t mangle -A BOX_LOCAL -j LOCAL_IP_V6
258
271
else
259
272
for subnet in ${intranet[@]} ; do
260
273
${iptables} -t mangle -A BOX_LOCAL -d ${subnet} -j RETURN
261
274
done
275
+ ${iptables} -t mangle -A BOX_LOCAL -j LOCAL_IP_V4
262
276
fi
263
277
264
278
# Disable kernel
@@ -385,6 +399,11 @@ stop_tproxy() {
385
399
${iptables} -t mangle -F BOX_LOCAL
386
400
${iptables} -t mangle -X BOX_LOCAL
387
401
402
+ iptables -t mangle -F LOCAL_IP_V4
403
+ iptables -t mangle -X LOCAL_IP_V4
404
+ ip6tables -t mangle -F LOCAL_IP_V6
405
+ ip6tables -t mangle -X LOCAL_IP_V6
406
+
388
407
${iptables} -t mangle -F DIVERT
389
408
${iptables} -t mangle -X DIVERT
390
409
0 commit comments