در نظر داشته باشید در این آموزش مبنا سیستم عامل لینوکس توزیع های مبتنی بر دبیان است. در صورتی که از سیستم عامل یا توزیع متفاوتی استفاده می کنید، ممکن است بخش هایی از این آموزش متفاوت باشد.
فایل لیست آی پی های ستون را می توانید از طریق این دو لینک دریافت کنید:
https://edge.sotoon.ir/ip-list.txt
https://edge.sotoon.ir/ip-list.json
ابتدا فایل زیر را بر روی سرور های خود قرار دهید:
#!/bin/bash
if ! [ -f "/etc/debian_version" ]; then
echo "Your Operating System is not supported."
exit 1
fi
if ! [ -x "$(command -v ipset)" ]; then
apt-get update
apt-get install ipset netfilter-persistent ipset-persistent
if [ $? -eq 0 ]; then
echo "Internet Connection Issue. Please Install IPSET Package Manually."
exit 1
fi
fi
curl -s -o /tmp/sotoon-ips.txt https://edge.sotoon.ir/ip-list.txt
if [ $? -ne 0 ]; then
echo "Could not be able to download IP list. Please try again."
exit 1
fi
ipset -N sotoon-ips nethash -exist
ipset flush sotoon-ips
for ip in `cat /tmp/sotoon-ips.txt`; do
ipset add sotoon-ips $ip;
done
سپس پرمیشن اجرا را به آن بدهید:
chmod +x /path/to/script.sh
برای اطمینان از عملکرد اسکریپت یکبار به صورت دستی آن را اجرا کنید. سپس می توانید با قرار دادن آن در crontab سیستم خود هر ۲۴ ساعت یکبار آن را اجرا کنید.
0 0 * * * /path/to/script.sh > /dev/null 2>&1
پس از انجام مراحل بالا متناسب با قوانین فایروال، می توانید از این IPSet استفاده کنید:
-A INPUT -m set --match-set sotoon-ips src -j ACCEPT
نمونه ساده ای از قوانین می تواند به این شکل باشد:
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m set --match-set sotoon-ips src -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable