ÍøÂçѧԺ w3popÉçÇø ÍøÂç×ÊÔ´ ITÐÂÎÅ

w3pop.com :: ÍøÂçѧԺ :: Linux :: Linux ÈçºÎ½øÐÐÍøÂçµØÖ·×ª»»

»áÔ±µÇ½

ÕʺÅ

ÃÜÂë

»Ø´ð

¼ÇסÃÜÂë

Íü¼ÇÃÜÂë? ×¢²á

Linux
linux find ÃüÁîÊ..
¿ìËÙ¹¹¼ÜLinux ·À..
UbuntuʵÓüòµ¥µÄ..
SSH·½Ê½Ô¶³Ì¿ØÖÆ ..
Ubuntu ΪÓû§·ÖÅ..
Ubuntu ServerÅäÖ..
Ubuntu ServerÅäÖ..
Debian ÎļþºÍÄ¿Â..
Linux ÈçºÎ½øÐÐÍø..
Linux ÈçºÎ½øÐаü..
UbuntuͨÓûù´¡½Ì..
DebianϵÁÐ - Éè¶..
Linux »ù´¡ÖªÊ¶
Linux ½éÉÜ

Linux ÈçºÎ½øÐÐÍøÂçµØÖ·×ª»»


×÷Õß:Ñó¹í¹í¡¤NetSnake ·­Òë/ÕûÀí:w3pop.com ·¢²¼:2007-05-10 ä¯ÀÀ:2704 :: ::

´ËÎĵµËµÃ÷ÈçºÎ½øÐÐαװ¡¢Í¸Ã÷´úÀí¡¢¶Ë¿Úת·¢£¬ºÍ»ùÓÚLinux 2.4ÄÚºËÆäËûÀàÐÍµÄ ÍøÂçµØÖ·×ª»»(Network Address Translations)¡£

