問一個關于iptables的問題。。

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

問一個關于iptables的問題。。

#1

帖子 cnkilior » 2008-08-05 15:56

在Iptables 指南 1.1.19中有2個地方十分不能理解其含義!
SNAT改变包的源地址,这在极大程度上可以隐藏你的本地网络或者DMZ等。一个很好的例子是我们知道防火墙的外部地址,但必须用这个地址替换本地网络地址。有了这个操作,防火墙就能自动地对包做SNAT和De-SNAT(就是反向的SNAT),以使LAN能连接到Internet。如果使用类似 192.168.0.0/24这样的地址,是不会从Internet得到任何回应的。因为IANA定义这些网络(还有其他的)为私有的,只能用于LAN内部。
针对这个问题有个简单的解决办法,因为这些包都要进入防火墙,而且它们都去往需要做DNAT才能到达的那个地址,所以我们只要对这些包做SNAT操作即可。比如,我们来考虑上面的例子,如果对那些进入防火墙而且是去往地址为$HTTP_IP、端口为80的包做SNAT操作,那么这些包就好象是从$LAN_IP来的了,也就是说,这些包的源地址被改为$LAN_IP了。这样,HTTP服务器就会把回复包发给防火墙,而防火墙会再对包做 Un-DNAT操作,并把包发送到客户机。解决问题的规则如下:
所謂的de-snat un-dnat是需要人工的寫一條規則,
還是真正自動的,iptables記住了做了snat dnat 的連接,當有包回應時,把包的目標地址/源地址修改成原來的。
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

#2

帖子 cnkilior » 2008-08-05 16:04

還有一個問題:
內網IP(192網段)和外網IP聯系時是如何操作的?是由iptables解決的嗎?
--
如果是的話:到底是iptables把源地址修改成自己的外網IP,還是iptables把源地址修改成內網IP所對應的外網Ip

--
如果不是:那是誰解決的?

----------
另外我在想:私有IP地址會對應一個外網IP嗎?外網ip要通過申請,而私有ip只要一個路由器就可以了!
angelus
帖子: 445
注册时间: 2007-08-27 17:31

#3

帖子 angelus » 2008-08-05 20:25

NAT有两种类型,Source NAT即SNAT 与 Destination NAT即DNAT
SNAT是指改变第一个包的源地址,就是改变连接的来源地,SNAT会在包送出之前的最后一刻做好Post-Routing动作,linux世界里的伪装(Masquerading)就是SNAT的一种特殊形式
DNAT是指修改第一个包的目的地址,即改变连接的目的地,DNAT总是在包进入后立即进行Pre-Routing动作,端口转发,负载均衡,和透明代理都属于DNAT
对外网来说,整个内网都是通过唯一的IP地址标识的,192,10,172这类的IP是不会得到int的识别的
NAT全称是Network Address Translation即网络地址转换,主要就是为了解决ipv4地址耗尽问题,
允许一个机构以一个地址出现的internet上,NAT将每个局域网节点地址转换成一个internat地址。
因为NAT把所有的内网地址全部转换为一个注册的ip地址,所以在外网看来,只有一台主机暴陋在internat
上,这台主机就是提供地址转换的代理服务器

做NAT是需要把规则写入iptables的,
SNAT对应POSTROUTING链
DNAT对应PREROUTING链

说到这里如果你要写防火墙的话,记得丢弃那些来自外网,可源地址却是内部地址的包,因为这种伪装会绕过防火墙到达它想要去的内部任何地址
你能学会世界上所有语言来叫一种鸟的名字,当你知道所有这些名字叫法后,却对这种鸟一无所知~
理查德-费曼
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

#4

帖子 cnkilior » 2008-08-06 8:21

允许一个机构以一个地址出现的internet上,NAT将每个局域网节点地址转换成一个internat地址。
逐漸明白了一點。解決了我第二個問題。非常感謝。

------

第一條。。誰來幫幫忙啊!
回复