Linux 2.4 NAT (网络地址转换) HOWTO(二)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

3. 两种类型的 NAT

我将 NAT 分为两种不同的类型﹕ Source NAT (SNAT)  Destination NAT (DNAT)

Source NAT 就是您将改变第一个封包的来源地址﹕例如﹐您为传入的联机做 caching 的动作。Source NAT 永远会在封包传出网线之前就做好 post-routing 的动作。封包伪装(Masquerading)就是一个 SNAT特例。

Destination NAT 就是您将改变第一个封包的目的地地址﹕例如您要为传出的联机做 caching 的动作。Destination NAT 永远会在封包从网线进入之后就马上做好 pre-routing 的动作。Port forwarding﹑负载分担﹑以及透明代理﹐都属于 DNAT

4.  2.0  2.2 核心的快速转变

非常抱歉﹐假如您仍然忙于从 2.0(ipfwadm)  2.2(ipchains) 的转型的话。不过﹐这也是个喜 参半的消息啦。

首先﹐您可以轻易的一如往昔地使用 ipchains  ipfwadm。要这样做的话﹐您需要将最新的 netfilter套件中的 `ipchains.o'  `ipfwadm.o' 核心模块加载。它们是相互排斥的(您应已获警告了)﹐同时也不能和其它 netfilter 模块同时整合在一起。

一旦其中一个模块被加载﹐您就可以如常使用 ipchains  ipfwadm 了﹐但也有如下一些变化啦﹕

  •  ipchains -M -S﹐或是 ipfwadm -M -s 作伪装逾时将不再有效。因为逾时设定已经移至新的 NAT c中﹐所以这里也就没什么所谓了。

  • 在伪装列表中显示的 iniseqdelte﹑和 previousdelta 字段﹐将永远为零。

  • 同时归零(zeroing)和列示记数器(counter) `-Z -L' 已无作用﹕记数器将不能再归零了。

Hacker 们仍要留意之处﹕

  • 您现在可以捆绑 61000-65095 之间的埠口﹐而无需理会您是否使用封包伪装技术。在过去﹐封包伪装程序会把此值域内的所有东西捕获进来﹐所以其它程序就不可用之了。

  • 至于(尚未成文之) getsockname 破解﹐在过去﹐透明代理程序可以找出那些不再有效联机之真正目的地。

  • 至于(尚未成文之) bind-to-foreign-address 破解﹐同样尚未实作﹔这在过去用以完善透明代理的构想。

4.1 救命啊﹗我只想要封包伪装而已﹗

没错﹐这也是大多数朋友之需。如果您用 PPP 拨接获得的动态 IP (如果您不了解的话﹐那您应该是了)﹐您或许只想单纯告诉您的主机让所有来自您内部网络的封包﹐看起来如来自该 PPP 拨接主机一样。

# Load the NAT module (this pulls in all the others).

modprobe iptable_nat

 

# In the NAT table (-t nat), Append a rule (-A) after routing

# (POSTROUTING) for all packets going out ppp0 (-o ppp0) which says to

# MASQUERADE the connection (-j MASQUERADE).

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

 

# Turn on IP forwarding

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

注﹕您这里并没做任何封包过滤﹕如要的话﹐请参考 Packet Filtering HOWTO﹕将 NAT 和封包过滤合并起来就是了。

4.2  ipmasqadm 怎么了﹖

这个其实取决于使用者而已﹐所以我并不是很为向后兼容问题而担心。您可以单纯使用 iptables -t nat port forwarding 的动作。例如﹐在 Linux 2.2 您或许已经这样做了﹕

# Linux 2.2

# Forward TCP packets going to port 8080 on 1.2.3.4 to 192.168.1.1's port 80

ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80

而现在﹐如此则可﹕

# Linux 2.4

# Append a rule pre-routing (-A PREROUTING) to the NAT table (-t nat) that

# TCP packets (-p tcp) going to 1.2.3.4 (-d 1.2.3.4) port 8080 (--dport 8080)

# have their destination mapped (-j DNAT) to 192.168.1.1, port 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

假如您想让这条规则同时修改本机联机的话(如﹐即使在 NAT 主机本身﹐要连接 1.2.3.4  8080 埠口之 telnet 联机﹐会帮您连接至 192.168.1.1  80 埠口)﹐您就可以插入相同的规则至 OUTPUT 链中(它只适用于本机传出的封包)

# Linux 2.4

iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \

        -j DNAT --to 192.168.1.1:80










本文转自 makewong 51CTO博客,原文链接:http://blog.51cto.com/makewong/565360,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
8天前
|
网络协议 网络安全 网络架构
【收藏】使用网络地址转换 增强网络安全
【收藏】使用网络地址转换 增强网络安全
|
2月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模型的特性是什么?
在Linux中,LVS-NAT模型的特性是什么?
|
2月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模式的原理是什么?
在Linux中,LVS-NAT模式的原理是什么?
|
2月前
|
负载均衡 Linux 网络虚拟化
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
|
2月前
|
虚拟化
VMware NAT 模式 虚拟机网络电缆被拔出,连不上网
VMware NAT 模式 虚拟机网络电缆被拔出,连不上网
65 0
|
3月前
|
Linux 网络安全 虚拟化
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
|
4月前
|
存储 运维 网络协议
穿越网络界限:探索NAT IPv4的神秘面纱
穿越网络界限:探索NAT IPv4的神秘面纱
86 1
|
4月前
|
Linux 网络安全
NAT 技术与 Linux iptables
NAT 技术与 Linux iptables
|
4月前
|
网络协议 网络架构
网络地址转换
网络地址转换
|
5月前
ENSP Nat地址转换(配置命令 )
ENSP Nat地址转换(配置命令 )
123 1
下一篇
无影云桌面