1. ¼ò½é
2. ¹Ù·½Õ¾µã¼°Áбí
2.1 ʲôÊÇNAT£¿
2.2 ÎÒΪʲôÐèÒªNAT£¿
3. NATµÄÁ½ÖÖÀàÐÍ
4. ´Ó2.0ºÍ2.2Äں˵ĿìËÙת»»
4.1 ÎÒÖ»Ïëαװ£¡¾ÈÃü£¡
4.2 ¹ØÓÚipmasqadm
5. NAT¿ÉÒÔ¿ØÖÆÊ²Ã´
5.1 ÓÃiptables×ö¼òµ¥µÄÑ¡Ôñ
5.2 ¹ØÓÚÓ¦µ±ÌôÑ¡ÄÄЩ°üÀ´²ð·Ö£¨mangle£©µÄÒªµã
6. ˵˵ÈçºÎ²ð·Ö°ü°É
6.1 Ô´µØÖ·NAT
6.1.1 αװ
6.2 Ä¿µÄµØÖ·NAT
6.2.1 ÖØ¶¨Ïò
6.3 Éî²ã´ÎµÄÓ³Éä
6.3.1 Ò»¸ö·¶Î§ÄÚ¶àµØÖ·µÄÑ¡Ôñ
6.3.2 ½¨Á¢¿ÕµÄNATÓ³Éä
6.3.3 ±ê×¼NATÐÐΪ
6.3.4 ÄÚ²¿Ô´¶Ë¿ÚÓ³Éä
6.3.5 Èç¹ûNATʧ°Ü»áÔõÑù£¿
6.3.6 ¶àÖØÓ³É䣬֨µþºÍ³åÍ»
6.3.7 Ð޸ı¾µØÉú³ÉµÄÁ¬½ÓµÄÄ¿±êµØÖ·
7. ÌØ¶¨µÄЭÒé
8. ¹ØÓÚNATµÄ¾¯¸æ
9. Ô´µØÖ·NATºÍѡ·
10. Í¬Ò»ÍøÂçÄÚµÄÄ¿±êµØÖ·NAT
11. ¸Ðл
1. ¼ò½é
»¶Ó­£¬Ç×°®µÄ¶ÁÕß¡£
Ä㽫ҪÉîÈëÃÔÈ˵ģ¨ÓÐʱÊÇÁîÈËÑá·³µÄ£©NATÊÀ½ç£ºÍøÂçµØÖ·×ª»»£¬ÕâÆªHOWTO¿ÉÒÔ³ÉΪÄãµÄLinux2.4Äں˼°ÆäÒÔºóµÄ׼ȷָÄÏ¡£
ÔÚLinux2.4£¨Äں˰汾£©£¬ÒýÈëÁËÒ»¸ö½Ð“netfilter”µÄ²¿·Ö£¬×¨ÃÅÓÃÓÚ²ð·Ö£¨mangling£© £¨IP£©°üµÄ¡£ËûÉÏÒ»²ãÌṩNAT£¬ÊÇÍêÈ«ÒÀ¿¿ÒÔǰµÄÄÚºËÖÆ×÷µÄ¡£
£¨ÒëÕß×¢£ºmangleʵÔÚÕÒ²»³öʲôºÏÊʵķ­Ò룬±§Ç¸£©
(C) 2000 Paul `Rusty' Russell. Licensed under the GNU GPL.

2¡¢ ¹Ù·½Õ¾µã¼°ÁбíλÖÃ
ÕâÀïÓÐÈý¸ö¹Ù·½Õ¾µã£º
o Thanks to Filewatcher http://netfilter.filewatcher.org.
o Thanks to The Samba Team and SGI http://netfilter.samba.org.
o Thanks to Harald Welte http://netfilter.gnumonks.org.
Äã¿ÉÒÔͨ¹ýÒÔÏÂÕ¾µã·ÃÎÊÈ«²¿Ïà¹ØÕ¾µã¡£
http://www.netfilter.org and http://www.iptables.org
ÒÔÏÂÊÇnetfilter¹Ù·½ÓʼþÁбí
http://www.netfilter.org/contact.html#list.

2¡¢1 ʲôÊÇÍøÂçµØÖ·×ª»»£¨Network Address Translation£©£¿
ͨ³££¬£¬ÍøÂçÖеģ¨IP£©°ü´ÓËûÃǵÄÔ´£¨µØÖ·£©³ö·¢£¨±ÈÈçÄã¼ÒµÄµçÄÔ£©£¬µ½ËûÃǵÄÄ¿µÄµØ£¨±ÈÈçwww.gnumonks.org£©£¬»á¾­¹ýºÜ¶à²»Í¬µÄÁ¬½Ó£¨links£©£ºÀýÈçÎÒËùÔÚ°Ä´óÀûÑǾÍÓÐ19¸ö¡£ÕâЩÁ¬½Ó²»»áÕæÈ¥ÐÞ¸ÄÄãµÄ°ü£ºËûÃÇÖ»ÊÇÕÕÔ­Ñù´«³öÈ¥¡£
£¨ÒëÕß×¢£ºÕâÀïµÄlinksÓ¦µ±ÈÏΪÊÇËùÓÐÍøÂç½Úµã£¬°üÀ¨Ö÷»ú¡¢Â·ÓÉÆ÷µÈ¡£Í¨³££¬Â·ÓÉÆ÷²¢²»ÊÇÔ­Ñù´«ËͰü£¬ËüÖÁÉÙ»áÐÞ¸ÄÆäÖÐÒ»µã£ºTTL£©
Èç¹ûÕâЩÁ¬½ÓÓÐÒ»¸ö×öNAT£¬ÄÇôËü£¨ÃÇ£©¾Í»áÐÞ¸Äͨ¹ýËüÃǵİüµÄÔ´»òÕßÄ¿±ê£¨µØÖ·£©¡£ÕýÈçÄã²ÂÏóµÄÄÇÑù£¬Õâ²¢·ÇϵͳÉè¼Æ³ÉÄÇÑù µÄ£¬¶øÊÇNAT×öÁËһЩÊÂÇ顣ͨ³£½øÐÐNATµÄÁ¬½Ó£¨Ö÷»ú¡¢·þÎñÆ÷¡¢Â·ÓÉÆ÷£©»á¼ÇסËüÊÇÈçºÎ²ð·Ö°üµÄ£¬¶øµ±ÁíһͷÏìÓ¦µÄ°üͨ¹ýʱ£¬Ëü»á¶ÔÏìÓ¦µÄ°ü×öÏà·´µÄ ²ð·Ö£¬ËùÒÔÊÀ½çÈÔÔÚÔËת¡£
£¨ÒëÕß×¢£ºÕâÒ»¶ÎµÄmangleÓ¦¸ÃÏëÏóΪÐ޸ĸüºÏÊÊ£©

2¡¢2 ÎÒΪʲôҪNAT£¿
ÔÚÍêÃÀµÄÊÀ½çÀÄã²»ÐèÒª¡£Í¬Ê±£¬Ö÷ÒªµÄÀíÓÉÊÇ£º
Óõ÷ÖÆ½âµ÷Æ÷Á¬½ÓInternet
ÔÚÄ㲦ºÅÉÏÍøÊ±£¬´ó²¿·ÖISPÖ»»á¸øÄãÒ»¸öIPµØÖ·£¬Äã¿ÉÒÔ·¢ËÍÄãÏë·¢Ë͵ÄÈκÎÔ´µØÖ·°ü£¬µ«ÊÇÖ»ÓÐÏìÓ¦Õâ¸ö£¨ISP¸øÄãµÄ£©µØÖ·µÄ°ü²Å»á·µ»Ø¡£Èç¹ûÕâÖÖÇé¿öÏÂÄãÏëÓжą̀²»Í¬µÄ»úÆ÷ÉÏÍø£¨±ÈÈçÒ»¸ö¼ÒÍ¥ÍøÂ磩£¬Äã¾ÍÐèÒªNAT¡£
ÕâÊÇÏÖÔÚNATÓõÃ×î¶àµÄ¹¦ÄÜ£¬LinuxÊÀ½çµÄ"masquerading"£¨Î±×°£©·Ç³£³öÃû£¬ÎÒ³ÆÖ®ÎªSNAT£¨SNAT¼´Source NAT£¬Ô´µØÖ·×ª»»£©£¬ÒòΪÄã¸Ä±äÁ˵ÚÒ»¸ö°üµÄÔ´µØÖ·¡£
£¨ÒëÕߣº¹ØÓÚIPÊý¾Ý±¨µÄµÚÒ»¸ö°üµÈÄÚÈÝ£¬Çë²Î¼û¸÷TCP/IPÊé¼®£©
¶à£¨ÖØ£©·þÎñÆ÷
ÓÐʱÄãÏë¸Ä±ä½øÈëÍøÂçÖеİüµÄÄ¿±êµØÖ·£¨Â·ÓÉ£©¡£¾­³£µÄ£¬ÕâÊÇÒòΪ£¨¾ÍÏñÉÏÃæµÄÀý×Ó£©£¬ÄãÖ»ÓÐÒ»¸öIPµØÖ·£¬µ«ÊÇÄãÏ£Íû´ó¼Ò¿ÉÒÔͨ¹ýµ½ÄǸö“ÕæÊµ”µÄIPµØÖ·½øÈëÄÚ²¿¡£Èç¹ûÄãÖØÐ´Á˽øÈë°üµÄÄ¿±êµØÖ·£¬ÕâÑù¾ÍûÎÊÌâÁË¡£ÕâÖÖNATÔÚÒÔǰµÄLinux°æ±¾Öб»³ÆÎª¶Ë¿Úת·¢¡£
Ò»¸ö³£¼ûµÄ±äÖÖÊǸºÔؾùºâ£¬ÔÚÒ»×é»úÆ÷ÉÏ×öÓ³Éä¡£Èç¹ûÄãÒª½øÐÐÑϸñµÄ±ÈÀýÏÞÖÆ£¬ ¿ÉÄÜÐèÒª²Î¿¼Linux Virtual Server¡£http://linuxvirtualserver.org
͸Ã÷´úÀí
ÓÐʱÄã¿ÉÄÜÏëÒª¾­¹ýÄãµÄLinuxµÄ°ü±»ËÍÍù±¾»úµÄÒ»¸ö³ÌÐò¡£Õâ¾ÍÐèÒªÓõ½Í¸Ã÷´úÀíÁË£º´úÀíÊÇλÓÚÄãµÄÍøÂçºÍÍⲿÊÀ½çÖ®¼äµÄÒ»¸ö³ÌÐò£¬°ïÖú¶þÕß½øÐÐͨÐÅ¡£Ö®ËùÒÔ³ÆÎªÍ¸Ã÷£¬ÊÇÄãµÄÍøÂç¸ù±¾²»ÖªµÀËûÔںʹúÀí½»Ì¸£¬µ±È»Ö±µ½´úÀíûÓÐÕý³£¹¤×÷¡£
Squid¿ÉÒÔÅäÖÃΪ¸ÉÕâÏ×÷£¬ÔÚÒÔǰLinux°æ±¾ÖÐËü±»³Æ×÷ÖØ¶¨Ïò»òÕß͸Ã÷´úÀí¡£

3¡¢ NATµÄÁ½ÖÖÀàÐÍ
ÎÒ°ÑNAT·ÖΪÁ½ÖÖ²»Í¬µÄÀàÐÍ£ºÔ´NAT(SNAT)ºÍÄ¿±êNAT(DNAT)¡££¨ÒëÕß×¢£ºÒÔϲ»ÔÙ·­ÒëSNATºÍDNAT£¬Ö±½ÓÓÃSource NATºÍDestination NAT£©
Source NATÊÇÖ¸Ð޸ĵÚÒ»¸ö°üµÄÔ´µØÖ·£ºÒ²¾ÍÊÇ˵£¬¸Ä±äÁ¬½ÓµÄÀ´Ô´µØ¡£Source NAT»áÔÚ°üËͳö֮ǰµÄ×îºóÒ»¿Ì×öºÃpost-routing£¨¶¯×÷£©£¬Î±×°ÊÇSNATµÄÒ»ÖÖÌØÊâÐÎʽ¡£
Destination NAT ÊÇÖ¸Ð޸ĵÚÒ»¸ö°üµÄÄ¿±êµØÖ·£ºÒ²¾ÍÊÇ˵£¬¸Ä±äÁ¬½ÓµÄÄ¿µÄµØ¡£Destination NAT ×ÜÊÇÔÚ°ü½øÈëÒÔºó£¨ÂíÉÏ£©½øÐÐbefore routing£¨¶¯×÷£©¡£¶Ë¿Úת·¢¡¢¸ºÔؾùºâºÍ͸Ã÷´úÀí¶¼ÊôÓÚDNAT¡£

4¡¢ ´Ó2.0ºÍ2.2Äں˵ĿìËÙת»»
Èç¹ûÄ㻹ÔÚΪ´Ó2.0£¨ipfwadm£©µ½2.2£¨ipchains£©µÄת»»ÊÖæ½ÅÂҵϰ£¬ºÜ±§Ç¸¡£²»¹ýÕâÒ²ËãÊǸöϲÓǰë²ÎµÄÏûÏ¢¡£
Ê×ÏÈ£¬Äã¿ÉÒÔÇáËɵÄʹÓÃipchainsºÍipfwadm£¬¾ÍÏñ´ÓǰһÑù¡£²»¹ýÄãÐèÒª°²×°×îз¢²¼µÄnetfilterÖеēipchains.o”»òÕß“ipfwadm.o”ÄÚºËÄ£¿é¡£ËüÃÇÊÇ»¥³âµÄ£¨Äã»á±»¾¯¸æ£©£¬¶øÇÒ²»ÄܺÍÈÎºÎÆäËûnetfilterÄ£¿é½áºÏ¡£
Ò»µ©ÕâÆäÖÐij¸öÄ£¿é±»ÔØÈ룬Äã¿ÉÒÔÏñÒÔǰһÑùʹÓÃipchainsºÍipfwadm£¬²»¹ýÈÔÓÐÒÔÏÂÇø±ð£º
ÓÃipchains -M -S£¬»òÕßÓÃipfwadm -M -sÉèÖÃαװ³¬Ê±²»ÔÙÓÐЧ¡£ÒòΪ³¬Ê±ÒѾ­×ªÒƵ½ÐµÄNAT¹¹¼ÜÖУ¬ËùÒÔÕâ²»ÄÜ×öÈκÎÊ¡£
ÔÚÏêϸµÄαװÁбíÖУ¬init_seq¡¢deltaºÍprevious_delat×Ö¶ÎʼÖÕΪÁã¡£
¹éÁãºÍÁÐ±í¼ÆÊýÆ÷µÄ -Z -L²»ÔÙÓÐЧ£º¼ÆÊýÆ÷²»Äܱ»¹éÁã¡£
ÕâÀàÏòºó¼æÈݵIJ¿·Ö¿ÉÄܺʹ󲿷ÖÁ¬½Ó¶¼²»ÄÜÓÐЧÅäºÏ£º²»ÒªÔÚÄãµÄ¹«Ë¾Íø¹ØÖÐʹÓÃ
¿ª·¢ÕßÃÇ»¹Òª×¢Ò⣺
ÎÞÂÛÊÇ·ñʹÓÃαװ£¬ÏÖÔÚ¿ÉÒÔ°ó¶¨61000 - 65095Ö®¼äµÄ¶Ë¿Ú¡£ÒÔǰµÄαװ´úÂëÕ¼ÓÃÁËÕⲿ·Ö¶Ë¿Ú£¬Òò´Ë²»ÄÜʹÓá£
ÉÐδ³ÉÎĵēgetsockname”£¬Í¸Ã÷´úÀí³ÌÐò¿ÉÒÔÓÃÀ´·¢ÏÖÄÇЩÒѲ»ÔÙ¹¤×÷µÄÁ¬½ÓµÄÕæÊµÄ¿µÄµØÖ·¡£
ÉÐδ³ÉÎĵēbind-to-foreign-address”ͬÑù»¹Î´ÆôÓãºÕâ¸öÓÃÓÚÍêÕû͸Ã÷´úÀíµÄÉèÏë¡£

4¡¢1 ÎÒÖ»Ïëαװ£¡¾ÈÃü£¡
ÕâÊǾø´ó²¿·ÖÈËÏëÒªµÄ¡£Èç¹ûÄãÓÃPPP²¦ºÅÉÏÍøÀ´¶¯Ì¬µÃµ½IP £¨Èç¹ûÄã²»ÖªµÀ£¬ÄÇÓ¦¸Ã¾ÍÊǵģ©Äã¿ÉÄÜÖ»Ïë¸æËßÄãµÄ»úÆ÷£¬ËùÓÐÀ´×ÔÄÚ²¿ÍøÂçµÄ°ü£¬Òª¿´ÉÏȥͬPPPÁ¬½Ó·þÎñÆ÷ÉϵİüÒ»Ñù¡£
# ×°ÔØNATÄ£¿é£¨ÕâÈ¡´úÁËÆäËûµÄ£©
modprobe iptable_nat
# ÔÚNAT±íÖÐ(-t nat)£¬Â·Óɺó POSTROUTING ¼ÓÈëÒ»Ìõ¹æÔò(-A)
# ËùÓÐÓÉppp0ËͳöµÄ°ü(-o ppp0) »á±»Î±×°( -j MASQUERADE)¡£
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# ¿ªÆôIPת·¢
echo 1 > /proc/sys/net/ipv4/ip_forward
×¢ÒâÕâʱÄãûÓÐ×öÈκεİü¹ýÂË£ºÈç¹ûÐèÒª£¬²Î¼û the Packet Filtering HOWTO¡£

4¡¢2 ÄÇôipmasqadmÄØ£¿
Õâ¸öÍêȫȡ¾öÓÚÓû§£¬ËùÒÔÎÒ²»µ£ÐÄÏòºó¼æÈݵÄÎÊÌâ¡£Äã¿ÉÒÔ¼òµ¥µÄʹÓÓiptables -t nat”×ö¶Ë¿Úת·¢¡£ÀýÈ磬ÔÚLinux2.2ÄãÒª×ö£º
# ÔÚ2.2Äںˣ¬°ÑÖ¸Ïò1.2.3.4 8080¶Ë¿ÚµÄTCP°üתµ½192.168.1.1µÄ80¶Ë¿Ú
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80
ÏÖÔÚÄã¿ÉÒÔÕâÑù£º
# 2.4Äںˣ¬ÔÚNAT£¨-t nat£©±íÖмÓÈëÒ»Ìõ¹æÔò£¬ÔÚ·ÓÉ֮ǰ£¨-A PREROUTING£©Ö¸Ïò
 
# 1.2.3.4£¨-d 1.2.3.4£©8080¶Ë¿Ú£¨--dport 8080£©µÄTCP°ü£¨-p tcp£©Ä¿±êµØÖ·£¨-j DNAT£©
# ±»Öض¨Ïòµ½ 192.168.1.1µÄ80¶Ë¿Ú£¨--to 192.168.1.1:80£©¡£
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 -j DNAT --to 192.168.1.1:80

5¡¢NAT¿ÉÒÔ¿ØÖÆÊ²Ã´
ÄãÐèÒª´´½¨NAT¹æÔò£¬ÒÔ¸æËßÄÚºËÄÄЩÁ¬½Ó½«±»¸Ä±äºÍÈçºÎ¸Ä±ä¡£Òª×öµ½ÕâÒ»µã£¬ÎÒÃÇÒªÓõ½Ò»¸öÓô¦ºÜ¶àµÄiptables¹¤¾ß£¬²¢¸æËßËüÓÃÖ¸¶¨µÄ“-t nat”Ñ¡ÏîÐÞ¸ÄNAT±í¡£
NAT¹æÔò±í°üº¬Èý¸ö³ÆÎª“Á´”µÄÁÐ±í£ºÃ¿¸ö¹æÔò¶¼°´Ë³Ðò¼ì²é°ü£¬Ö±µ½ÓÐÒ»¸öÆ¥Åä¡£ÆäÖÐÁ½¸ö±»³ÆÎªPREROUTING£¨ÓÃÓÚ Destination NAT£¬µ±°ü½øÈëʱ¼ì²é£©£¬POSTROUTING£¨ÓÃÓÚSource NAT£¬°üÀ뿪ʱ¼ì²é£©£¬µÚÈý¸ö½ÐOUTPUT£¬ÕâÀï¿ÉÒÔºöÂÔ¡£
Èç¹ûÎÒÓÐ×ã¹»µÄÒÕÊõÌì·ÖµÄ»°£¬ÏÂÃæµÄ¼ûͼ»á׼ȷµÄ˵Ã÷ÉÏÊö¸ÅÄ
 
_____                                     _____
/ \ / \
PREROUTING -->[Routing ]----------------->POSTROUTING----->
\D-NAT/ [Decision] \S-NAT/
| ^
| |
| |
| |
| |
| |
| |
--------> Local Process ------
ÉÏÊöÿһµã£¬µ±ÎÒÃDz鿴Á¬½Ó£¨ÖУ©µÄ°üʱ£¬Èç¹ûÊÇÒ»¸öеÄÁ¬½Ó£¬ÎÒÃDz鿴 NAT±íÖÐÏà¶ÔÓ¦µÄÁ´£¬¿´¿´ÐèÒª×öЩʲô¡£Æä½á¹û¾Í»á×÷Ϊ¶ÔÕâ¸öÁ¬½ÓºóÃæËùÓаü µÄ·´Ó¦¡£
£¨ÒëÕß×¢£º´Ë´¦µÄÁ¬½ÓÊÇÖ¸Ò»¸öHTTP»á»°Ö®ÀàµÄÁ¬½Ó£¬¶ø·ÇÎïÀíÉϵÄÏß·¡¢½Úµã£©

5¡¢1 ÓÃiptables×ö¼òµ¥µÄÑ¡Ôñ
ÏÂÃæÁгöÁËiptablesµÄһЩ±ê׼ѡÏî¡£ËùÓÐË«ºá¸Ü£¨--£©µÄÑ¡Ïî¶¼ÊÇ¿ÉÒÔËõдµÄ¡£Ö»Òªiptables¿ÉÒÔ½«ËüÃÇÓëÆäËûÑ¡Ïî Çø·Ö¿ªÀ´¾Í¹»ÁË¡£Èç¹ûÄãµÄÄÚºËÊÇÒÔÄ£¿é·½Ê½Ö§³ÖiptablesµÄ£¬ÄãÐèÒªÏÈÓÃÃüÁinsmod ip_tablesÀ´¼ÓÔØip_tables.o
ÕâÊÇ×îÖØÒªµÄÑ¡Ïî±í¸ñÑ¡Ôñ£¬“-t”¡£¶ÔËùÓÐNAT²Ù×÷£¬Äã¶¼ÐèҪʹÓÃ'-t nat'ÒÔÖ¸¶¨NAT±í¡£Æä´ÎÖØÒªµÄÊÇ'-A'£¬Ìí¼ÓÒ»¸öÐµĹæÔòµ½Á´µÄĩ⣨ÀýÈç'-A POSTROUTING'µ½POSTROUTINGÁ´£©£¬»òÕß'-I'´Ó×ʼ²åÈëÒ»¸ö¹æÔò£¨ÀýÈç'-I PREROUTING'£©¡£
Äã¿ÉÒÔÖ¸¶¨ÄãÏëÒª½øÐÐNATµÄ°üµÄÔ´£¨µØÖ·£©£¨'-s' »òÕß'--source'£©ºÍÄ¿µÄ£¨µØÖ·£©£¨'-d' »ò '--destination'£©¡£ÕâÁ½¸öÑ¡Ïî¿ÉÒÔ¸úµ¥¸öIPµØÖ·£¨ÀýÈç192.168.1.1£©£¬Ò»¸öÃû×Ö£¨ÀýÈçwww.gnumonks.org£©£¬ »òÕßÒ»¸öÍøÂçµØÖ·£¨ÀýÈç192.168.1.0/24»ò192.168.1.0/255.255.255.0[ÒëÕߣºÕâ¶þÕßÊǵȼ۵ģ¬Ö»ÊDZíʾ·½·¨²» ͬ]£©¡£
Äã¿ÉÒÔÖ¸¶¨½øÈë»òËͳöµÄÆ¥Åä½Ó¿Ú¡£²»¹ýÄÜ·ñÖ¸¶¨È¡¾öÓÚÄãÏëҪдÈë¹æÔòµÄÄǸöÁ´£ºPREROUTINGÁ´ÄãÖ»ÄÜÑ¡Ôñ½øÈë½Ó¿Ú£¬POSTROUTINGÄãÖ»ÄÜÑ¡ÔñËͳö½Ó¿Ú¡£Èç¹ûÓôíÁË£¬iptables»á¸ø³öÒ»¸ö´íÎó¡£

5¡¢2 ¹ØÓÚÓ¦µ±ÌôÑ¡ÄÄЩ°üÀ´²ð·Ö£¨mangle£©µÄÒªµã
ÎÒÉÏÃæËµÁËÄã¿ÉÒÔÖ¸¶¨Ô´µØÖ·ºÍÄ¿±êµØÖ·¡£Èç¹ûºöÂÔÔ´µØÖ·Ñ¡ÏÄÇôËùÓÐÔ´µØÖ·¶¼»á±»Æ¥Å䣬ͬÑù£¬Èç¹ûºöÂÔÄ¿±êµØÖ·£¬ËùÓÐÄ¿±êµØÖ·¶¼½«±»Æ¥Åä¡£
Ä㻹¿ÉÒÔ±ê³öÒ»¸öÖ¸¶¨µÄЭÒ飨'-p'»ò'--protocol'£©£¬ÖîÈçTCP»òÕßUDP£»ÄÇôֻÓÐÕâÀàЭÒéµÄ°ü»á±»Æ¥Åä¡£Õâô ×öµÄÖ÷ÒªÔ­ÒòÊÇÖ¸¶¨ÁËЭÒ飬¾Í¿ÉÒÔÔö¼Ó¶îÍâµÄÑ¡Ïָ¶¨'--source-port'Ô´¶Ë¿ÚºÍ'--destination-port'Ä¿µÄ¶Ë¿ÚÑ¡Ïî £¨¿ÉËõдΪ'-sport'ºÍ'-dport'£©¡£
ÕâЩѡÏîÈÃÄã¿ÉÒÔֻƥÅäÄÇÐ©ÌØ¶¨Ô´¶Ë¿Ú¼°Ä¿±ê¶Ë¿ÚµÄ°ü¡£ÕâЩ¶ÔÓÚÖØ¶¨ÏòWebÇëÇó£¨TCP 80»ò8080¶Ë¿Ú£©¶ø²»Ó°ÏìÆäËû°ü·Ç³£ÓÐÓá£
ÕâЩѡÏî±ØÐë¸úÔÚ'-p'Ñ¡ÏîºóÃæ£¨Õâ¿ÉÄÜ»á¶Ô¼ÓÔØ¸ÃЭÒéµÄÁ¬½Ó¿âÓÐÒ»¶¨Ó°Ï죩¡£Äã¿ÉÒÔʹÓö˿ںţ¬»òÕßÀ´×Ô/etc/servericesÎļþµÄ£¨¶Ë¿Ú£©Ãû¡£
ËùÓÐÕâЩÄã¿ÉÒÔ¶ÔÒ»¸ö°ü×÷³öµÄ²»Í¬Ñ¡Ôñ¶¼ÏêϸµÄÁÐÔÚÄÇÏêϸµÃ¿ÉŵÄʹÓÃÊÖ²áÖÐÁË£¨man iptables£©¡££¨ÒëÕß×¢£º²Î¼ûiptables man pageÖÐÎİ棩

6¡¢ËµËµÈçºÎ²ð·Ö°ü°É
ÏÖÔÚÎÒÃÇÖªµÀÈçºÎÑ¡ÔñÎÒÃÇÏëÒª²ð·ÖµÄ°üÁË¡£ÎªÍê³ÉÎÒÃǵĹæÔò£¬ÎÒÃÇÐèҪ׼ȷµÄ¸æËßÄÚºËÎÒÃÇÏëÒªËüÈçºÎ×ö¡£

6¡¢1 Source NAT
ÄãÏëÒª½øÐÐSource NAT£¬¸Ä±äÁ¬½ÓµÄÔ´µØÖ·¡£ÕâÔÚPOSTROUIINGÁ´ÖÐÍê³É£¬¾ÍÔÚËü½«ËͳöÈ¥µÄ×îºóÒ»¿Ì¡£ÕâÊÇÒ»¸öÖØÒªµÄϸ½Ú£¬ËùÓÐLinux±¾»úÉÏµÄÆäËûÈκζ«Î÷£¨Â·ÓÉ¡¢°ü¹ýÂË£©¶¼»á¿´¼ûÄǸöÉÐδ¸Ä±äµÄ°ü¡£Ò²Òâζ×Å'-o'£¨Ëͳö½Ó¿Ú£©Ñ¡Ïî¿ÉÓÃÁË¡£
ÓÃÖ¸¶¨'-j SNAT'À´½øÐÐSource NAT£¬'--to-source'Ñ¡ÏîÖ¸¶¨Ò»¸ö»òÒ»¶ÎIPµØÖ·£¬£¨¼ÓÉÏ£©Ò»¸ö»òÒ»¶Î¿ÉÑ¡µÄ¶Ë¿ÚºÅ£¨Ö»ÄÜÓÃÓÚUDPºÍTCPЭÒ飩¡£
# ¸Ä±äÔ´µØÖ·Îª1.2.3.4
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
# ¸Ä±äÔ´µØÖ·Îª1.2.3.4¡¢1.2.3.5»òÕß1.2.3.6
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
# ¸Ä±äÔ´µØÖ·Îª1.2.3.4£¬¶Ë¿Ú1-1023
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023

6¡¢1¡¢1 αװ
Source NATµÄÒ»¸öÌØÀý±»³Æ×÷αװ¡£ËüÖ»Äܱ»ÓÃÓÚ¶¯Ì¬·ÖÅäIPµØÖ·µÄÇé¿ö¡£ÀýÈç±ê×¼²¦ºÅ·þÎñ£¨¾²Ì¬IPµØÖ·ÇëÓÃSNAT£©¡£
ÄãÎÞÐèΪIPαװÃ÷È·Ö¸¶¨Ô´µØÖ·¡£Ëü»áʹÓðüËͳöµÄÄǸö½Ó¿Ú£¨µØÖ·£©×÷ΪԴµØÖ·¡£²»¹ý¸üÖØÒªµÄÊÇ£¬Èç¹ûÄǸöÏß·¹Ø±ÕÁ˵ϰ£¬Á¬½Ó£¨ÎÞÂÛÈçºÎ¶¼»á¶ªÊ§ÁË£©»á±»Íüµô£¬Òâζ×ÅÆôÓÃеÄIPºó·µ»ØµÄ°ü¾Í»áÓеãÎÊÌâÁË£¨Ö¸ÄÇЩÏìÓ¦µôÏßǰ·¢³öµÄ°üµÄ°ü£©¡£
# αװËùÓÐÓÉppp0ËͳöµÄ¶«Î÷
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

6¡¢2 Destination NAT
ÓÃÓÚPREROUTINGÁ´£¬°ü¸Õ¸Õ½øÈëµÄʱºò¡£Òâζ×ű¾»úÉϵÄÈκζ«Î÷¿´¼ûµÄ¶¼ÊÇ“ÕæÕý”µÄÄ¿µÄµØ£¨ÒëÕß×¢£º¼´ÒÑÐ޸ĹýµÄÄ¿µÄµØÖ·£©¡£Ò²Òâζ×Å'-i'£¨½øÈë½Ó¿Ú£©¿ÉÓÃÁË¡£
ÓÃÖ¸¶¨'-j DNAT'À´½øÐÐDestination NAT£¬'--to-destination'Ñ¡ÏîÖ¸¶¨¶¨Ò»¸ö»òÒ»¶ÎIPµØÖ·£¬£¨¼ÓÉÏ£©Ò»¸ö»òÒ»¶Î¿ÉÑ¡µÄ¶Ë¿ÚºÅ£¨Ö»ÄÜÓÃÓÚUDPºÍTCPЭÒ飩¡£
# ¸Ä±äÄ¿±êµØÖ·Îª5.6.7.8
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8
# ¸Ä±äÄ¿±êµØÖ·Îª5.6.7.8¡¢5.6.7.9»ò5.6.7.10
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10
# ¸Ä±äWeb´«Ë͵ÄÄ¿±êµØÖ·Îª5.6.7.8£¬8080¶Ë¿Ú
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 5.6.7.8:8080

6¡¢2¡¢1 ÖØ¶¨Ïò
Destination NATµÄÒ»¸öÌØÀý±»³ÆÎªÖض¨Ïò¡£ËüÏ൱ÓÚ¶Ô½øÈë½Ó¿Ú½øÐÐDNATµÄ¼òµ¥·½±ãµÄÒ»ÖÖÐÎʽ¡£
# ·¢ËͽøÈëµÄ80¶Ë¿ÚµÄWeb´«Êäµ½ÎÒÃǵÄSquid£¨Í¸Ã÷£©´úÀí
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
×¢ÒâSquidÐèÒª±»ÅäÖÃΪ͸Ã÷´úÀí¡£

6¡¢3 Éî²ã´ÎµÄÓ³Éä
»¹ÓÐһЩ¿ÉÄܴ󲿷ÖÈ˲»»áÓõ½µÄNATµÄϸ½Ú¡£

6¡¢3¡¢1 Ò»¸ö·¶Î§ÄÚ¶àµØÖ·µÄÑ¡Ôñ
Èç¹ûÖ¸¶¨ÁËIPµØÖ·µÄ·¶Î§£¬ÄÇô»úÆ÷»áÑ¡Ôñµ±Ç°Ê¹ÓÃ×îÉÙµÄÄǸöIPµØÖ·¡£Õâ¾ÍʵÏÖÁË×î¼óÆÓµÄ¸ºÔؾùºâ¡£

6¡¢3¡¢2 ½¨Á¢¿ÕµÄNATÓ³Éä¡£
Äã¿ÉÒÔʹÓà '-j ACCEPT' Ä¿±êÈÃÁ¬½Óͨ¹ý£¬²»ÐèÒªNAT²ÎÓë¡£

6¡¢3¡¢3 ±ê×¼NATÐÐΪ
ĬÈÏÐÐΪÊǸù¾ÝÓû§¸ø¶¨µÄÄÚÔÚÔ¼Êø¹æÔò£¬¶ÔÁ¬½Ó×÷×îСµÄ¸Ä¶¯¡£Ò²¾ÍÊdzý·Ç±ØÒª ²»Òª½øÐж˿ÚÖØÓ³Éä¡£

6¡¢3¡¢4 ÄÚ²¿Ô´¶Ë¿ÚÓ³Éä
Èç¹ûÆäËûµÄÁ¬½Ó¸²¸ÇÁËÒ»¸öÁ¬½Ó£¬¼´Ê¹Õâ¸öÁ¬½Ó²»ÐèҪʹÓÃNAT£¬Ô´µØÖ·×ª»»ÈԻᷢÉú¡£¿¼ÂÇIPαװ£¬ÕâÖÖÇé¿ö¾Í·Ç³£ÆÕ±é¡£
1¡¢Ò»¸ö´Ó192.168.1.1 1024¶Ë¿Úµ½www.netscape.com 80¶Ë¿ÚµÄWebÁ¬½ÓÒѽ¨Á¢
2¡¢Ëü±»Î±×°³ÉIPαװ·þÎñÆ÷µÄIPµØÖ·£¨1.2.3.4£©
3¡¢IPαװ·þÎñÆ÷ÊÔͼ½¨Á¢Ò»¸ö´Ówww.netscape.com 80¶Ë¿Úµ½1.2.3.4 1024¶Ë¿ÚµÄWebÁ¬½Ó£¨Ëü×Ô¼ºµÄÍⲿ½Ó¿ÚIPµØÖ·£©
4¡¢NAT´úÂë»áÐ޸ĵڶþ¸öÁ¬½ÓµÄÔ´µØÖ·µ½1025£¬ÕâÑùÁ½¸ö£¨Á¬½Ó£©¾Í²»»á³åÍ»ÁË¡£
µ±ÕâÖÖÄÚ²¿Ô´µØÖ·Ó³Éä·¢Éúʱ£¬¶Ë¿Ú·ÖΪÈý¼¶£º
512ÒÔϵĶ˿Ú
512ÖÁ1023Ö®¼äµÄ¶Ë¿Ú
1024ÒÔÉϵĶ˿Ú
ÄÚ²¿¶Ë¿ÚÓ³Éä¾ö²»»á±»Ó³Éäµ½£¨³ý´ËÖ®ÍâµÄ£©ÆäËûÖÖÀà¡£

6¡¢3¡¢5 Èç¹ûNATʧ°Ü»áÔõÑù£¿
Èç¹ûÎÞ·¨°´ÕÕÓû§ÇëÇóµÄÄÇÑù£¬ÎªÁ¬½Ó½¨Ò»¸öµ¥¶ÀµÄÓ³É䣬£¨°ü£©»á±»É¾³ý¡£ÕâÒ²ÊÊÓÃÓÚÄÇЩÎÞ·¨±»¹éΪÈκÎÁ¬½ÓµÄ°ü£¬ÒòΪËüÃÇÊÇ»ûÐε쬻òÕßÊÇÖ÷»úÄÚ´æÒç³öÁË¡£

6¡¢3¡¢6 ¶àÖØÓ³É䣬֨µþºÍ³åÍ»
ÄãµÄNAT¹æÔò¿ÉÒ԰ѰüÓ³Éäµ½ÏàͬµÄ·¶Î§¡£NAT´úÂë´ÏÃ÷µ½¿ÉÒÔ±ÜÃâËüÃǵijåÍ»¡£Òò´Ë£¬Á½Ìõ¹æÔò°Ñ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ÍøÂ磬²»±Øµ£ÐijåÍ»¡£
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0/24
ÏàͬµÄÂß¼­Ò²ÊÊÓÃÓÚNAT·þÎñÆ÷±¾ÉíµÄµØÖ·¡£Õâ¾ÍÊǵÃÒÔαװ¹¤×÷µÄÔ­Òò£¨ÓÉαװºóµÄ°üºÍÀ´×Ô±¾ÉíµÄ“ÕæÊµ”µÄ°ü¹²ÏíÒ»¸ö½Ó¿ÚµØÖ·£©¡£
ÉõÖÁ£¬Äã¿ÉÒÔÓ³ÉäÏàͬµÄ°üµ½Ðí¶à²»Í¬µÄÄ¿±ê£¬ËüÃǻᱻ¹²Ïí¡£ÀýÈ磬Èç¹ûÄ㲻ϣÍûÓ³ÉäÈκζ«Î÷µ½1.2.3.5£¬Äã¿ÉÒÔÕâÑù×ö£º
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254

6¡¢3¡¢7 Ð޸ı¾µØÉú³ÉµÄÁ¬½ÓµÄÄ¿±êµØÖ·
NAT´úÂëÔÊÐíÄã²åÈëDNAT¹æÔòµ½OUTPUTÁ´£¬²»¹ýÕâÔÚ2.4ÖÐÉÐδÍêȫ֧³Ö£¨¿ÉÒÔʹÓ㬵«±ØÐëÓÃеÄÅäÖÃÑ¡ÏijЩ²âÊÔÖеĴúÂë¡£ËùÒÔ³ý·ÇÓÐÈËÔÚ·è¿ñµÄдÕⲿ·Ö´úÂ룬ÎÒ²»ÏàÐÅËü»áºÜ¿ìʵÏÖ£©¡£
µ±Ç°µÄÏÞÖÆÊÇÄãÖ»ÄÜÐÞ¸ÄÄ¿±êµØÖ·µ½±¾»ú£¨ÀýÈç'-j DNAT --to 127.0.0.1'£©£¬ ²»Äܵ½ÈÎºÎÆäËû»úÆ÷£¬·ñÔòÏàÓ¦¿ÉÄܲ»Äܹ»±»Õýȷת»»¡£

7¡¢ ÌØ¶¨µÄЭÒé
ÓÐЩЭÒ鲻ϣÍû±»NAT¡£ÕâЩЭÒ飬Á½ÖÖÑÓÉì±ØÐëÖ¸Ã÷£ºÒ»¸öÊÇЭÒéµÄÁ¬½Ó¸ú×Ù£¬Ò»¸öÊÇÕæÊµNAT¡£
ÔÚ·¢²¼µÄnetfilterÖУ¬ÓпÉÓõÄFTPÄ£¿é£ºip_conntrack_ftp.oºÍip_nat_ftp.o¡£Èç¹ûÄã¼ÓÔØÁËÈÎÒ»ÖÖÄ£¿éµ½ÄãµÄÄÚ ºË£¨»òÕß±àÒë½øÈ¥£©£¬ÄÇôÈκιØÓÚFTPÁ¬½ÓµÄNAT¶¼ÊÇ¿ÉÐеġ£Èç¹ûûÓУ¬ÄÇôֻÄÜʹÓñ»¶¯FTP£¨passive ftp£©£¬¶øÇÒÈç¹û×öÁËһЩSource NAT£¬Ëü£¨Ö¸FTP£©Ò²Ðí²»Äܿɿ¿µÄ¹¤×÷¡£

8¡¢ ¹ØÓÚNATµÄ¾¯¸æ
Èç¹ûÄã¶ÔÁ¬½Ó×öNAT£¬ËùÓÐË«Ïò´«Ë͵İü£¨½øÈëºÍËͳöÍøÂçµÄ£©±ØÐëͨ¹ýNAT·þÎñÆ÷£¬·ñÔòNAT·þÎñÆ÷µÄ¹¤×÷¿ÉÄܲ»¿É¿¿¡£ÌرðÊÇ£¬Á¬½Ó¸ú×Ù´úÂëÖØ×éÁË·ÖÆ¬£¬Ò²¾ÍÒâζ×Ų»¹âÊÇÁ¬½Ó¸ú×Ù²»Äܿɿ¿¹¤×÷£¬ÉõÖÁËùÓаü¶¼ÎÞ·¨Í¨¹ý£¬ÒòΪ·ÖƬ±»¶ªÆú¡£

9¡¢ Source NAT ºÍ·ÓÉ
Èç¹ûÄãÒª×öSNAT£¬Äã±ØÐë×¢ÒâËùÓлúÆ÷±»SNATµÄ°üµÄ»ØÓ¦¶¼½«·¢Ë͵½NAT·þÎñÆ÷¡£ÀýÈ磬Èç¹ûÄãÓ³ÉäÁËһЩËͳöµÄ°üµÄÔ´µØÖ·Îª1.2.3.4£¬ÄÇôÍⲿµÄ·ÓÉÆ÷±ØÐëÖªµÀ·¢ËÍ»ØÓ¦°üµÄµØÖ·µ½NAT·þÎñÆ÷¡£¿ÉÒÔÕâÑù×ö£º
1¡¢Èç¹ûÄã¶Ô±¾»úµØÖ·×öSNAT£¨Â·ÓɵÈËùÓÐÊÂÇé¶¼Õý³££©£¬Äã²»ÐèÒª×öÈκÎÊ¡£
2¡¢Èç¹ûÄãÔÚ±¾µØLANÉÏ×öSNATµ½Î´ÓõØÖ·£¨ÀýÈ磬ÄãÓ³ÉäΪ1.2.3.99£¬ÄãµÄ1.2.3.0/24ÍøÂçÖÐδÓõÄIP£©£¬ÄãµÄNAT·þÎñÆ÷ÐèÒªÏñÄǸöµØÖ·£¨99£©Ò»ÑùÕýÈ·ÏìÓ¦ARPÇëÇó¡£×î¼òµ¥µÄ°ì·¨Êǽ¨Á¢Ò»¸öIP±ðÃû£¬ÀýÈ磺
# ip address add 1.2.3.99 dev eth0
3¡¢Èç¹ûÄã¶ÔÍêÈ«²»Í¬µÄµØÖ·×öSNAT£¬Äã±ØÐë±£Ö¤±»SNATµÄ°üµ½´ïµÄ»úÆ÷»á·µ»ØNAT·þÎñÆ÷¡£Èç¹ûNAT·þÎñÆ÷ÊÇËüÃǵÄĬÈÏÍø¹Ø£¬ÄÇô¾ÍÒѾ­ÐÐÁË£¬·ñÔòÄãÐèÒª·¢²¼Ò»¸ö·ÓÉ£¨Èç¹ûÔËÐÐÁË·ÓÉЭÒ飩»òÕß¶Ôÿ¸ö»úÆ÷ÊÖ¹¤Ìí¼Ó·ÓÉ¡£

10¡¢ ͬһ¸öÍøÂçÄÚµÄDestination NAT¡£
Èç¹ûÄãÒª¶Ôͬһ¸öÍøÂç×ö¶Ë¿Úת·¢£¬ÄãÐèҪȷÈÏËùÓÐÒÔºóµÄ°üºÍ»ØÓ¦°ü¶¼Í¨¹ýNAT·þÎñÆ÷£¨ÕâÑùËüÃDzÅÄܱ»Ð޸ģ©¡£NAT´úÂëÏÖÔÚ£¨×Ô2.4.0-test6£©£¬»áÆÁ±Îµôͬ×éµÄ±»NATµÄ°üËͳöµÄICMPÖØ¶¨Ïò£¬²»¹ýÊÕµ½µÄ·þÎñÆ÷»á¼ÌÐø³¢ÊÔÖ±½ÓÏìÓ¦¿Í»§¡££¨²»»áÀí½âÕâ¸ö»ØÓ¦£©
¾­µäµÄÇé¿öÊÇ£¬ÄÚ²¿ÈËÔ±ÊÔͼ·ÃÎÊÄãµÄ“¹«ÓÔWeb·þÎñÆ÷£¬¶øËüʵ¼ÊÉÏ´Ó¹«ÓõØÖ·£¨1.2.3.4£©±»DNATµ½ÄÚ²¿»úÆ÷£¨192.168.1.1£©£¬ÀýÈ磺
# iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to 192.168.1.1
Ò»ÖÖ°ì·¨ÊÇÔËÐÐһ̨ÄÚ²¿DNS·þÎñÆ÷£¬ËüÖªµÀÄãµÄ¹«Óã¨Íⲿ£©Web·þÎñÆ÷µÄÕæÊµµÄ£¨ÄÚ²¿£©IPµØÖ·£¬²¢×ª·¢ËùÓÐÆäËûÇëÇóµ½ÍⲿDNS·þÎñÆ÷¡£Ò²¾ÍÊÇ˵ÄãµÄWeb·þÎñÆ÷Äܹ»¼ÇÂ¼ÕæÊµµÄÄÚ²¿IPµØÖ·¡£
ÁíÒ»ÖÖ°ì·¨ÊÇÈÃNAT·þÎñÆ÷Ó³ÉäÄÇЩÁ¬½ÓµÄÔ´µØÖ·µ½Ëü×Ô¼º£¬È÷þÎñÆ÷ͨ¹ýËü·¢³öÏìÓ¦¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔÕâÑù×ö£¨¼ÙÉèNAT·þÎñÆ÷ÄÚ²¿IPµØÖ·ÊÇ192.168.1.250£©£º
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 -p tcp --dport 80 -j SNAT --to 192.168.1.250
ÒòΪPREROUTING¹æÔò»áÊ×ÏÈÔËÐУ¬¶ÔÄÚ²¿Web·þÎñÆ÷À´Ëµ£¬°üµÄÈ¥ÏòÔçÒÑÈ·¶¨¡£ÎÒÃÇ¿ÉÒÔÈ·¶¨ºÃÔ´IPµØÖ·¡£

11. Thanks
Thanks first to WatchGuard, and David Bonn, who believed in the netfilter idea enough to support me while I worked on it. And to everyone else who put up with my ranting as I learnt about the ugliness of NAT, especially those who read my diary.
Ê×ÏȸÐлÔÚÎÒ¹¤×÷ÆÚ¼äÏàÐÅnetfilterÉèÏë²¢Ö§³ÖÎÒµÄWatchGuardºÍDavid Bonn¡£ÒÔ¼°ËùÓжÔNATÌá³öÖ¸ÕýµÄÅóÓÑ£¬ÓÈÆäÊǶÁ¹ýÁËÎÒµÄÈռǵġ£
Rusty.

ÆÀÂÛ (0) All