以下内容来自鸟哥的linux私房菜
或许您已经发现了一件事,那就是:在内部局域网络使用私有 IP 的 Client 端不论透过 Proxy 或者 NAT 均可以直接取得 WWW 这个 Internet 的服务,那么 NAT 与 Proxy 有没有什么不同的地方啊?他们不都是可以让内部的 Client 连接出去吗?其实这两个玩意儿差异性是『相当大』的:
* NAT 是一个利用 TCP/IP 的 packet filter ( 封包过滤机制 )来进行封包处理的一个机制,所以他是『直接分析 TCP/IP 』,所以在设定防火墙的时候,他的弹性比较高,只要能过 NAT 这一关,那么大部分的网络服务都可以使用,因为 TCP/IP 是比较底层的协议啊!要知道的是,TCP/IP 上头还有 port 、还有 IP 等等的信息,单是 port 就可以让我们使用很多的不同的协议了!例如 port 20, 21 是 FTP 啊, 80 是 WWW 啊等等的!所以 NAT 能做的事情事很多的!
* 至于 Proxy 就不一样了, Proxy 主要透过类似 Squid 这一类的软件来达成的一个服务,基本上,一般来说他是透过 port 3128 来进行数据的监听与传输,单是看到这个 port 3128 就应该要晓得他仅是一个 daemon 而已。Proxy 已经是应用层这个阶段的网络项目了,所以他并没有去分析 TCP 的封包,只要 Client 来源合乎他的需求 (例如 IP 是被支持的 ) ,那么他将透过 daemon 的功能帮使用者达成使用者所想要的任务!所以说,能不能做某些事情,与 Proxy 服务器上面负责的那个 daemon 是有关的!万一 daemon 无法进行 FTP 数据的取得,那么您再怎么努力的尝试上网也是枉然的啊!
这样说有没有比较有点概念了呢?NAT 是由较底层的网络去进行分析的工作,至于通过 NAT 的封包是干嘛用的, NAT 不去管他!至于 proxy 则主要是由一个 daemon 的功能达成的,所以必需要符合该 daemon 的需求,才能达到某些功能!谈完了这些基本的原理之后,我们可得来玩一玩 Proxy 了吧?!事实上,目前有很多的 Proxy 软件,例如 apache 也有提供 proxy 模块的功能喔!但是,最好不要用 Apache 当作您的 Proxy server ,因为…..效能真的太差了~会让您的网络停顿的更厉害~目前 Proxy 的服务器软件当中,以 squid 这个咚咚最出名,会出名的原因是因为他的效能高!真的很不错的一套软件,所以底下我们就针对 squid 来做说明吧!
通过学习Linux iptables Pocket Reference这本书,对NAT有更进一步了解。
NAT也就是当包通过本机时,包的地址和/或端口的修改。这个修改可以是包的来源或目的地,也可以是介于之间。
NAT需要connection tracking,而这又需要包是全可见的。如果防火墙包含着多个电脑,注意不要破坏connection tracking.
NAT可用于基于地址和端口的操作的一系列功能,同时可以以组来操作
Leave a Reply