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,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
17天前
|
负载均衡 安全 网络安全
|
3天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
13 2
|
18天前
|
运维 负载均衡 安全
|
1月前
|
安全 网络安全 数据安全/隐私保护
Cisco-网络地址转换动态NAT
Cisco-网络地址转换动态NAT
|
1月前
|
安全 网络安全 数据安全/隐私保护
Cisco-网络地址转换静态NAT
Cisco-网络地址转换静态NAT
|
3月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模型的特性是什么?
在Linux中,LVS-NAT模型的特性是什么?
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
17 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
15 2
|
11天前
|
缓存 监控 Linux
|
14天前
|
Linux Shell 数据安全/隐私保护