手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

Linux 2.4 NAT HOWTO 简体中文版

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
上述每一点,当我们查看连接(中)的包时,假如是个新的连接,我们查看 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[译者:这二者是等价的,只是表示方法不同])。 您能够指定进入或送出的匹配接口。但是能否指定取决于您想要写入规则的那个链: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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!