加速WEB访问:使用DNSmasq与squid代理并过滤广告
来源:互联网 发布:java 获取运行时间 编辑:程序博客网 时间:2024/05/17 06:18
加速WEB访问:使用DNSmasq与squid代理并过滤广告
- 实验环境
- 安装Squid
- 配置Squid
- IP转发
- 防火墙的配置
- 测试代理服务
- 屏蔽广告
简介
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,提供了DNS功能和可选择的DHCP功能。通过其DNS缓存的功能,可以大大提高公共网络中的域名解析速度,从而提升网站访问速度。
squid代理服务提供了WEB页面缓存的功能,也可以帮助用户加速网站的访问,还能进行必要的行为管控(如禁止访问某些网站、过滤网页中的某些内容等)。本文将同时介绍正向代理和透明代理:
- 正向代理:需要用户在客户端进行配置,手动指定代理服务器和端口,但是通过该代理,可以访问所有WEB服务(HTTP和HTTPS)。
- 透明代理:则不需要用户进行任何配置即可使用,即对于应用而言不需要知道代理的存在。
然而,透明代理有个缺点,它只能代理HTTP (80端口)协议,而对于经过加密的HTTPS协议,及其他协议如FTP、POP3等就爱莫能助了。这时候就需要用到CentOS的IP转发功能了。通过防火墙的设置,可以只允许访问HTTPS等必要的服务。
实验环境
为容易理解,本实验虚拟机所在网络仅一个公有Internet网络,并不接入企业网络或者其他形式的私有网络。
实验中,假设CentOS所用IP地址为192.168.10.24,外网路由器(CentOS的默认网关)地址192.168.10.1
DNSmasq的配置
DNSmasq是一种轻量级的非常容易部署的服务,不仅可以在流行的Linux发行版中随处可见,在众多流行的路由器系统中也有,如OpenWRT, DD-WRT, Tomato等,并且其DHCP服务往往是其提供的。因此这里的配置也适用于安装这些系统的路由器参考。
修改DNSmasq的配置文件/etc/dnsmasq.conf
:
#不要使用/etc/resolv.conf
文件no-resolvno-poll#这两行告诉DNSmasq使用当地ISP的本地DNS进行解析server=218.2.2.2server=218.4.4.4#对于google,youtube的服务,使用谷歌的DNS解析server=/google.com/8.8.8.8server=/youtube.com/8.8.8.8#这两行用于防止DNS污染bogus-nxdomain=202.102.110.203bogus-nxdomain=202.102.110.204#DNSmasq也可以通过域名过滤某些网站或服务address=/googlesyndication.com/127.0.0.1address=/cpro.baidu.com/127.0.0.1address=/union.baidu.com/127.0.0.1address=/google-analytics.com/127.0.0.1address=/admaster.com.cn/127.0.0.1address=/jiathis.com/127.0.0.1
配置完成后,需要重启服务:
systemctl restart dnsmasq
服务启动后,需要到路由器上修改DHCP中指定的DNS服务器地址,改成CentOS主机的地址“192.168.10.24”
重新获取IP后,可用过nslookup命令查看是否成功,如:nslookup union.baidu.com 返回 127.0.0.1则表示成功。
squid代理的配置
安装Squid
yum install squidchkconfig squid on
配置Squid
编辑/etc/squid/squid.conf
,指定两行http_port
以下第一行为3128端口启用普通正向代理,第二行为3129端口启用透明代理。
http_port 0.0.0.0:3128http_port 0.0.0.0:3129 transparent
由于已经使用dnsmasq缓存服务,可以将DNS服务器改为:
dns_nameservers 127.0.0.1
IP转发
由于透明代理只能代理HTTP协议,为了让虚拟机能够像路由器一样工作,需要开启该功能。
即在/etc/sysctl.conf
中,设置:
net.ipv4.ip_forward=1
之后通过sysctl -p
加载并启用新设置。
防火墙的配置
# 允许接收相关应答iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# 仅允许以下入站协议iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A INPUT -p tcp --dport 3128 -j ACCEPTiptables -A INPUT -p tcp --dport 3129 -j ACCEPTiptables -A INPUT -p udp --dport 53 -j ACCEPT# 将HTTP服务重定向到3129端口,交给squid,这是透明代理的关键iptables -t nat -A PREROUTING -p tcp -s 192.168.10.0/24 --dport 80 -j REDIRECT --to-ports 3129# 仅允许以下协议转发给默认路由(即外网路由器)iptables -A FORWARD -p tcp --dport 443 -j ACCEPT# 默认策略iptables -P INPUT DROPiptables -P FORWARD DROP
测试代理服务
配置完成后,需要重启代理服务:
systemctl restart squid
对于正向代理,直接在IE中指定代理服务器192.168.10.24和端口3128即可,如能正常访问WEB,则成功。
服务启动后,需要到路由器上修改DHCP中指定的新的网管地址,改成CentOS主机的地址“192.168.10.24”
通过手机等客户端,不加设置,就应可以访问外网了。
另外,可以通过/var/log/squid/access.log
查看访问日志,如果成功访问,日志中会有体现。
屏蔽广告
我们通过以下脚本生成ad_block.txt
,该文件包含了一个屏蔽列表:
# Generate ad_block.txt#!/bin/bashwget -O /etc/squid/ad_block.txt 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex&showintro=0&mimetype=plaintext'systemctl restart squid
可以将该脚本加入crond中,以定期更新之。
编辑/etc/squid/squid.conf
,增加下面两行:
acl ads dstdom_regex "/etc/squid/ad_block.txt"http_access deny ads
重启squid服务后,即可。
- 作者:lesca 来源: Lesca技术宅
- 标签: DNSmasq squid 加速
- 发布时间:2015-02-07 21:02:18
- 加速WEB访问:使用DNSmasq与squid代理并过滤广告
- Squid反向代理加速WEB
- 架设Squid代理作为WEB缓存加速
- IMX6之openwrt使用dnsmasq实现广告过滤
- squid 2.6 + iptables 反向代理设置(加速web)
- squid反向代理作web加速-配置详解
- Squid中文权威指南-----加速高负荷Web访问
- 使用代理访问web
- squid+apache使web加速
- squid反向代理服务器加速web
- squid 反向WEB代理
- OpenResty 代理 Google Analytics 并cache 加速访问
- squid-2.6之Web反向代理加速实做/防盗链/防盗用/防爬虫
- 基于反向代理的Web缓存加速现代理服务器方案 附squid性能测试
- squid 2.6之Web反向代理加速实做/防盗链/防盗用/防爬虫
- Squid-2.6之集群(sibling模式)Web反向代理加速实
- Squid 3.0 反向代理(加速模式)配置
- 反向代理与squid
- Eclipse的单步调试
- 元素的大小
- 在CentOS安装pptpd以及部署
- C# 中的委托和事件
- nginx初体验
- 加速WEB访问:使用DNSmasq与squid代理并过滤广告
- Java开发中JDBC连接数据库的步骤
- HTML常用标签之文本标签
- 服务端架构中的“网关服务器”
- 笔记:Apache Chemistry OpenCMIS Client端开发2
- Spring MVC中@RequestMapping 6个基本用法小结
- 影响语音交互普及起来的心理因素有哪些?
- 看数据结构写代码(16)顺序队列的实现(循环队列)
- 函数模版和类模版