文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>iptables NAT 阅读

iptables NAT 阅读

时间:2006-10-23  来源:luweinet

上学的时候怎么看nat也没完全理解iptables 的nat,工作需要时,又重新看了一遍nat

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j SAME --to 10.5.6.7-10.5.6.8 --to 10.5.6.10-10.5.6.20
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SAME --to 10.5.6.7-10.5.6.9 --nodest

Source NAT是指修改第一个包的源地址:也就是说,改变连接的来源地。
Source NAT会在包送出之前的最后一刻做好post-routing(动作),伪装是SNAT的一种特殊形式。

Destination NAT 是指修改第一个包的目标地址:也就是说,改变连接的目的地。
Destination NAT 总是在包进入以后(马上)进行before routing(动作)。端口转发、负载均衡和透明代理都属于DNAT。

echo 1 > /proc/sys/net/ipv4/ip_forward

NAT规则表包含三个称为“链”的列表:每个规则都按顺序检查包,直到有一个匹配。其中两个被称为PREROUTING
(用于 Destination NAT,当包进入时检查),POSTROUTING(用于Source NAT,包离开时检查),第三个叫
OUTPUT,这里可以忽略。
如果我有足够的艺术天分的话,下面的见图会准确的说明上述概念:

             _____                                     _____
            /     \                                   /     \
          PREROUTING -->[Routing ]----------------->POSTROUTING----->
            \D-NAT/     [Decision]                    \S-NAT/
                            |                            ^
                            |                            |
                            |                            |
                            |                            |
                            |                            |
                            |                            |
                            |                            |
                            --------> Local Process ------
SNAT 特例 MASQ伪装所有由ppp0送出的东西
#iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
#if have a public ip address
#iptables -t nat -A POSTROUTING -s 192.168.20.32/255.255.255.240 -j SNAT --to 211.148.130.133

DNAT
#改变目标地址为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

SNAT 特例 重定向
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
# httpd_accel_port 80
#squid透明代理的设定
httpd_accel_host virtual
#httpd_accel_port 80
# httpd_accel_with_proxy on
httpd_accel_with_proxy off
# httpd_accel_uses_host_header off
httpd_accel_uses_host_header on

多重映射,重叠和冲突
你的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服务器本身的地址。这就是得以伪装工作的原因(由伪装后的包和来自本身的“真实”的
包共享一个接口地址)。甚至,你可以映射相同的包到许多不同的目标,它们会被共享。例如,如果你不希望
映射任何东西到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

详细可参考
http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.html
http://cmpp.linuxforum.net/NetSnake/nathtcn.html  中文
相关阅读 更多 +
排行榜 更多 +
狂热战车

狂热战车

飞行射击 下载
士兵和小鸡

士兵和小鸡

飞行射击 下载
西部枪射击目标

西部枪射击目标

飞行射击 下载