CN109088953B - 一种Linux网关代理转换IP的方法及装置 - Google Patents
一种Linux网关代理转换IP的方法及装置 Download PDFInfo
- Publication number
- CN109088953B CN109088953B CN201710446305.9A CN201710446305A CN109088953B CN 109088953 B CN109088953 B CN 109088953B CN 201710446305 A CN201710446305 A CN 201710446305A CN 109088953 B CN109088953 B CN 109088953B
- Authority
- CN
- China
- Prior art keywords
- network port
- data packet
- conversion
- virtual
- linux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2521—Translation architectures other than single NAT servers
- H04L61/2528—Translation at a proxy
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种Linux网关代理转换IP的方法及装置,涉及Linux系统技术领域,其方法包括:Linux网关代理对数据包进行路由检测,得到数据包路由方向;Linux网关代理根据所得到的数据包路由方向,确定数据包是否需要进行IP转换;若确定数据包需要进行IP转换,则Linux网关代理将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换。
Description
技术领域
本发明涉及Linux系统技术领域,特别涉及一种Linux网关代理转换IP的方法及装置。
背景技术
随着Linux系统应用的日益普及,当前很多生产设备大部分都部署在Linux设备上,其中Linux也逐步在充当一下数据设备的功能,比如网关、路由等,而其中的IP地址的转换功能是当前Linux充当数据设备网关功能时经常使用的一个功能,而目前Linux配置IP地址转换功能的方法基本上有下面两种:
1、通过iptables命令来配置IP NAT(Network Address Translation,网络地址转换),这种方式无法在Linux充当代理网关的双向通信环境使用,因为你无法使用一条NAT规则来实现对两个方向主动发起的流量做NAT,要想实现“来自x的数据包的源地址转换为y,去往 y的数据包的目标地址转为x”这样的逻辑,必须使用两条以上的规则,另外iptables的NAT配置是基于数据流的,是有状态的NAT,它只对一个创建ip_conntrack结构体的那个数据包进行规则查找,因此在一个流已经创建并在数据传输的时候,加入一条NAT配置是无效的。
2、利用Linux的Netfilter框架来编写对应的hook,在协议栈的处理路径上拦截数据包进行检查匹配,它需要对每一个经过协议栈的数据包都进行检查,每个包都要讲过hook检测,在流量大的场景下,对Linux的转发报文效率会大大的降低,实现起来复杂,并且不适合规模应用。
发明内容
根据本发明实施例提供的方案解决的技术问题是Linux作为网关代理无法实现高效的无状态IP转换。
根据本发明实施例提供的一种Linux网关代理转换IP的方法,包括:
Linux网关代理对数据包进行路由检测,得到数据包路由方向;
Linux网关代理根据所得到的数据包路由方向,确定数据包是否需要进行IP转换;
若确定数据包需要进行IP转换,则Linux网关代理将需要进行 IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP 进行转换。
优选地,所述数据包路由方向包括从内网口进入到外网口、从内网口进入到内网口、从外网口进入到内网口以及从外网口进入到外网口。
优选地,所述Linux网关代理根据所得到的数据包路由方向,确定数据包是否需要进行IP转换包括:
若所得到的数据包路由方向为从内网口进入到外网口或从外网口进入到内网口时,则Linux网关代理确定数据包需要进行IP转换;
若所得到的数据包路由方向为从内网口进入到内网口或从外网口进入到外网口时,则Linux网关代理确定数据包不需要进行IP转换。
优选地,所述Linux网关代理将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换包括:
Linux网关代理将从内网口进入到外网口的数据包发送给SNAT (Source NAT,源地址转换)虚拟IP转换设备,使所述SNAT虚拟 IP转换设备对数据包的源IP进行转换。
优选地,所述Linux网关代理将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换包括:
Linux网关代理将从外网口进入到内网口的数据包发送给DNAT (DestinationNAT,目的地址转换)虚拟IP转换设备,使所述DNAT 虚拟IP转换设备对数据包的目的IP进行转换。
根据本发明实施例提供的一种Linux网关代理转换IP的装置,包括:
检测模块,用于对数据包进行路由检测,得到数据包路由方向;
确定模块,用于根据所得到的数据包路由方向,确定数据包是否需要进行IP转换;
IP转换模块,用于当确定数据包需要进行IP转换,则将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的 IP进行转换。
优选地,所述数据包路由方向包括从内网口进入到外网口、从内网口进入到内网口、从外网口进入到内网口以及从外网口进入到外网口。
优选地,所述确定模块包括:
确定单元,用于当所得到的数据包路由方向为从内网口进入到外网口或从外网口进入到内网口时,则确定数据包需要进行IP转换,以及当所得到的数据包路由方向为从内网口进入到内网口或从外网口进入到外网口时,则确定数据包不需要进行IP转换。
优选地,所述IP转换模块包括:
源IP转换单元,用于将从内网口进入到外网口的数据包发送给 SNAT虚拟IP转换设备,使所述SNAT虚拟IP转换设备对数据包的源IP进行转换。
优选地,所述IP转换模块包括:
目的IP转换单元,用于将从外网口进入到内网口的数据包发送给DNAT虚拟IP转换设备,使所述DNAT虚拟IP转换设备对数据包的目的IP进行转换。
根据本发明实施例提供的方案,采用策略路由和虚拟网卡设备结合来实现类Cisco的stateless nat的功能,避免了Linux设备传统的检索ip_conntrack表项或者netfilter部署hook来做nat的缺陷。
附图说明
图1是本发明实施例提供的一种Linux网关代理转换IP的方法流程图;
图2是本发明实施例提供的一种Linux网关代理转换IP的装置示意图;
图3是本发明实施例提供的Linux网关代理转换IP的总体结构及接口示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明实施例提供的一种Linux网关代理转换IP的方法流程图,如图1所示,包括:
步骤S101:Linux网关代理对数据包进行路由检测,得到数据包路由方向;
步骤S102:Linux网关代理根据所得到的数据包路由方向,确定数据包是否需要进行IP转换;
步骤S103:若确定数据包需要进行IP转换,则Linux网关代理将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换。
其中,所述数据包路由方向包括从内网口进入到外网口、从内网口进入到内网口、从外网口进入到内网口以及从外网口进入到外网口。
其中,所述Linux网关代理根据所得到的数据包路由方向,确定数据包是否需要进行IP转换包括:若所得到的数据包路由方向为从内网口进入到外网口或从外网口进入到内网口时,则Linux网关代理确定数据包需要进行IP转换;若所得到的数据包路由方向为从内网口进入到内网口或从外网口进入到外网口时,则Linux网关代理确定数据包不需要进行IP转换。
其中,所述Linux网关代理将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换包括:Linux 网关代理将从内网口进入到外网口的数据包发送给SNAT虚拟IP转换设备,使所述SNAT虚拟IP转换设备对数据包的源IP进行转换;Linux网关代理将从外网口进入到内网口的数据包发送给DNAT虚拟 IP转换设备,使所述DNAT虚拟IP转换设备对数据包的目的IP进行转换。
图2是本发明实施例提供的一种Linux网关代理转换IP的装置示意图,如图2所示,包括:检测模块201,用于对数据包进行路由检测,得到数据包路由方向;确定模块202,用于根据所得到的数据包路由方向,确定数据包是否需要进行IP转换;IP转换模块203,用于当确定数据包需要进行IP转换,则将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换。
其中,所述数据包路由方向包括从内网口进入到外网口、从内网口进入到内网口、从外网口进入到内网口以及从外网口进入到外网口。
其中,所述确定模块202包括:确定单元,用于当所得到的数据包路由方向为从内网口进入到外网口或从外网口进入到内网口时,则确定数据包需要进行IP转换,以及当所得到的数据包路由方向为从内网口进入到内网口或从外网口进入到外网口时,则确定数据包不需要进行IP转换。
其中,所述IP转换模块203包括:源IP转换单元,用于将从内网口进入到外网口的数据包发送给SNAT虚拟IP转换设备,使所述 SNAT虚拟IP转换设备对数据包的源IP进行转换;目的IP转换单元,用于将从外网口进入到内网口的数据包发送给DNAT虚拟IP转换设备,使所述DNAT虚拟IP转换设备对数据包的目的IP进行转换。
图3是本发明实施例提供的Linux网关代理转换IP的总体结构及接口示意图,如图3所示,包括媒介 301、路由模块302以及虚拟设备303。其中,媒介 301包括入向媒介 和出向媒介 ;路由模块302 包括入向路由判断和出向路由判断;虚拟设备303包括SNAT和DNAT。
具体地说,所述媒介301:负责接收数据包和发送数据包,是数据包的承载载体。所述路由模块302:负责对入向数据包和出向数据包进行检测,判断是否需要进入后续虚拟设备303模块进行IP转换,也就是说,负责把需要做NAT的流量导入虚拟设备,通过路由方式来避免对每个数据报文进行匹配来判断是否需要IP转换。所述虚拟设备303:负责对入向数据包进行DST(Destination,目的)IP的转换和对出向数据包进行SRC(Source,源)IP的转换,也就是说,实现双向自动转换,从内口进入的向外发送的数据包导入SNAT设备,做源地址转换,从外口进入到内口的数据包导入DNAT设备,做目的地址转换。
本发明实施例的IP转换核心步骤如下:
步骤一:路由模块根据报文的入向媒介和出向媒介选择不同的路由策略,依靠路由来判断是否需要进行IP转换,然后导入虚拟设备。
步骤二:创建虚拟设备,加载虚拟设备模块创建两个虚拟设备,一个负责DNAT,一个负责SNAT,采用新的发包函数定义,两个虚拟NAT设备共享hash表中保存IP转换条目对(比如:ip1和ip2),在SNAT网卡设备中,将会用对源IP做hash后查表匹配其ip1,取出ip1对应的ip2作为要转换的IP地址,在DNAT网卡设备中,将会用对目的IP做hash后查表匹配其ip2,取出ip2对应的ip1作为要转换的IP地址,实现IP无状态转换。
应用场景举例:
Linux上要实现类似防火墙等专属数据设备的NAT功能,实现私有网络和公用网络的互访的问题,对转发的数据报文IP进行对应的 NAT转换,要求如下:
1、从内网口进入往外发的数据包导入到SNAT虚拟设备进行 SNAT的源IP转换,把192.168.1.1这个源IP转换为200.0.0.1;
2、从外网口进入到内网口的数据包导入到DNAT虚拟设备进行 DNAT的目的IP转换,把200.0.0.1这个目的IP转换为192.168.1.1。
路由模块的配置如下,设置对应的路由策略来匹配需要进行NAT 转换的数据报文:
策略路由规则如下:
ip rule add iif$内网口table snat
ip rule add iif$外网口table dnat
上面两条策略路由导入经过数据报文进入查询特定的路由表,而 rule策略可以基于报文的DST IP、SRC IP、FMWARK等特征来灵活设定
ip route add 0.0.0.0/0 dev snat0 table snat
ip route add 0.0.0.0/0 dev dnat0 table dnat
上面设置路由用于设置把报文导入到虚拟设备进行进一步处理。
虚拟设备的HASH表创建
利用linux的procfs作为用户接口来方便的配置hash表的IP转换条目
echo+192.168.1.1 200.0.0.1>/proc/net/nat
上面的命令执行后,将会对DNAT和SNAT两个虚拟设备共享的hash表中添加一个NAT_ENTRY条目,其中key1为192.168.1.1, key2为200.0.0.1,在SNAT网卡设备中,将会用skb的iph->saddr做 hash后查表匹配其key1,取出key2作为要转换的IP地址,在DNAT 网卡设备中,将会用skb的iph->daddr做hash后查表匹配key2,取出key1作为要转换到的IP地址。
如果想删除一条规则,那么就执行:
echo-192.168.1.1 9.24.100.1>/proc/net/nat
上面的场景依靠路由来做是否要进行NAT的判断,不再需要通过Netfilter模块去匹配每一个数据包了,也不需要折腾低效率的 ip_conntrack,然后通过虚拟设备实现相应的IP地址转换,在NAT的实现基础上,可以继续引申此利用虚拟设备的思路,来构建一套数据包过滤系统,可以同样改造iptables的每个target为创建的虚拟设备, iptable的包过滤策略的每一条matches就是一条路由,该路由的路由项就是将数据包导入对应的虚拟设备,比如要丢弃某些特征报文,那可以利用iptables把这些特征报文导入到特定虚拟设备,然后虚拟设备配置路由黑洞来丢弃这些报文,路由的方式来匹配数据包比 Netfilter的方式高效,因为它使用了hash/trie这类高效的数据结构,而不是像Netfilter那样遍历好几层的链表模型构建一套数据包过滤系统。
根据本发明实施例提供的方案,依靠路由来做是否要进行NAT 的判断,然后通过虚拟设备实现相应的IP地址转换,避免了linux设备传统的检索ip_conntrack表项或者netfilter部署hook来做nat的缺陷。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
Claims (6)
1.一种Linux网关代理转换IP的方法,包括:
Linux网关代理对数据包进行路由检测,得到数据包路由方向,所述数据包路由方向包括从内网口进入到外网口、从内网口进入到内网口、从外网口进入到内网口以及从外网口进入到外网口;
若所得到的数据包路由方向为从内网口进入到外网口或从外网口进入到内网口时,则Linux网关代理确定数据包需要进行IP转换,并将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换;
若所得到的数据包路由方向为从内网口进入到内网口或从外网口进入到外网口时,则Linux网关代理确定数据包不需要进行IP转换。
2.根据权利要求1所述的方法,所述Linux网关代理将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换包括:
Linux网关代理将从内网口进入到外网口的数据包发送给源地址转换SNAT虚拟IP转换设备,使所述SNAT虚拟IP转换设备对数据包的源IP进行转换。
3.根据权利要求1所述的方法,所述Linux网关代理将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换包括:
Linux网关代理将从外网口进入到内网口的数据包发送给目的地址转换DNAT虚拟IP转换设备,使所述DNAT虚拟IP转换设备对数据包的目的IP进行转换。
4.一种Linux网关代理转换IP的装置,包括:
检测模块,用于对数据包进行路由检测,得到数据包路由方向,所述数据包路由方向包括从内网口进入到外网口、从内网口进入到内网口、从外网口进入到内网口以及从外网口进入到外网口;
确定模块,用于若所得到的数据包路由方向为从内网口进入到内网口或从外网口进入到外网口时,则Linux网关代理确定数据包不需要进行IP转换;
IP转换模块,用于若所得到的数据包路由方向为从内网口进入到外网口或从外网口进入到内网口时,则Linux网关代理确定数据包需要进行IP转换,并将需要进行IP转换的数据包送给相应的虚拟IP转换设备,由其对数据包中的IP进行转换。
5.根据权利要求4所述的装置,所述IP转换模块包括:
源IP转换单元,用于将从内网口进入到外网口的数据包发送给源地址转换SNAT虚拟IP转换设备,使所述SNAT虚拟IP转换设备对数据包的源IP进行转换。
6.根据权利要求4所述的装置,所述IP转换模块包括:
目的IP转换单元,用于将从外网口进入到内网口的数据包发送给目的地址转换 DNAT虚拟IP转换设备,使所述DNAT虚拟IP转换设备对数据包的目的IP进行转换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710446305.9A CN109088953B (zh) | 2017-06-14 | 2017-06-14 | 一种Linux网关代理转换IP的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710446305.9A CN109088953B (zh) | 2017-06-14 | 2017-06-14 | 一种Linux网关代理转换IP的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109088953A CN109088953A (zh) | 2018-12-25 |
CN109088953B true CN109088953B (zh) | 2022-02-25 |
Family
ID=64839242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710446305.9A Active CN109088953B (zh) | 2017-06-14 | 2017-06-14 | 一种Linux网关代理转换IP的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109088953B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112383445A (zh) * | 2020-10-27 | 2021-02-19 | 上海市共进通信技术有限公司 | 基于netfilter和netlink实现家庭网关数据访问监控的方法及系统 |
CN116760795B (zh) * | 2023-08-15 | 2023-12-08 | 中移(苏州)软件技术有限公司 | 网络地址转换nat网关设备、报文处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582925A (zh) * | 2009-06-15 | 2009-11-18 | 中兴通讯股份有限公司 | 一种网络地址转换的方法及系统 |
CN101695160A (zh) * | 2009-10-20 | 2010-04-14 | 清华大学 | 基于策略路由的流定向传输方法 |
CN101707569A (zh) * | 2009-12-21 | 2010-05-12 | 杭州华三通信技术有限公司 | Nat业务报文处理的方法及装置 |
CN106797335A (zh) * | 2016-11-29 | 2017-05-31 | 深圳前海达闼云端智能科技有限公司 | 数据传输方法、数据传输装置、电子设备和计算机程序产品 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10296675T5 (de) * | 2001-04-20 | 2004-04-22 | Egenera Inc., Marlboro | Virtuelles Vernetzungssystem und -verfahren in einem Verarbeitungssystem |
CN104205896B (zh) * | 2012-03-23 | 2018-12-28 | 诺基亚技术有限公司 | 有拓扑不准确的源地址的IPv6数据包的自动隧道传输方法 |
US9350668B2 (en) * | 2014-06-03 | 2016-05-24 | The Viki Group, Inc. | Systems and methods for IP sharing across wide area networks |
-
2017
- 2017-06-14 CN CN201710446305.9A patent/CN109088953B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582925A (zh) * | 2009-06-15 | 2009-11-18 | 中兴通讯股份有限公司 | 一种网络地址转换的方法及系统 |
CN101695160A (zh) * | 2009-10-20 | 2010-04-14 | 清华大学 | 基于策略路由的流定向传输方法 |
CN101707569A (zh) * | 2009-12-21 | 2010-05-12 | 杭州华三通信技术有限公司 | Nat业务报文处理的方法及装置 |
CN106797335A (zh) * | 2016-11-29 | 2017-05-31 | 深圳前海达闼云端智能科技有限公司 | 数据传输方法、数据传输装置、电子设备和计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN109088953A (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10701034B2 (en) | Intelligent sorting for N-way secure split tunnel | |
EP3542557B1 (en) | Application based intelligent edge computing in a low power wide area network environment | |
US9338093B2 (en) | Mobile phone docking station VPNs | |
US10050877B2 (en) | Packet forwarding method and apparatus | |
US9967185B1 (en) | Interface for extending service capabilities of a network device | |
US8259571B1 (en) | Handling overlapping IP addresses in multi-tenant architecture | |
US7814228B2 (en) | System and method for using data encapsulation in a virtual network | |
US9596318B2 (en) | Dynamic network device processing using external components | |
WO2016192396A1 (en) | Exchanging application metadata for application context aware service insertion in service function chain | |
US7920548B2 (en) | Intelligent switching for secure and reliable voice-over-IP PBX service | |
US8488466B2 (en) | Systems, methods, and apparatus for detecting a pattern within a data packet and detecting data packets related to a data packet including a detected pattern | |
US8750304B2 (en) | Controlling directional asymmetricity in wide area networks | |
JP2014531880A (ja) | データパケット処理のためのシステムおよび方法 | |
KR20130112863A (ko) | 사설 ipv4 도달가능성으로 ds-라이트 향상 | |
WO2017107814A1 (zh) | 一种传播QoS策略的方法、装置及系统 | |
US20170332439A1 (en) | Extending the range of mesh networks | |
CN102710485B (zh) | 透明代理方法及代理服务器 | |
US20120300631A1 (en) | Method and Apparatus For Providing Access To Public Packet Networks From A Local Environment | |
CN104852855A (zh) | 拥塞控制方法、装置及设备 | |
CN109088953B (zh) | 一种Linux网关代理转换IP的方法及装置 | |
US20150012664A1 (en) | Routing data based on a naming service | |
US20120170581A1 (en) | Policy homomorphic network extension | |
CN102413124A (zh) | 一种实现网络增强隔离区的方法 | |
CN116232972A (zh) | 一种基于业务或内容的代理路由器 | |
US10693673B2 (en) | Method and apparatus for routing data to cellular network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |