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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
3月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
132 2
|
8天前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
51 28
|
5天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
21 11
|
1月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
76 15
|
2月前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
189 7
|
4月前
|
运维 监控 网络协议
|
3月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
170 2
|
3月前
|
运维 负载均衡 安全
|
4月前
|
Ubuntu Linux 虚拟化
Linux虚拟机网络配置
【10月更文挑战第25天】在 Linux 虚拟机中,网络配置是实现虚拟机与外部网络通信的关键步骤。本文介绍了四种常见的网络配置方式:桥接模式、NAT 模式、仅主机模式和自定义网络模式,每种模式都详细说明了其原理和配置步骤。通过这些配置,用户可以根据实际需求选择合适的网络模式,确保虚拟机能够顺利地进行网络通信。
160 1
|
4月前
|
网络协议 安全 网络安全
Cisco-网络端口地址转换NAPT配置
Cisco-网络端口地址转换NAPT配置