当iptables大量插入含有ip地址的规则时,iptables的性能会比较差,此时可以考虑使用ipset(ip集合)。
#!/bin/sh
prepare_net_kill_ipts() {
ipset -! create apple_domains hash:ip netmask 24
domains="itunes.apple.com init.itunes.apple.com s.mzstatic.com p49-buy.itunes.apple.com"
for d in $domains; do
ips=$(resolveip $d)
for i in $ips; do
ipset -! add apple_domains $i
done
done
}
if [ $# -lt 1 ]; then
echo "Specify command: <prepare>/<enable>/<disable>"
exit 1
fi
cmd=$1
case $cmd in
prepare)
prepare_net_kill_ipts
;;
enable)
prepare_net_kill_ipts
;;
disable)
;;
*)
echo "Invalid command."
exit 1
;;
esac