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

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

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,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
安全 网络安全 网络架构
计算机网络地址转换(NAT)
网络地址转换(NAT)允许多个主机共享一个或一组公共IP地址,同时保护内部网络的隐私和安全。NAT通常由路由器或防火墙设备执行,它充当内部网络和外部网络之间的中间人,将内部主机的私有IP地址映射到一个或多个公共IP地址上。
21 0
|
4月前
|
网络协议
地址重叠时,用户如何通过NAT访问对端IP网络?
地址重叠时,用户如何通过NAT访问对端IP网络?
88 0
|
4月前
|
网络协议 Linux 网络架构
Linux三种网络模式 | 仅主机、桥接、NAT
Linux三种网络模式 | 仅主机、桥接、NAT
171 0
|
6月前
|
网络协议 虚拟化
76Linux - VMware虚拟机三种联网方法( NAT网络地址转换: 默认使用VMnet8 )
76Linux - VMware虚拟机三种联网方法( NAT网络地址转换: 默认使用VMnet8 )
60 0
|
1月前
|
网络协议 网络安全 网络虚拟化
网络技术基础(13)——NAT网络地址转换
【3月更文挑战第2天】网络基础笔记(加班了几天,中途耽搁了,预计推迟6天),这篇借鉴了之前师兄的笔记,边听边记笔记实在是太慢了。
|
2月前
|
Ubuntu 虚拟化
Vmware Nat网络配置
Vmware Nat网络配置
20 0
|
3月前
|
网络安全 虚拟化 Windows
RHEL7-NAT模式连接外部网络
RHEL7-NAT模式连接外部网络
22 1
|
6月前
|
网络协议
【HCIA】11.ACL与NAT地址转换
【HCIA】11.ACL与NAT地址转换
51 0
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
41 0
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真