squid+iptables透明代理

发表于:2007-07-04来源:作者:点击数: 标签:
参照这篇文章做的代理设置 # NETWORK OPTIONS(有关的 网络 选项) # ----------------------------------------------------------------------------- http_port 3128 #代理端口 # OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM(作用于邻居选择
参照这篇文章做的代理设置

# NETWORK OPTIONS(有关的网络选项) # -----------------------------------------------------------------------------
http_port 3128 #代理端口

# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM(作用于邻居选择算法的有关选项)
#-----------------------------------------------------------------------------

#禁止缓存
hierarchy_stoplist cgi-bin ?
hierarchy_stoplist -i ^https:\ ?
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi
acl denyssl urlpath_regex -i ^https:\
no_cache deny QUERY
no_cache deny denyssl

# OPTIONS WHICH AFFECT THE CACHE SIZE(定义cache大小的选项)
# -----------------------------------------------------------------------------

cache_mem 8 MB   #额外使用内存量,可根据你的系统内存在设定,一般为实际内存的1/3

cache_swap_low 90    #最低缓存百分比
cache_swap_high 95     ##最高缓存百分比,就是上面那个额外内存的使用百分比

maximum_object_size 4096 KB  #单个文件最大缓存大小,超过这个大小将不缓存

maximum_object_size_in_memory 8 KB  #在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中

#有DNS正反解所得到的IP存在缓存区的大小,这样可以加快解析速度
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024


# LOGFILE PATHNAMES AND CACHE DIRECTORIES(定义日志文件的路径及cache的目录)
# ----------------------------------------------------------------------------- 

cache_dir aufs /Cache1 100 16 256 
cache_dir aufs /Cache2 100 16 256

#日志存放位置
cache_aclearcase/" target="_blank" >ccess_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log

#  TAG: cache_store_log
cache_store_log /usr/local/squid/var/logs/store.log

#  TAG: pid_filename
pid_filename /usr/local/squid/var/logs/squid.pid

# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS(外部支持程序选项)
# -----------------------------------------------------------------------------

#用代理登陆匿名ftp服务选项
#  TAG: ftp_user
ftp_user Squid@    #用户名
ftp_passive on     #被动模式

#认证
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off

# OPTIONS FOR TUNING THE CACHE(调整cache的选项)
# -----------------------------------------------------------------------------

#  TAG: refresh_pattern    Cache更新时间设置
#<refresh_pattern> <regex> <最小时间> <百分比> <最大时间>

refresh_pattern ^ftp:      1440   20%   10080
refresh_pattern ^gopher:   1440   0%   1440
refresh_pattern .      0   20%   4320

#上面第一行如果网址开头是 ftp 的话,那么在一天(1440分钟)后,
#如果proxy 再次取用这个档案时,则 cache 内的数据会被更新!

# TIMEOUTS (超时)
# -----------------------------------------------------------------------------
#连接到其他机器的最大尝试时间
connect_timeout 1 minute

#连接到上层代理的超时时间
peer_connect_timeout 30 seconds

#返回超时
request_timeout 2 minutes

#持续连接时间
persistent_request_timeout 1 minute

# ACCESS CONTROLS(访问控制)
# -----------------------------------------------------------------------------

#  TAG: acl

#Examples:
#acl myexample dst_as 1241
#acl password proxy_auth REQUIRED
#acl fileupload req_mime_type -i ^multipart/form-data$
#acl javascript rep_mime_type -i ^application/x-javascript$
#
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443 563   # https, snews
acl Safe_ports port 70      # gopher
acl Safe_ports port 210      # wais
acl Safe_ports port 1025-65535   # unregistered ports
acl Safe_ports port 280      # http-mgmt
acl Safe_ports port 488      # gss-http
acl Safe_ports port 591      # filemaker
acl Safe_ports port 777      # multiling http
acl CONNECT method CONNECT

acl inside src 192.168.0.0/24   #内部网IP段
acl localmac arp "/usr/local/squid/localmac"  #mac地址文件

#  TAG: http_access
http_access allow inside  #允许inside规则通过
#http_access allow localmac  #允许localmac里面有登记的mac地址通过

#
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
#

#http_access deny to_localhost
#
# And finally deny all other access to this proxy
http_access deny all

#  TAG: http_reply_access

http_reply_access allow all

#  TAG: icp_access

#icp_access allow all

#  TAG: cache_peer_access

# ADMINISTRATIVE PARAMETERS(管理参数)
# -----------------------------------------------------------------------------

#  TAG: cache_mgr
cache_mgr webmaster@localhost  #管理员信箱

#  TAG: cache_effective_user
cache_effective_user squid  #运行squid时的用户
cache_effective_group  squid #运行squid时的组

#  TAG: visible_hostname
visible_hostname ProxyServer  #代理服务器名称


# OPTIONS FOR THE CACHE REGISTRATION SERVICE(cache注册服务选项)
# -----------------------------------------------------------------------------


# HTTPD-ACCELERATOR OPTIONS(HTTPD加速选项)
# -----------------------------------------------------------------------------
#设定透明代理
httpd_accel_host ProxyServer  #主机名
httpd_accel_port 80  #透明代理端口
httpd_accel_with_proxy on
httpd_accel_uses_host_header on


# MISCELLANEOUS(杂项)
# -----------------------------------------------------------------------------

#  TAG: logfile_rotate
logfile_rotate 4

#  TAG: forwarded_for   on|off
#关闭此项将在访问某些论坛时显示的IP是unknown,
#如果打开则显示的是你client的内网IP

forwarded_for off


#图标文件目录
# icon_directory /usr/local/squid/share/icons

#错误提示文件目录
# error_directory /usr/local/squid/share/errors/Simplify_Chinese

#  TAG: snmp_port
#   Squid can now serve statistics and status information via SNMP.
#   By default it listens to port 3401 on the machine. If you don't
#   wish to use SNMP, set this to "0".
#
#Default:
# snmp_port 3401

#  TAG: snmp_access
#   Allowing or denying access to the SNMP port.
#
#   All access to the agent is denied by default.
#   usage:
#
#   snmp_access allow|deny [!]aclname ...
#
#Example:
# snmp_access allow snmppublic localhost
# snmp_access deny all
#
#Default:
# snmp_access deny all

# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)(延时池参数)
# -----------------------------------------------------------------------------


#  TAG: coredump_dir
#当squid突然挂掉的时候,或者突然出现什么故障的时候,将squid在内存中的资料写到硬盘中
coredump_dir /usr/local/squid/var/cache

二、设置iptables支持透明代理
#!/bin/bash
OUT_IP="221.000.000.0"
IN_IP="192.168.0.1"
echo "1" > /proc/sys/net/ipv4/ip_forward #设置转发
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE #设置nat功能
iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128 #将所有80端口的请求都转发到suqid的3128端口上
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source $OUT_IP

原文转自:http://www.ltesting.net