#;iptables;-t;nat;-A;PREROUTING;-i;eth1;-j;DNAT;--to;5.6.7.8
##;Change;destination;addresses;to;5.6.7.8,;5.6.7.9;or;5.6.7.10.
#;iptables;-t;nat;-A;PREROUTING;-i;eth1;-j;DNAT;--to;5.6.7.8-5.6.7.10
##;Change;destination;addresses;of;web;traffic;to;5.6.7.8,;port;8080.
#;iptables;-t;nat;-A;PREROUTING;-p;tcp;--dport;80;-i;eth1;
-j;DNAT;--to;5.6.7.8:8080
##;Redirect;local;packets;to;1.2.3.4;to;loopback.
#;iptables;-t;nat;-A;OUTPUT;-d;1.2.3.4;-j;DNAT;--to;127.0.0.1
重导向;(Redirection)
在;Destination;NAT;有一个特别的情形:它是一个简单的便利 , 完全等同於给传入界面地址做;DNAT;一样 。;
##;Send;incoming;port-80;web;traffic;to;our;squid;(transparent);proxy
#;iptables;-t;nat;-A;PREROUTING;-i;eth1;-p;tcp;--dport;80;
-j;REDIRECT;--to-port;3128
6.3;进一步的映对(Mappings);
还有许多;NAT;上面的解决方案是大多数人无需用到的 。这里不妨和那些有兴趣的朋友探讨一下:;
同一□围内的复合地址(Multiple;Addresses)之选择 。
如果您已经指定了一段;IP;地址 , ;而;IP;地址的使用选择是基於机器所知连线目前最少使用之;IP 。它可以提供最原始的平衡负载(load-balancing) 。;
建立空;NAT;映对
您可以使用;`-j;ACCEPT";目标来让一个连线通过 , 而绕过;NAT;的处理 。;
标准的;NAT;行为(Behaviour)
预设的行为是在使用者制定的规则限制内 , 尽可能少的改变连线 。换而言之 , 非不得已不要重映对(remap)埠口 。;
绝对来源埠口映对
如果其它连线已经被映对到新的连线 , 就算对於一个无需;NAT;的连线来说 , 来源埠口的转换有时或是必须绝对存在的 。让我们假设一个封包伪装的情形 , 这已经非常普遍了:;
一个网页连线由一台;192.1.1.1;的机器从;port;1024;建立 , 要连接到www.netscape.com;port;80 。;
它被封包伪装主机以其自己的;IP;地址(1.2.3.4)进行伪装 。;
该封包伪装主机尝试由;1.2.3.4;(它的外部界面地址);port;1024;来做一个网页连线至www.netscape.com;port;80 。;
然後;NAT;程式改变第二个连线的来源埠口为;1025 , 所以这两个连线不至於相冲(clash) 。;
当这个绝对来源映对存在之时 , 埠口被拆分为三个等级:;
512;以下的埠口;
512;到;1023;之间的埠口;
1024;以上的埠口;
任何一个埠口都不会被绝对映对到不同的等级去 。;
当;NAT;失效时会怎样?
如果没有办法如用户要求那样独一无二地映对连线 , 那麽连线就会被挡掉 。当一个封包不能够界定为任何连线的时候 , 结果也一样 , 因为它们可算是畸形的 , 或者是该机器记忆体耗光了 , 诸如此类 。;
复合映对、重叠、和相冲(clash)
您可以设定;NAT;规则在同一个□围之上映对封包;NAT;程式足以聪明的去避免相冲 。比方说 , 用两条规则将;192.168.1.1;和;192.168.1.2;这两个来源地址分别映对到;1.2.3.4 , 是完全可行的 。;
再来 , 您可以映对到真实的、已用的;IP;地址 , 只要这些地址通过这个映对主机就行 。所以 , 如果您获得一个网路(1.2.3.0/24) , 但有一个内部网路使用这些地址 , 而另一个使用私有地址;192.168.1.0/24; , 您就可以;NAT;那些;192.168.1.0/24;的来源地址到;1.2.3.0;网路之上 , 而无需担心相冲:;
#;iptables;-t;nat;-A;POSTROUTING;-s;192.168.1.0/24;-o;eth1;
-j;SNAT;--to;1.2.3.0/24
这同样适用於那些;NAT;主机自己使用的地址:这其实就是封包伪装如何工作的了(分享伪装封包地址和来自主机本身封包之;`真实";地址 。;);
更甚者 , 您还可以映对相同的封包到许多不同的目标(targets)上去 , 而且它们都是共享的 。例如 , 如果您不想映对任何东西到;1.2.3.5;上去 , 您可以这样做:;
推荐阅读
- 在Linux上自动建立帐号
- Linux IMP安装及相关问题集
- Linux系统备份
- Ramdisk:在linux下如何使用 RAM 作为虚拟硬盘?
- Linux 指令篇:起始管理--shutdown
- Linux 指令篇:DOS相容指令--mattrib
- Linux 指令篇:DOS相容指令--mcd
- Linux 指令篇:DOS相容指令--mcopy
- 关于bootsect.S Linux开机过程的分析
- Linux 网管 123 --- 第10章. 升级 Linux 及其他应用软体 -2.不使
