Linux 2.4 NAT HOWTO( 二 )




透明代理(Transparent;Proxying)
有时候 , 您或许想要每一个经过您的;Linux;主机的封包送至主机本身的一个程式去 。这就需要进行透明代理的动作了:一个代理就是一个位於您的网路和外部网路的程式 , 为彼此双方负起沟通的任务 。而所谓的透明 , 则是因为您的网路甚至无须知道在和一个代理对讲 , 当然了 , 除非代理不再工作了吧 。;


Squid;可以配置成这样的工作方式 , 这就是在过往的;Linux;版本中所谓的重导向(redirection)、或透明代理了 。;



--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

3.;两种类型的;NAT
我将;NAT;分为两种不同的类型:;Source;NAT;(SNAT);与;Destination;NAT;(DNAT);


Source;NAT;就是您将改变第一个封包的来源地址:例如 , 您为传入的连线做;caching;的动作 。Source;NAT;永远会在封包传出网线之前就做好;post-routing;的动作 。封包伪装(Masquerading)就是一个;SNAT;特例 。;


Destination;NAT;就是您将改变第一个封包的目的地地址:例如您要为传出的连线做;caching;的动作 。Destination;NAT;永远会在封包从网线进入之後就马上做好;pre-routing;的动作 。Port;forwarding、负载分担、以及透明代理 , 都属於;DNAT 。;



--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

4.;从;2.0;到;2.2;核心的快速转变
非常抱歉 , 假如您仍然忙於从;2.0(ipfwadm);到;2.2(ipchains);的转型的话 。不过 , 这也是个喜忧参半的消息啦 。;


首先 , 您可以轻易的一如往昔地使用;ipchains;和;ipfwadm 。要这样做的话 , 您需要将最新的;netfilter;套件中的;`ipchains.o";或;`ipfwadm.o";核心模组载入 。它们是相互排斥的(您应已获警告了) , 同时也不能和其它;netfilter;模组同时整合在一起 。;


一旦其中一个模组被载入 , 您就可以如常使用;ipchains;和;ipfwadm;了 , 但也有如下一些变化啦:;


用;ipchains;-M;-S , 或是;ipfwadm;-M;-s;作伪装逾时将不再有效 。因为逾时设定已经移至新的;NAT;架构中 , 所以这里也就没什麽所谓了 。;
在伪装列表中显示的;ini_seq、delte、和;previous_delta;栏位 , 将永远为零 。;
同时归零(zeroing)和列示记数器(counter)的;`-Z;-L";已无作用:记数器将不能再归零了 。;
Hacker;们仍要留意之处:;


您现在可以捆绑;61000-65095;之间的埠口 , 而无需理会您是否使用封包伪装技术 。在过去 , 封包伪装程式会把此值域内的所有东西捕获进来 , 所以其它程式就不可用之了 。;
至於(尚未成文之);getsockname;破解 , 在过去 , 透明代理程式可以找出那些不再有效连线之真正目的地 。;
至於(尚未成文之);bind-to-foreign-address;破解 , 同样尚未实作;这在过去用以完善透明代理的构想 。;

4.1;救命啊!我只想要封包伪装而已!;
没错 , 这也是大多数朋友之需 。如果您用;PPP;拨接获得的动态;IP;(如果您不了解的话 , 那您应该是了) , 您或许只想单纯告诉您的主机让所有来自您内部网路的封包 , 看起来如来自该;PPP;拨接主机一样 。;


#;Load;the;NAT;module;(this;pulls;in;all;the;others).
modprobe;iptable_nat

#;In;the;NAT;table;(-t;nat),;Append;a;rule;(-A);after;routing
#;(POSTROUTING);for;all;packets;going;out;ppp0;(-o;ppp0);which;says;to
#;MASQUERADE;the;connection;(-j;MASQUERADE).
iptables;-t;nat;-A;POSTROUTING;-o;ppp0;-j;MASQUERADE

#;Turn;on;IP;forwarding
echo;1;>;/proc/sys/net/ipv4/ip_forward

注:您这里并没做任何封包过滤:如要的话 , 请参考;Packet;Filtering;HOWTO:将;NAT;和封包过滤合并起来就是了 。;

推荐阅读