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

简介:

7. 特殊协议

有些协定是并不想要做 NAT 的。对于每一个这样的协议而言﹐有两个延伸设定(extension)是必须要写清楚的:一个是关于协议之联机追踪﹐另一个关于实际的 NAT

 netfilter 发行套件里面﹐有一些关于 ftp 的现行模块﹕ip_conntrack_ftp.o  ip_nat_ftp.o 。如果您把这些插入到您的核心里面(或您永久性的编译它们)﹐那么要在 ftp 联机上做任何种类的 NAT 都是可行的。如果您不这样的话﹐那您可以使用被动模式 ftp﹐不过如果您要做一些动作甚于简单 Source NAT 的话﹐这就可能不那么可靠了。

8. NAT 的一些限制 (caveats)

如果在一个联机上做 NAT﹐所有 双向 (传出和传入的封包﹐都必须要通过 NAT 主机才 行﹐否则并不可靠。尤其在联机追踪程序重组碎片 (fragments)的时候﹐也就是说﹐不但联机追踪会不可能﹐而且您的封包根本就不能通过﹐因为碎片会被挡下。

9. Source NAT 与路由

如果您要做 SNAT﹐您会想要确定经过 SNAT 封包所传给的主机会将响应送回给 NAT 主机。例如﹐如果您映对某些传出封包到来源地址 1.2.3.4 之上﹐那么 部的路由器就必须知道要将响应封包(目的地1.2.3.4 )送回给该主机。这可以用如下方法做到﹕

1.     如果您要在主机自己的地址(路由和其它所有运作皆正常)上面做 SNAT﹐您无需做任何动作。

2.     如果您要在一个在本机网络上尚未使用的地址做 SNAT(例如﹐映对到在 1.2.3.0/24 网络上的一个可用 IP 1.2.3.99)﹐您的 NAT 主机就需要响应关于该地址的 ARP 请求﹐一如它自己本身的一样﹕最简单的方法就是建立 IP alias﹐例如﹕

3.  # ip address add 1.2.3.99 dev eth0

4.     如果您要在一个完全不同的地址上做 SNAT﹐您就要确定 SNAT 封包抵达的机器能够路由回该 NAT主机。如果 NAT 主机是它们的默认网关的话﹐是可以做到的﹐否则﹐您就要广告(advertize )一个路由(如果跑路由协议的话)﹐或是手工的在每一台参与机器上增规则

10. 在同一网络上的 Destination NAT

如果您要做 portforwarding 回到同一个网络﹐您要确定前向和响应封包双方都经过该 NAT 主机(这样它们 能被修改)NAT 程序从现在开始(2.4.0-test6以后)﹐会挡掉后面情形所产生的传出 ICMP 重导向﹕那些已经 NAT 的封包以它所进入的相同界面传出﹐而接收端服务器仍尝试直接响应到客户端(不认可该响应)

经典的情形是内部人员尝试连接到您的 `公有(public)' 网站服务器﹐实际上是从公有地址(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 服务器﹐它知道您的公有网站的真正(内部) IP 地址﹐而将其它请求转传给 部的 DNS 服务器。换而言之﹐关于您网站服务器的记录会正确地显示为内部 IP 地址。

而另一个方法是同时让这台 NAT 主机将该等联机之来源 IP 地址映对为它自己的地址﹐我们可以像如下那样做(假设 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 规则是最先执行的﹐对内部网站服务器而言﹐封包就已经被定向好了﹕我们可以内定好哪个为来源 IP 地址。

11. 感谢

首先感谢在我工作期间相信 netfilter 的构想并支持我的 WatchGuard  David Bonn

以及所有其他帮我指正 NAT 之不足的朋友﹐尤其是那些读过我的日记的。

Rusty.










本文转自 makewong 51CTO博客,原文链接:http://blog.51cto.com/makewong/565362,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
网络协议 安全 网络安全
NAT网络地址转换
NAT(网络地址转换)是一种关键的网络技术,通过将内部私有地址转换为外部公网地址,实现多设备共享单一公网IP上网。它不仅解决了IPv4地址不足的问题,还增强了网络安全,隐藏了内部网络结构。NAT主要分为静态NAT、动态NAT和NAPT(网络地址端口转换)三种类型,广泛应用于家庭和企业网络中。然而,NAT也存在对某些应用不友好、增加延迟及与IPv6不兼容等缺点。
1875 14
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
2473 2
|
运维 负载均衡 安全
|
网络协议 安全 网络安全
Cisco-网络端口地址转换NAPT配置
Cisco-网络端口地址转换NAPT配置
517 1
|
安全 网络安全 数据安全/隐私保护
Cisco-网络地址转换动态NAT
Cisco-网络地址转换动态NAT
368 1
|
安全 网络安全 数据安全/隐私保护
Cisco-网络地址转换静态NAT
Cisco-网络地址转换静态NAT
306 1
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模式的原理是什么?
在Linux中,LVS-NAT模式的原理是什么?
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模型的特性是什么?
在Linux中,LVS-NAT模型的特性是什么?
|
负载均衡 Linux 网络虚拟化
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
|
安全 网络安全 网络架构
计算机网络地址转换(NAT)
网络地址转换(NAT)允许多个主机共享一个或一组公共IP地址,同时保护内部网络的隐私和安全。NAT通常由路由器或防火墙设备执行,它充当内部网络和外部网络之间的中间人,将内部主机的私有IP地址映射到一个或多个公共IP地址上。
541 0