mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-26 18:12:51 +08:00
50 lines
1.4 KiB
Bash
Executable File
50 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# Run as root on OpenWrt with the package installed. Rules stay in a new netns.
|
|
set -eu
|
|
ns="ssr6-check-$$"
|
|
tmp=$(mktemp -d)
|
|
cleanup() {
|
|
ip netns del "$ns" 2>/dev/null || true
|
|
rm -rf "$tmp"
|
|
}
|
|
trap cleanup EXIT INT TERM
|
|
ip netns add "$ns"
|
|
. /usr/share/shadowsocksr/ipv6.sh
|
|
uci_get_by_type() { :; }
|
|
uci_get_by_name() { :; }
|
|
FWMARK=0x53535250
|
|
local_port=1234
|
|
LOCAL_PORT=301
|
|
Interface=""
|
|
LAN_AC_IP="w192.0.2.1 2001:db8::1"
|
|
WAN_BP_IP="192.0.2.2 2001:db8:1::/64"
|
|
WAN_FW_IP="192.0.2.3 2001:db8:2::/64"
|
|
LAN_BP_IP="2001:db8::2"
|
|
LAN_FP_IP="2001:db8::3"
|
|
LAN_GM_IP="2001:db8::4"
|
|
count=0
|
|
for RUNMODE in gfw router all; do
|
|
for OUTPUT in 0 1 2; do
|
|
for udp in tproxy quic disabled; do
|
|
TPROXY=""
|
|
DISABLE_UDP_RULES=0
|
|
case "$udp" in
|
|
tproxy) TPROXY=2 ;;
|
|
disabled) DISABLE_UDP_RULES=1 ;;
|
|
esac
|
|
for PROXY_PORTS in "" "-m multiport --dports 53,80,443,8000:8100"; do
|
|
ip netns exec "$ns" nft flush ruleset
|
|
ip netns exec "$ns" nft add table inet ss_spec
|
|
ipv6_rules_generate > "$tmp/rules"
|
|
ip netns exec "$ns" nft -f "$tmp/rules"
|
|
# Validate the serialized form used during a firewall reload.
|
|
ip netns exec "$ns" nft list ruleset > "$tmp/snapshot"
|
|
ip netns exec "$ns" nft flush ruleset
|
|
ip netns exec "$ns" nft -f "$tmp/snapshot"
|
|
count=$((count + 1))
|
|
done
|
|
done
|
|
done
|
|
done
|
|
printf 'PASS: %s IPv6 mode/OUTPUT/UDP/port combinations and snapshot reloads\n' "$count"
|