iptables NAT+squid实现透明代理

转载 2016年08月31日 16:22:37
intra="192.168.0.0/24"
myip="219.217.235.73"
myDNS="202.118.224.101:53"

echo 1 > /proc/sys/net/ipv4/ip_forward

#清空规则
/sbin/iptables -F 
/sbin/iptables -t nat -F

/sbin/iptables -P FORWARD DROP
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP

/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

#允许DNS
iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT    #允许外面53端口的UDP数据进来
iptables -A PREROUTING -t nat -p udp -s $intra -d 192.168.0.1 --dport 53 -j DNAT --to-destination $myDNS    #允许局域网设置DNS为192.168.0.1
iptables -A PREROUTING -t nat -p udp -s $intra -d $myip --dport 53 -j DNAT --to-destination $myDNS    #允许局域网设置DNS为$myip
#
iptables -A FORWARD -p udp -d 202.118.224.101 --dport ! 53 -j DROP

#iptables -A OUTPUT  -d $intra -j ACCEPT    
#
允许局域网发出的所有消息,如果使用地址过滤,就要修改这里,或者修改squid的规则。。
#
以下为过滤收费ip
fip=$(awk 'NF>2 {print $1 "/" $3}' ip2.txt)
for x in $fip
    do
        #允许连接免费IP段
    /sbin/iptables -A FORWARD -d $x -j ACCEPT        #允许内网访问外面
    /sbin/iptables -A OUTPUT -d $x  -j ACCEPT    #允许本机访问外面
    #iptables -A OUTPUT  -d $x -j ACCEPT        #不知道为什么这么也不行,局域网还是无法访问外网
    echo $x
    done

#允许外网访问里面
/sbin/iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许外网访问本机
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#允许内网访问本机
#
/sbin/iptables -A INPUT -i eth1 -s $intra -m state --state ESTABLISHED,RELATED -j ACCEPT
#
/sbin/iptables -A INPUT -i eth1 -s $intra -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -s $intra -j ACCEPT
#允许本机访问内网
/sbin/iptables -A OUTPUT -o eth1 -d  $intra -j ACCEPT


#iptables -A INPUT -i eth0 -p udp  -j ACCEPT    #允许外面的UDP数据进来

#允许本机上网。。。如果专作服务器就可以不要
#
/sbin/iptables -A INPUT -d $myip  -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #允许外面访问
#
/sbin/iptables -A INPUT -d $myip  -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #允许里面访问
#
/sbin/iptables -A OUTPUT -d $intra  -i eth0  -j ACCEPT #允许访问内网

#实现NAT多电脑上网
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 219.217.235.73

# 将 对于 80、443 端口的访问 重定向到 3128 端口 </P><P>
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 --dport 80 -j DNAT --to  192.168.0.1:3128 
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 --dport 443 -j DNAT --to 192.168.0.1:3128 




squid设置:
/etc/squid/squid.conf文件:(需要有ip列表文件/etc/squid/freeip_for_squid.txt,一行一个ip/mask

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
cache_effective_user squid
cache_effective_group squid
visible_hostname hit405

acl all src 0.0.0.0/0.0.0.0
#acl auth proxy_auth REQUIRED
#
acl our src 192.168.0.0/255.255.255.0
#
http_access allow our
#
http_access allow  auth !our #这句话那里不对??

#第一种配置,访问国外时显示错误
#
#################################################################
acl freeip1 dst "/etc/squid/freeip_for_squid.txt"
http_access allow freeip1
http_access deny all
####################################################################################################################################

#第二种配置,访问国外时使用二级代理(有些问题!!)
#
###################################################################################################################################
#
acl freeip1 dst "/etc/squid/freeip_for_squid.txt"
#
cache_peer 219.232.9.181 parent 80 0 no-query no-digest no-netdb-exchange
#
cache_peer_access  219.232.9.181 allow !freeip1
#
cache_peer_access  219.232.9.181 deny freeip1
#
#
always_direct deny !freeip1
#
always_direct allow freeip1
#
#
never_direct allow !freeip1
#
never_direct deny  freeip1
#
http_access allow all
#
###################################################################################################################################

cache_dir ufs /var/spool/squid 100 16 256

执行以下命令启动squid

mkdir  /var/spool/squid 

useradd squid
chown squid /var/spool/squid 
chown squid /var/log/squid/access.log

#cp ERR_ACCESS_DENIED /usr/share/squid/errors/English
#
rm -f ./access.log
#
ln /var/log/squid/access.log ./
echo "..restart 
squid -k reconfigure
squid -z
squid

iptables:tproxy做透明代理

透明代理:客户端向真实服务器发起连接,代理机冒充服务器与客户端建立连接,并以客户端ip与真实服务器建立连接进行代理转发。因此对于客户端与服务器来说,代理机都是透明的。...
  • u011431128
  • u011431128
  • 2017年08月22日 16:16
  • 1629

成功使用squid+iptables配置透明代理 (zt)

硬件HP DL145:Opteron×2,AMD8111/8131芯片组,1GB内存,Redhat EL Advanced Server 4 for i386。 首先根据从网上找到的资料配置: squ...
  • wishfly
  • wishfly
  • 2005年03月06日 10:50
  • 5294

使用squid搭建https透明代理

参考链接: http://wiki.squid-cache.org/Features/HTTPS https://www.tectut.com/2015/08/configure-squid-as-...
  • maoji
  • maoji
  • 2016年11月09日 05:06
  • 5596

CentOS 7 配置squid 透明代理(测试笔记)

一:计划进行的方式, 1.系统安装的是centos 7 min。 2.squid是直接yum install squid.service安装的。 3.因为对firewall-cmd不了解,所以先按照从...
  • lxpandsq
  • lxpandsq
  • 2015年10月07日 09:06
  • 4403

squid 正向代理 透明代理分析

squid无论是正向,反向,透明都可以cache。 connect可以作为正向代理来用。客户端向代理发connect方法,代理会根据connect ip:port或host字段连接上游,并返回给客户...
  • rian_lemon
  • rian_lemon
  • 2016年12月15日 10:22
  • 1439

squid透明代理

透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理;域名解析有客户机完成一。编译安装squidtar -zxf /mnt/squid-3....
  • leo15561050003
  • leo15561050003
  • 2017年05月10日 14:59
  • 287

iptables+squid透明代理+防火墙终极配置

以前做的一个 iptables+squid 出了问题,配置文件损坏了,发现再写一个还挺麻烦的,这里保存了一个挺好的文章,备查。iptables+squid透明代理+防火墙终极配置 系统:Cent...
  • shadowkiss
  • shadowkiss
  • 2008年10月10日 17:46
  • 611

squid简易配置透明代理

1、编辑配置文件/etc/squid/squid.conf 增加 acl localnet src 192.168.2.0/255.255.255.0 http_access allow localn...
  • qq_37594711
  • qq_37594711
  • 2017年04月18日 16:22
  • 123

Squid透明代理安装与配置

1,首先从http://www.squid-cache.org下载squid-2.6.STABLE10-20070315.tar.gz最新版 2,解压配置编译参数: ./configure...
  • mergerly
  • mergerly
  • 2014年10月04日 14:31
  • 3064

[ZT]squid中实现https的透明代理

From:http://hi.baidu.com/zkheartboy/blog/item/9e37f0cd374e7f540eb345fe.html使用iptbales+squid很容易实现http...
  • u014461454
  • u014461454
  • 2014年03月31日 17:47
  • 1669
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iptables NAT+squid实现透明代理
举报原因:
原因补充:

(最多只允许输入30个字)