文档章节

Linux 实现 NAT

诸葛孔明亮
 诸葛孔明亮
发布于 2016/11/08 16:27
字数 895
阅读 23
收藏 0
点赞 0
评论 0

前言

    NAT:网络地址转换(Network Address Translation),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP封包通过路由器或防火墙时重写來源IP地址或目的IP地址的技术。

    简单来说在数据传输中,经过7层网络结构时,为了实现三次握手,就需要在发送数据的时候告诉目的地你的位置,以便对方可以回复,但是在数据报中只有起点域和目的域,不可能所有的终端都是点对点连接的,这时候就需要一个中转站来传递消息数据,这里只讨论软件来实现 nat,路由器的由于基本不会直接操作,就没查资料了。

 

iptables 实现 NAT

    iptables 作用的 5 条规则链中,有两条是 PREROUTING、POSTROUTING,分别代表的是路由前和路由后,iptables 就是实现 nat 的一种方式。

    检查系统是否开启了 ip 转发功能:

    cat /etc/sysctl.conf| grep 'net.ipv4.ip_forward = 0'

    开启转发功能:

    sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf

    

    在 iptables 中添加 NAT 转换规则:

    iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.1

    上面这条规则会将访问 80 端口的所有请求都转发给 192.168.1.1

    添加数据返回规则:

    iptables -t nat -I POSTROUTING -p tcp --dport 80 -j MASQUERADE

 

    这样请求就会被防火墙修改 ip 地址,而转发出去。

 

rinetd 实现

    阿里云的帮助文档里面提供了一种通过 rinetd 的方法(不过配置说明方面写的容易让人误会,我第一次就没看明白,还也为是注释),看名字就知道这是一款用来实现 nat 的,很简洁配置也方便,毕竟是专门用来做 nat 的。

    官网下载编译安装:

    wget http://www.boutell.com/rinetd/http/rinetd.tar.gz

    tar -xvf rinetd.tar.gz

    cd  rinetd && mkdir /usr/man && make && make install 

    不需要 configure 生成 Makefile。

    配置:

    vim /etc/rinetd.conf

    0.0.0.0  80  192.168.1.1 80

    0.0.0.0 代表源地址,可做限制

    80      请求的端口

    192.168.1.1     转发的目的地址

    80      目的端口

    全网请求在 80 端口的都会被 NAT 到 192.168.1.1 的 80 端口上。

    rinetd -c /etc/rinetd.conf

    启动 rinetd

 

Nginx 实现 NAT

    nginx 并没有围绕着传统的 nat 去实现转换,传统的 nat 只能满足一个 ip 一个端口的转发模式,但是如果有几个 ip 都希望得到同一个端口的转发呢?

    把转发从之前的 3 层和 4 层的 ip 加端口的映射提高到应用层来实现,通过域名的不同来转发至不同的 Ip,术语称为反向代理。

    nginx 是一款很好用的反向代理工具,配置文件向较与 apache 来说更好理解,关于代理还有很多软件,proxy 相关的模块很多。

    配置反向代理

    

    通过域名的不同,nginx 会把请求转发给 192.168.1.1 和 192.168.1.2 两个服务器,这样就实现了一个简单的域名转发功能。

    nginx 的请求都是由反向代理传递给后端服务器的,所有后端服务器获取的访问 ip 地址都是反向代理服务器的,想要获取真实的访问 ip,如果后端服务器也是 nginx ,那么就需要修改后端服务器的 nginx 日志格式:

   

    这样就可以在 access 日志中打印出访问的真实 IP 了。

     

    

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
诸葛孔明亮
粉丝 1
博文 64
码字总数 53931
作品 0
浦东
运维
在NAT模式下,如何让VMWare虚拟机的IP保持不变

采用 NAT 模式后,发现 guest 的 IP 经常变化,网上找到的解决办法如下: 来源:http://www.sudu.cn/info/html/edu/20070101/284852.html 1、VMware网络连接选择的是NAT方式。 2、VMware网络...

mj4738
2013/07/12
0
0
Neutron学习笔记1--基本概念

Neutron学习笔记 基本概念 1.涉及的Linux网络技术 bridge:网桥,Linux中用于表示一个能连接不同网络设备的虚拟设备,Linux中传统实现的网桥类似于一个hub设备,而ovs管理的网桥一般类似交换...

墨痕hz
06/07
0
0
基于嵌入式Linux的SOHO路由器设计

http://tech.fuwuqi.com.cn/networkci/routswitch/2009-08-18/5057244114034.shtml 来源:维库 作者:佚名 发布时间:2009-08-18 13:14:01 发表评论 摘要:针对目前SOHO路由器设计方案难以满...

chulia
2009/09/30
0
0
基于嵌入式Linux的SOHO路由器设计

http://tech.fuwuqi.com.cn/networkci/routswitch/2009-08-18/5057244114034.shtml 来源:维库 作者:佚名 发布时间:2009-08-18 13:14:01 发表评论 摘要:针对目前SOHO路由器设计方案难以满...

chulia
2009/09/30
0
0
关于win7与虚拟机LINUX互通问题

首先,介绍如何在VMWARE中设置LINUX的网络。一般网络选项有Bridged, NAT, host-only几种。本次以我实现的host-only为样本来做详细说明,如下图: 在选择host-only模式之后,打开VMWARE的网络...

Sandy_wu
2013/03/19
0
0
NAT——网络内部计算机的保护伞

NAT(网络地址转换)通过将内部网络的私网IP地址翻译成全球唯一的公网IP地址。使内部网络可以连接到互联网等外部网络上,广泛应用于各种类型的互联网接入方式和各种类型的网络中。 NAT在实际应...

cchenyz
05/19
0
0
虚拟机下的linux联网问题2

netmask ip地址 broadcast 子网掩码 gateway 网关 dns DNS服务器 vmware三种网络连接上网设置: 1.桥接方式(bridge) : 默认使用vmnet0 将虚拟机的ip设置与主机同网段未使用ip,其余与主机相同...

yangcoder
2012/10/03
0
2
如何配置VMware WS目的地址转换

如果主机是windowx NAT中隐藏的端口映射,说明一下环境,利用当然是VMnet8网络连接,在虚拟机中架设linux WEB服务器利用WEB默认80端口,IP为192.168.11.10,真实主机winxp系统有两个IP,内网...

流逝的风
2012/06/03
0
27
大数据教程(1.6):linux网络配置及CRT远程连接

上一章节博主为大家详细介绍vmware虚拟网络的配置方式,本节将带领大家一起来实战NAT虚拟网络模式下的配置并完成CRT远程连接; 首先,贴出linux系统配置网络的文件 一:网络配置 1.首先,设...

em_aaron
07/03
0
0
fedora系统管理之lsmod命令

Preface 最近这几天将自己笔记本操作系统彻底的换成了fedora,这一次决定要彻底的远离windows系统。最早接触linux系统还是大一那会,非常清晰的记得当时最先接触的是ubuntu,刚接触就对linux...

算法与编程之美
2013/05/24
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
今天
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部