static stateless 2-way NAT on Linux with iptables的应用实例

简介:
前面几天,我完成了一个static stateless 2-way NAT,写了几篇文章,但是着重于理论分析,本文来展示一个应用实例。在具体展示实例之前,先说一个static stateless 2-way NAT和Linux原生conntrack NAT的区别,static stateless 2-way NAT并不会限制连接的数量,因为它不用维护连接状态,也就没有了最大值的限制,其次,如果static stateless 2-way NAT的算法更好些,它的效率会更高。在哈尔滨长春旅游的那些天,我曾经想过,能不能用这种stateless的方式实现一个NAPT呢?后来觉得很难, 因为在TCP/IP协议层面,一个特定的连接中的5元组是不能发生变化的(UDP协议视情况而定),这就要求NAPT在完成5元组唯一性映射的时候需要识 别出一个连接,这就不再是stateless了,而是stateful了,一个例子就可以说明这种情况,假设连接A的数据包a的5元组被映射到了 {sip-1,dip-1,tcp,sport-1,dport-1},此后这个连接断开了,问题是如果过去很久以后又有相同5元组的TCP连接来到怎么 办呢?解决这个问题的办法就是为一个entry维护一个timer,这样...这样还不如直接用conntrack NAT呢....
       首先给出一个简单的拓扑图:
<client>eth0:192.168.10.1
|
|
eth0:192.168.10.254
<FWD>[NAT BOX]
eth1:192.168.184.254
|
|
eth0:192.168.184.1
<FWD>                            
eth1:192.168.1.1
|
|
<server>eth0:192.168.1.8
在上面简单的拓扑中,我希望的是在client可以拉取1.2.1.2上的网页,而1.2.1.2是映射到server上的,此外,端口由12345映射到80。这个映射是完全无状态的,用我的static stateless 2-way NAT来完成。
       在我还没有做好iptables接口之前,我使用procfs文件系统接口,那个时候还没有dev支持,命令如下:
echo '+1.2.1.2 192.168.1.8 dst tcp port-map 12345 80 ' >/proc/net/static_nat 
echo '+192.168.184.250 192.168.184.154 src tcp' >/proc/net/static_nat
后来有了更为方便的iptables接口,事情起了变化,我可以用熟悉的iptables命令来配置了,依然在nat表配置规则:
root@abcd:~# iptables-save 
# Generated by iptables-save v1.4.21 on Sun Dec 28 03:23:22 2014
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [1484:204554]
-A PREROUTING -j STATIC-2-WAY-NAT --mapaddr 192.168.184.250-192.168.184.154 --type src --proto all --mapport 0-0 --dev eth1
-A POSTROUTING -j STATIC-2-WAY-NAT --mapaddr 1.2.1.2-192.168.1.8 --type dst --proto tcp --mapport 12345-80 --dev eth0
COMMIT
# Completed on Sun Dec 28 03:23:22 2014
root@abcd:~# 
除了可以完成配置之外,我保留了一个统计信息,可以看出有多少个数据包以及多少个字节经历了NAT。统计信息的查看方式如下:
root@abcd:~# cat /proc/net/static_nat Source trans table:
From:192.168.184.250 To:192.168.184.154    [ALL STATIC] [eth1] [Bytes:1080  Packet:23]
From:192.168.1.8     To:1.2.1.2            [TCP AUTO] Port map[From:80    To:12345] [eth0] [Bytes:124  Packet:3]

Destination trans table:
From:1.2.1.2         To:192.168.1.8        [TCP STATIC] Port map[From:12345 To:80   ] [eth0] [Bytes:180  Packet:4]
From:192.168.184.154 To:192.168.184.250    [ALL AUTO] [eth1] [Bytes:5348  Packet:90]
root@abcd:~# 

展示统计信息的粒度是很重要的,当然,如果能表示都有哪些数据包经历了NAT并可以打印数据包的超级详细信息,那是再好不过的了,但是那样会损失大量的时间和空间,所以只能求取舍了。

 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1598622


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
952 10
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1162 13
|
存储 数据采集 监控
ubuntu(linux)系统主要应用于哪些工业场景中?研维三防ubuntu系统的手持工业三防平板电脑在哪些行业中有实际应用
Ubuntu 系统凭借其独特的优势,在众多工业场景中得到了广泛应用,为工业数字化、智能化发展提供了有力支持。而研维三防基于 Ubuntu 定制系统的手持工业三防平板电脑,更是将 Ubuntu 系统的优势与工业级的性能、坚固耐用性完美结合,在电力、物流、制造等多个行业中展现出强大的应用价值,助力企业提高生产效率、优化管理流程、提升产品质量,成为推动工业现代化发展的重要力量。随着技术的不断进步与创新,相信 Ubuntu 系统以及研维三防这类工业级设备将在更多的工业领域中发挥更大的作用,为工业发展带来更多的机遇与变革。
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
3642 28
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
702 73
|
机器学习/深度学习 安全 Linux
Linux 主要应用领域的归纳
服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性,Linux成为许多企业服务器的首选操作系统。 Web服务器:Linux是Web服务器的理想选择,因为它支持Apache、Nginx等流行的Web服务器软件,这些软件在Linux上运行稳定且性能卓越。Linux服务器可以高效地处理大量并发请求,提供快速、可靠的Web服务。 数据库服务器:Linux也广泛用于数据库服务器,如MySQL、PostgreSQL和Oracle等数据库管理系统在Linux上运行良好。Linux的稳定性和安全性使得它成为存储和管理敏感数据的理想平台。 邮件服务器:Lin
885 5
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
416 5
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
475 1
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
903 4