linux系统之iptables其三NAT的用法

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

温馨提示:

在之前己经介绍过iptables的原理及其基本命令的注解与用法,下面将介绍NAT技术。

前言:

从根本上来说,NAT就是允许一台或者多台机器共享一个公网IP地址;第一种情况,以内网为例,把这些机器的默认网关设置为 NAT服务器后,这样所有的报文都会通过网关发送出去(SNAT),还有一种情况,如果我们内网有多个对外网的服务器,基于节约IP地址资源的考虑也可以使用的NAT技术,将内网中的多个服务器给外网用户提供服务(DNAT).

一、NAT之SNAT

NAT服务器能够改变报文的源和目的地址成另外一个不同的地址。NAT 服务器接收到一个报文,接着就改写它的源/目的地址,其次在重新计算这个报文的校验和。其中很重要的一个用途就是源地址NAT(SNAT),源地址NAT其实就是解决只有一个公网 IP,但是有多台计机器需要上网,这样我们就打开SNAT功能,这样内网中多台计算机就能够共享这一个公网IP 地址上网了。(如图,下图如引起您的各种不适,与本人无关)

wKioL1M3-YqSetzMAAOm-cmMAmo312.jpg

注:另外一个 SNAT 就是伪装(Masquerade),它主要应用于动态地址分配的场合,对于MASQUERADE它会自动用出接口上面的地址作为报文新地址。

上图注解

源地址 192.168.1.20
目标地址 www.essun.org
规则

#echo 1 >/proc/sys/net/ipv4/ip_forward(临时启用转发)

#sysctl -p

#iptables -t nat -I POSTROUTING -s 192.168.1.0/24 --dport 80 -j SNAT --to-source 202.106.32.132

注:

如果是动态获取公网IP,可使用(Masquerade)

#iptables -t nat -I POSTROUTING -s 192.168.1.0/24 --dport 80 -o eth1 -j MASQUERADE

二、NAT之DNAT

DNAT 在我们假设自己的服务器时候特别有用。首先它能够帮助我们节约 IP 地址(多台服务器共享一个IP),其次在 NAT 服务器和实际的服务器之间相当于增加了一个防护体系,增强了服务器的安全系数。例如一些公司可能对外网运行 web 和 ftp 服务器,他们可能在同一台机器上面,也有可能是物理上分开的机器,这样就可以借助DNAT,通过同一个IP提供上述的所有服务。(如图)

wKioL1M4K5aDVuiZAAPQzqfQlJA295.jpg


上图注解

目地地址 202.106.32.132
源地址 6.6.6.6
规则

#echo 1 >/proc/sys/net/ipv4/ip_forward(临时启用转发)

#sysctl -p

#iptables -t nat -A PREROUTING -d 202.106.32.132 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.20:80


=======================================完=========================================










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1389294,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
网络协议 Linux 网络架构
Linux三种网络模式 | 仅主机、桥接、NAT
Linux三种网络模式 | 仅主机、桥接、NAT
164 0
|
30天前
|
缓存 Ubuntu 网络协议
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
20 1
|
30天前
|
Linux
Linux系统编程之exec函数簇的使用:剖析exec函数簇的实现原理、参数解释和用法技巧
Linux系统编程之exec函数簇的使用:剖析exec函数簇的实现原理、参数解释和用法技巧
36 0
|
30天前
|
存储 Linux
Linux系统编程之Linux 信号集编程:信号集的基本概念、用法和实现方式
Linux系统编程之Linux 信号集编程:信号集的基本概念、用法和实现方式
12 0
|
30天前
|
Linux C语言
Linux系统编程之 Linux信号的编程:信号的基本概念、用法和实现方式
Linux系统编程之 Linux信号的编程:信号的基本概念、用法和实现方式
15 0
|
1月前
|
Linux
linux系统中select函数的用法实现
linux系统中select函数的用法实现
17 0
|
2月前
|
存储 Shell Linux
Linux的shell命令——变量用法
Linux的shell命令——变量用法
32 0
|
3月前
|
Shell Linux 机器学习/深度学习
Linux 终端操作命令(3)内部命令用法
Linux 终端操作命令(3)内部命令用法
47 0
Linux 终端操作命令(3)内部命令用法
|
3月前
|
Java Linux Shell
linux下${}、$()、$[]、$(())、[]、[[]]、(())的作用及用法说明
linux下${}、$()、$[]、$(())、[]、[[]]、(())的作用及用法说明
19 1
|
3月前
|
Linux Perl
【linux】awk用法:在每行新增额外字符串
【linux】awk用法:在每行新增额外字符串
30 0