热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

传统代理,透明代理,反向代理,IP伪装,端口转发

第一部分各种代理方式的特点和包重写过程Squid传统代理和透明代理:在Linux上用得最广泛的传统代理和透明代理是Squid.默认的Squid配置成传统代理的方式。在这种方式下,windows客户端要在浏览器中设置代理服务器的地址和端口号,客户端所要做的工作

第一部分 各种代理方式的特点和包重写过程

Squid传统代理和透明代理:

在Linux上用得最广泛的传统代理和透明代理是Squid.默认的Squid配置成传统代理的方式。
在这种方式下,windows客户端要在浏览器中设置代理服务器的地址和端口号,客户端所要做的
工作其实很少。只需要指定代理服务器的IP地址和端口号即可,其它剩下的一切都交给代理服务
器去做。在这种方式下的一个明显特点是windows客户机浏览网页,打入一个URL时,DNS也由代理
服务器去做。解析DNS的过程是根据Linux服务器中设置的/etc/host.conf文件中的解析顺序进行的。
一般的顺序是先查找/etc/hosts,然后找DNS数据库bind。在这种情况下的有趣例子是如果你设置了
某一站点的域名为你内部网中的一台服务器,则先去访问内部网服务器了。如你设置
192.168.11.3 www.yahoo.com 则你的浏览器就不可能去访问互联网上的yahoo站点了。
但假若你设置了透明代理的话,则解析的DNS顺序便变为
\windows\hosts然后再Linux的DNS数据库。不再可能检查Linux服务器上的/etc/hosts文件了。
关于透明代理的介绍,见文章荟萃中的另一篇文章《如何在Linux中设置透明代理》

传统代理和透明代理的包重写过程:见下图

[PC] A [Linux squid server] B
__192.168.11.12_|_____192.168.11.5__|___1.2.3.4_________Inte.net

(图一)

在A机用户的浏览器上设置代理为192.168.11.5,端口号为3128,通过B上网。
假如访问www.linuxforum.net,实际上只要你设定了代理的话,用户端的浏览器只是和Linux Squid
服务器进行通信而决不和互联网上的www.linuxforum.net服务器交谈,首先由squid代理服务器对
www.linuxforum.net进行解析(查找/etc/host.conf中的解析顺序,先是/etc/hosts然后是DNS查找)

进行到IP地址为202.106.124.185,最后由代理服务器代替用户端对该IP地址进行HTTP访问,回复回来
的信息先缓存到squid cache中,同时拷贝一份到用户端。下次若该用户或其它用户访问同样的页面时
则可以从squid cache中调用节省时间。
透明代理的过程和传统代理差不多,区别在
1。DNS解析过程不同,前面已经说过
2。用透明代理网关必须设置为squid代理服务器的IP地址,而传统代理不需要。
3。透明代理需要设置防火链的input规则
其余的和squid传统代理方式相同。

plug-gw:
plug-gw是FWTK中所带的通用代理程序。可用来代理象POP3,HTTP等应用层服务。

[PC] A [Linux POP3] C [Linux plug-gw]B
__192.168.11.12_|______|192.168.11.1____192.168.11.5__|___1.2.3.4__Internet

(图二)

假如内部网段上有一台Linux POP3服务器C(192.168.11.1),希望外部用户能收取邮件
可在机器B上设定plug-gw的POP3代理如下:

放下面的行到/etc/rc.d/rc.local
/usr/local/etc/plug-gw -daemon 1.2.3.4:110 -name plug-gw-pop3 &
文件/usr/local/etc/netperm-table中有下面一行

plug-gw-pop3: port 110 * -plug-to 192.168.11.1 -port 110

则用户设定outlook express中的POP3服务器地址为1.2.3.4.当收邮件时对B机的外部
接口而言,是在1.2.3.4的110端口接受用户请求,随后被plug-gw处理,在内部网段上,
由192.168.11.5对192.168.11.1的110端口发出请求。把所得的数据由1.2.3.4接口拷贝给
外部用户。

Apache反向代理
包重写过程与plug-gw类似

注意:上面所讲的三种情况下,请求过程被分开两次,中间一般是squid代理服务器或者
plug-gw,Apache服务器,数据在服务器的两块网卡中间做拷贝的动作,但是两次请求过程
的源地址是随机分配的高端地址,是不同的。在1024 和65535之间。但是一般而言,TCP/IP
分配的随机高端地址大多数是在1024--5000之间分配。例如:对于plug-gw来说:
如果某外部拨号用户的IP地址为5.6.7.8。假如地址和端口如下:
源地址和端口号和目标地址端口与为:
5.6.7.8 1038 1.2.3.4 110
被plug-gw改写请求为:
192.168.11.5 1045 192.168.11.1 110

被192.168.11.1回复的数据被拷贝给外部客户。

但是并非所有情况下源高端随机分配的地址都在1024--5000之间。IP伪装就是例外:

IP伪装:

[PC] A [Linux MASQ server] B
__192.168.11.12_|_____192.168.11.5__|___1.2.3.4_________Internet

(图三)

如上图,PC A要通过B伪装上网。如要访问www.linuxforum.net,则伪装时的包重写过程如下:

源地址/端口号和目标地址/端口号为:
192.168.11.12 1047 202.106.124.185 80
被伪装后的
源地址和端口号和目标地址/端口号为:
1.2.3.4 62334 202.106.124.185 80

反回的包为
202.106.124.185 80 -- 1.2.3.4 62334
再被重写给PC A为:
202.106.124.185 80 -- 192.168.11.12 1047

一般来说,IP伪装后的源地址通常>60000,且在61000--64999之间。
在防火墙上维护着一张IP伪装的对照表。用命令/sbin/ipchains -M -L -n可以看到
如:
[root@proxy etc]# /sbin/ipchains -M -L -n
IP masquerading entries
prot expire source destination ports
UDP 02:18.86 192.168.11.12 205.188.179.41 1215 (62615) -> 4000
TCP 17:03.20 192.168.11.12 205.188.248.57 1049 (62584) -> 80

从ports栏你可以对照两次源地址的匹配。

端口转发(port forwarding):
见文章荟萃中另一篇文章《利用端口转发由内部网对外提供网络服务》

第二部分 各种代理方式的适用情况和优缺点

各种代理方式的作用:
1. IP伪装,Squid传统代理和透明代理适合让局域网上无真实IP地址的用户访问Internet.
2. Apache反向代理,plug-gw通用代理,端口转发适合让外部用户访问局域网内无真实IP
地址的服务器。

各种代理方式的优缺点:
1. Squid的优点是对客户端要求很少,只要能连通squid服务器即可。
但是需要每台机器都设置代理服务器IP地址和端口号
2. Squid透明代理的优点是不需要每个客户机都设置代理地址和端口与,简化了用户端
配置。但是需要每台客户机的默认网关都设为squid代理服务器,且需要客户端来做
DNS解析
3. IP伪装可适合大多数应用层服务,不象squid仅支持http和ftp.但也需要客户的默认
网关设为防火墙的地址。且不象squid有cache功能
4. plug-gw可代理各种服务器象HTTP,POP3等。但Apache反向代理则只能代理http反向请求

5. 端口转发适合大多数服务。与具体的应用无关。且速度快,在内核IP层实现,无需要特别的

应用层服务在运行。但可能需要重新编译内核。


推荐阅读
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文探讨了服务器系统架构的性能评估方法,包括性能评估的目的、步骤以及如何选择合适的度量标准。文章还介绍了几种常用的基准测试程序及其应用,并详细说明了Web服务器性能评估的关键指标与测试方法。 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
author-avatar
fjy69
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有