در اینجا این است که چگونه:
#! / bin / sh
# حذف #، سپس # در خط در بالا اضافه کنید تا فعال شود logs!
# اختیاری: تغییر نام [BLOCKED - INBOUND] به کشور مشخص شده (فقط یک نام در یک زمان مجاز است)
# استفاده برای AsusWRT مرلین به شرح زیر است:
# sh / jffs/scripts/scriptname.sh "xx xx xx xx"
# یا sh / jffs/scripts/countryblock.sh "xx"
# فایل را که میخواهید بفرستید، سپس فقط یک ورودی در / jffs / scripts / firewall-start اضافه کنید (بالای Skynets)
# مثلا:
# sh / jffs/scripts/countryblock.sh "il"
# chmod 0755 / jffs/scripts/countryblock.sh
اگر [ -z "$1" ]؛ سپس اکو "کشور فیلد را نمی توان خالی کرد - لطفا دوباره امتحان کنید"؛ اکو خروج 2؛ فی
اگر [ "${#1}" -gt "246" ]؛ سپس کشور فهرست = "کشورهای متعدد"؛ کشور لیست دیگر = "$ 1"؛ فی
اگر [ "$(nvram get wan0_proto)" = "pppoe" ] || [ "$(nvram get wan0_proto)" = "pptp" ] || [ "$(nvram get wan0_proto)" = "l2tp" ]؛ سپس
iface = "ppp0"
چیز دیگری
iface = "$ (nvram get wan0_ifname)"
فی
modprobe xt_set
اگر! ipset -L -n CountryBlock> / dev / null 2> & 1؛ سپس ipset -q ایجاد CountryBlock هاش: net --maxelem 200000 نظر؛ فی
iptables -t raw -D PREVENTION -i "$ iface" -m set -match-set CountryBlock src -j DROP 2> / dev / null
# iptables -t raw -D PREROUTING -i "$ iface" -m set -match-set CountryBlock src -j LOG --log prefix "[BLOCKED - INBOUND]" --log-tcp-sequence --log-tcp- options -log-ip-options 2> / dev / null
iptables -t raw -D predefined -i "$ iface" -m set -match-set CountryBlock src -p tcp -m tcp -m multiport --portsport 80،443 -j ACCEPT 2> / dev / null
iptables -t raw -D PREROUTING -i br0 -m set -match-set CountryBlock dst -j DROP 2> / dev / null
# iptables -t raw -D PREROUTING -i br0 -m set -match-set CountryBlock dst -j LOG --log-prefix "[BLOCKED - OUTBOUND]" --log-tcp-sequence --log-tcp-options - log-ip-options 2> / dev / null
iptables -t raw -D preeroing -i br0 -m set -match-set CountryBlock dst -p tcp -m tcp -m multiport --dports 80،443 -j ACCEPT 2> / dev / null
iptables -t raw -I PREROUTING -i "$ iface" -m set -match-set CountryBlock src -j DROP 2> / dev / null
# iptables -t raw -I PREROUTING -i "$ iface" -m set -match-set CountryBlock src -j LOG --log prefix "[BLOCKED - INBOUND]" --log-tcp-sequence --log-tcp- options -log-ip-options 2> / dev / null
iptables -t raw -I PREROUTING -i "$ iface" -m set -match-set CountryBlock src -p tcp -m tcp -m multiport --sports 80،443 -j ACCEPT 2> / dev / null
iptables -t raw -I PREROUTING -i br0 -m set -match-set CountryBlock dst -j DROP 2> / dev / null
# iptables -t raw -I PREROUTING -i br0 -m set -match-set CountryBlock dst -j LOG --log prefix "[BLOCKED - OUTBOUND]" --log-tcp-sequence --log-tcp-options - log-ip-options 2> / dev / null
iptables -t raw -I PROEROUTING -i br0 -m set -match-set CountryBlock dst -p tcp -m tcp -m multiport -dports 80،443 -j ACCEPT 2> / dev / null
echo "ممنوعیت دامنه های شناخته شده برای ($ {1})"
اکو "فهرست های دانلود"
برای کشور در 1 دلار؛ انجام دادن
/ usr / sbin / curl -fsL --retry 3 http://ipdeny.com/ipblocks/data/aggregated/"$country"-aggregated.zone >> /tmp/CountryBlock.txt
انجام شده
echo "Filtering IPv4 Ranges and Applying Blacklists"
grep -F "/" /tmp/CountryBlock.txt | sed -n "s / \ r //؛ / ^ $ / d؛ / ^ [0-9,\.,\/] * $ / s / ^ / add CountryBlock / p" | sed "s / $ / & نظر " کشور: کشور کشور لیست "/" | ipset بازگرداندن -!
rm -rf "/tmp/CountryBlock.txt"
