iptables 设置(NAT和ip限制,80转发,需要有ip文件ip2.txt):

iptables NAT+squid实现透明代理intra="192.168.0.0/24"
iptables NAT+squid实现透明代理myip
="219.217.235.73"
iptables NAT+squid实现透明代理myDNS
="202.118.224.101:53"
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理echo 
1 > /proc/sys/net/ipv4/ip_forward
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
#清空规则
iptables NAT+squid实现透明代理
/sbin/iptables -
iptables NAT+squid实现透明代理
/sbin/iptables -t nat -F
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
/sbin/iptables -P FORWARD DROP
iptables NAT+squid实现透明代理
/sbin/iptables -P INPUT DROP
iptables NAT+squid实现透明代理
/sbin/iptables -P OUTPUT DROP
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
/sbin/iptables -A INPUT -i lo -j ACCEPT
iptables NAT+squid实现透明代理
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
#允许DNS
iptables NAT+squid实现透明代理
iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT    #允许外面53端口的UDP数据进来
iptables NAT+squid实现透明代理
iptables -A PREROUTING -t nat -p udp -s $intra -192.168.0.1 --dport 53 -j DNAT --to-destination $myDNS    #允许局域网设置DNS为192.168.0.1
iptables NAT+squid实现透明代理
iptables -A PREROUTING -t nat -p udp -s $intra -d $myip --dport 53 -j DNAT --to-destination $myDNS    #允许局域网设置DNS为$myip
iptables NAT+squid实现透明代理#
iptables -A FORWARD -p udp -d 202.118.224.101 --dport ! 53 -j DROP
iptables NAT+squid实现透明代理

iptables NAT+squid实现透明代理
#iptables -A OUTPUT  -d $intra -j ACCEPT    
iptables NAT+squid实现透明代理#
允许局域网发出的所有消息,如果使用地址过滤,就要修改这里,或者修改squid的规则。。
iptables NAT+squid实现透明代理#
以下为过滤收费ip
iptables NAT+squid实现透明代理
fip=$(awk 'NF>2 {print $1 "/" $3}' ip2.txt)
iptables NAT+squid实现透明代理
for x in $fip
iptables NAT+squid实现透明代理    do
iptables NAT+squid实现透明代理        
#允许连接免费IP段
iptables NAT+squid实现透明代理
    /sbin/iptables -A FORWARD -d $x -j ACCEPT        #允许内网访问外面
iptables NAT+squid实现透明代理
    /sbin/iptables -A OUTPUT -d $x  -j ACCEPT    #允许本机访问外面
iptables NAT+squid实现透明代理
    #iptables -A OUTPUT  -d $x -j ACCEPT        #不知道为什么这么也不行,局域网还是无法访问外网
iptables NAT+squid实现透明代理
    echo $x
iptables NAT+squid实现透明代理    done
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
#允许外网访问里面
iptables NAT+squid实现透明代理
/sbin/iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables NAT+squid实现透明代理
#允许外网访问本机
iptables NAT+squid实现透明代理
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
#允许内网访问本机
iptables NAT+squid实现透明代理#
/sbin/iptables -A INPUT -i eth1 -s $intra -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables NAT+squid实现透明代理#
/sbin/iptables -A INPUT -i eth1 -s $intra -p tcp --dport 80 -j ACCEPT
iptables NAT+squid实现透明代理
/sbin/iptables -A INPUT -i eth1 -s $intra -j ACCEPT
iptables NAT+squid实现透明代理
#允许本机访问内网
iptables NAT+squid实现透明代理
/sbin/iptables -A OUTPUT -o eth1 -d  $intra -j ACCEPT
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
#iptables -A INPUT -i eth0 -p udp  -j ACCEPT    #允许外面的UDP数据进来
iptables NAT+squid实现透明代理

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

iptables NAT+squid实现透明代理
#实现NAT多电脑上网
iptables NAT+squid实现透明代理
/sbin/iptables -t nat -A POSTROUTING -o eth0 -192.168.0.0/24 -j SNAT --to 219.217.235.73
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
# 将 对于 80、443 端口的访问 重定向到 3128 端口 </P><P>
iptables NAT+squid实现透明代理
iptables -t nat -A PREROUTING -i eth1 -p tcp -192.168.0.0/24 --dport 80 -j DNAT --to  192.168.0.1:3128 
iptables NAT+squid实现透明代理iptables 
-t nat -A PREROUTING -i eth1 -p tcp -192.168.0.0/24 --dport 443 -j DNAT --to 192.168.0.1:3128 
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理



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

iptables NAT+squid实现透明代理httpd_accel_host virtual
iptables NAT+squid实现透明代理httpd_accel_port 
80
iptables NAT+squid实现透明代理httpd_accel_with_proxy on
iptables NAT+squid实现透明代理httpd_accel_uses_host_header on
iptables NAT+squid实现透明代理cache_effective_user squid
iptables NAT+squid实现透明代理cache_effective_group squid
iptables NAT+squid实现透明代理visible_hostname hit405
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理acl all src 
0.0.0.0/0.0.0.0
iptables NAT+squid实现透明代理
#acl auth proxy_auth REQUIRED
iptables NAT+squid实现透明代理#
acl our src 192.168.0.0/255.255.255.0
iptables NAT+squid实现透明代理#
http_access allow our
iptables NAT+squid实现透明代理#
http_access allow  auth !our #这句话那里不对??
iptables NAT+squid实现透明代理

iptables NAT+squid实现透明代理
#第一种配置,访问国外时显示错误
iptables NAT+squid实现透明代理#
#################################################################
iptables NAT+squid实现透明代理
acl freeip1 dst "/etc/squid/freeip_for_squid.txt"
iptables NAT+squid实现透明代理http_access allow freeip1
iptables NAT+squid实现透明代理http_access deny all
iptables NAT+squid实现透明代理
####################################################################################################################################
iptables NAT+squid实现透明代理

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

iptables NAT+squid实现透明代理cache_dir ufs 
/var/spool/squid 100 16 256
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理

执行以下命令启动squid

iptables NAT+squid实现透明代理mkdir  /var/spool/squid 
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理useradd squid
iptables NAT+squid实现透明代理chown squid 
/var/spool/squid 
iptables NAT+squid实现透明代理chown squid 
/var/log/squid/access.log
iptables NAT+squid实现透明代理
iptables NAT+squid实现透明代理
#cp ERR_ACCESS_DENIED /usr/share/squid/errors/English
iptables NAT+squid实现透明代理#
rm -f ./access.log
iptables NAT+squid实现透明代理#
ln /var/log/squid/access.log ./
iptables NAT+squid实现透明代理
echo "iptables NAT+squid实现透明代理iptables NAT+squid实现透明代理iptables NAT+squid实现透明代理iptables NAT+squid实现透明代理..restart 
iptables NAT+squid实现透明代理
squid -k reconfigure
iptables NAT+squid实现透明代理squid 
-z
iptables NAT+squid实现透明代理squid
iptables NAT+squid实现透明代理

相关文章:

  • 2021-09-05
  • 2021-09-26
  • 2021-05-22
  • 2022-12-23
  • 2022-01-07
  • 2022-01-02
  • 2021-09-14
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-19
  • 2022-01-17
  • 2022-12-23
  • 2022-01-07
  • 2021-09-11
  • 2022-12-23
相关资源
相似解决方案