透明代理是NAT和代理的完美结合,之所以称为透明,是因为在这种工作方式下用户感觉不到代理服务器的存在,不需要在浏览器或其他客户端工具(如网络快车等)中作任何设置,客户机只需要将默认网关设置为Linux服务器的IP地址即可。当客户机访问Internet,请求数据包经过Linux服务器转发时,Linux服务器上的iptables将客户机的HTTP请求重定向到Squid代理服务器,由代理服务器代替客户机访问外部信息资源,再将获取的数据传回客户机。
拓扑图:(内网访问外网)
设备 ip地址/子网掩码 网关 DNS
pc : 192.168.20.22/24 192.168.20.100 222.85.85.85
服务器: eth1: 192.168.20.100/24
eth0: 192.168.2.10/24 192.168.2.1
无线AP 192.168.2.1/24
一、准备工作:
1.配ip: setup
网络服务重启并查看网关:
2.连接方式:
eth0 VMnet0 Bridged //桥接到无线路由器直接上网!
eth1 VMnet1 Host-only
3.pc1(内网主机)作为测试: (windows xp)
二、具体配置:
1.开启数据包转发功能!
[root@gjp99 ~]# vim /etc/sysctl.conf
[root@gjp99 ~]# sysctl –p //查看是否已修改成功
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
2.NAT 代替代理实现其功能!
[root@gjp99 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@gjp99 ~]# iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
在squid机器上设置关于dns的nat转换!
[root@gjp99 ~]# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE
[root@gjp99 ~]# iptables -t nat -L -v –n //查看nat的详细信息!
Chain PREROUTING (policy ACCEPT 165 packets, 22327 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 35 packets, 2134 bytes)
pkts bytes target prot opt in out source destination
4 251 MASQUERADE udp -- * eth0 192.168.20.0/24 0.0.0.0/0 udp dpt:53
设置端口重定向:
[root@gjp99 ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-ports 3128
3.打开透明传输
[root@gjp99 ~]# vim /etc/squid/squid.conf
4.客户端访问成功
注意:要经过代理服务器访问的主机,在DOS下不能使用ping 、tracert命令,但可以正常上网!
[root@gjp99 ~]# tail -f /var/log/squid/access.log
1346486724.345 1295 192.168.20.22 TCP_MISS/302 928 GET http://www.google.com/ - DIRECT/74.125.128.104 text/html
反向代理:
简介:
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
什么是反向代理呢?
反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载。
Web服务器加速(反向代理)是针对Web服务器提供加速功能的。它作为代理Cache,但并不针对浏览器用户,而针对一台或多台特定Web服务器(这也是反向代理名称的由来)。实施反向代理,只要将Reverse Proxy Cache设备放置在一台或多台Web服务器前端即可。当互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服务器的IP地址,这时Reverse Proxy Server设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量Web服务工作量被卸载到反向代理服务上。不但能够防止外部网主机直接和web服务器直接通信带来的安全隐患,而且能够很大程度上减轻web服务器的负担,提高访问速度。
1 .反向代理 - 原理
反向代理服务器位于本地WEB服务器和Internet之间。当用户浏览器发出一个HTTP请求时,通过域名解析将请求定向到反向代理服务器(如果要实现多个WEB服务器的反向代理,需要将多个WEB服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如html网页和图片等),而一些CGI脚本程序或者ASP之类的程序不缓存。它根据从WEB服务器返回的HTTP头标记来缓冲静态页面。有四个最重要HTTP头标记:
Last-Modified: 告诉反向代理页面什么时间被修改
Expires: 告诉反向代理页面什么时间应该从缓冲区中删除
Cache-Control: 告诉反向代理页面是否应该被缓冲
Pragma: 告诉反向代理页面是否应该被缓冲.
例如:在默认情况下,ASP页面返回” Cache-control: private.” ,所以ASP页面时不会在反向代理服务器缓存的
2 .反向代理服务器与内容服务器
代理服务器充当服务器的替身,如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。
当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。
这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。
3. 反向代理服务器的工作流程
1)用户通过域名发出访问 web 服务器的请求,该域名被 DNS 服务器解析为反向代理服务器的 IP地址;
2)反向代理服务器接受用户的请求;
3)反向代理服务器在本地缓存中查找请求的内容,找到后直接把内容发送给用户;
4)如果本地缓存里没有用户所请求的信息内容,反向代理服务器会代替用户向源服务器请求同样的信息内容,并把信息内容发给用户,如果信息内容是缓存的还会把它保存到缓存中。
4 .反向代理的好处
1) 解决了网站服务器对外可见的问题;
2) 节约了有限的 IP 地址资源,企业内所有的网站共享一个在 internet 中注册的 IP 地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务;
3) 保护了真实的 web 服务器,web 服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了 web 服务器的资源安全;
拓扑图:(外网访问内网)
配置:
代理服务器配置:
[root@gjp99 ~]# vim /etc/squid/squid.conf[root@gjp99 ~]# vim /etc/squid/squid.conf
1.添加访问 ip及端口:
2.添加内网服务器ip 及访问端口
3.默认拒绝所有,要打开允许!
内网web服务器的配置:
mount
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom/Server
[root@localhost Server]# ll http*
-r--r--r-- 55 root root 1270589 2008-12-11 httpd-2.2.3-22.el5.i386.rpm
-r--r--r-- 63 root root 151651 2008-12-11 httpd-devel-2.2.3-22.el5.i386.rpm
rpm -ivh httpd-2.2.3-22.el5.i386.rpm
yum list all |grep http
yum install httpd-devel-2.2.3-22.el5.i386.rpm
vim /etc/yum.repos.d/rhel-debuginfo.repo
[root@localhost Server]# cat /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-server]
name=Red Hat Enterprise Server
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
cd /var/www/html
echo "gjp" >> index.html
firefox
ll lyn x-2.8.5-28.1.el5_2.1.i386.rpm
rpm -ivh lynx-2.8.5-28.1.el5_2.1.i386.rpm
lynx http://127.0.0.1
service httpd start
外网,访问192.168.2.10 ,作为测试:
本文转自 gjp0731 51CTO博客,原文链接:http://blog.51cto.com/guojiping/980077