其实这个很简单只需要简单设置一下就OK了,squid里面要设置透明代理,iptables中要设置允许转发包,将来自80端口的包重定向到3128端口(squid监听的端口)就行了。

squid安装这里就不再说了,squid配置简单说一下:

/etc/squid/squid.conf 
http_port 3128  transparent  #squid2.6以上版本都这样设置透明代理
cache_mem 1000 MB 
cache_swap_low 90 
cache_swap_high 95 
cache_dir ufs /opt/cache/squid 8000 16 256 
cache_access_log /var/log/squid/access.log 
cache_store_log /var/log/squid/store.log 
dns_nameservers 210.77.192.88 
maximum_object_size 409600 KB 
maximum_object_size_in_memory 64000 KB 
emulate_httpd_log on 
ipcache_size 1024 
ipcache_low 90 
ipcache_high 95 
fqdncache_size 1024 
forwarded_for on
coredump_dir /opt/cache/squid/coredump

cache_effective_user squid 
cache_effective_group squid 
cache_mgr bikong0411@gmail.com
visible_hostname localhost


访问控制在squid里面设置,squid作透明代理时不能使用用户身份认证机制,即使你设置了也无效。

下面说一下Iptables的设置

首先允许包进行转发

#sysctl -w  net.ipv4.ip_forward=1
#sysctl -p  
               #使设置立即生效

然后设置将来自80端口的包重定向到3128端口的规则链

#iptables -t nat  -A PREROUTING  -i eth0  -p tcp  -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports  3128
#iptables -P  INPUT DROP
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD DROP

这样一个简单的透明代理就做好了,客户机只需要把网管设为代理服务器的ip就能实现通过透明代理上网了。

 
增强DNS服务器的防范DOS/DDOS功能
 
1、使用SYN cookie---SYN cookie是TCP服务器的三次握手协议的一些修改,是专门用来防范SYN Flood***的一种手段。只需root去执行

# echo  1 > /proc/sys/net/ipv4/tcp_syncookies

2、增大backlog---增大backlog的值在一定程度上减缓因大量的SYN请求导致的TCP连接堵塞的状况。一般系统默认为1024,可以改变成2048

echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog

3、缩短retries次数 ---系统默认的retries值为5,减少这个数值可以提高系统的响应能力

#echo "2"  > /poc/sys/net/ipv4/tcp_synack_retries

4、限制SYN频率 ---- 上述几个方法对DDos***效果不是太好,目前比较有效对SYN频率和次数进行限制,这样最大限度的限制了单个ip 发动***的能力。

#/sbin/iptables -A  INPUT  -p  tcp --tcp-flags   SYN,ACK,FIN,RST   SYN -m limit --limit 30/m  --limit-burst  2  -j  ACCEPT