iptables——实战NAT(端口转发)

1、NAT(端口转发)是什么

数据包都是有原地址和目标地址的,NAT就是要对数据包的原地址或者 目标地址(也可以修改端口的)进行修改的技术。为什么我们要修改ip地址呢?是这样的互联网中只能传送公网地址的数据包,私有地址的数据包是无法传送的。这样你想下,你每天在wifi环境下看视频浏览网站的时候你的ip是什么(私有地址,你手机、pad、电脑发出来的所有数据包原地址都是私有地址。怎么在互联网上传送)。为了能让你的数据包在能在互联网上传送,必须给你一个公网ip才行。所以当你上互联网的时候,路由器会帮你把所有的数据包的原地址转换成它的wlan口的ip地址(这个就是公网ip,一般就是ADSL拨号获取的ip)。这个转换的技术就是NAT。当你所访问的服务器给你回应数据包时,路由器会把所有数据包目标地址,由它的wlan口的ip地址,改回你内网的ip地址。这样你才能上互联网。所以你每天都在使用NAT技术。

 

我们利用NAT可以做很多事情:

1>、比如我们可以用一台计算机当做路由器,从而控制或者监控公司所有内网的用户上互联网,对他们访问的网站都可以进行控制(比如不允许上淘宝、不允许上京东防止这帮败家老娘们上班时候瞎逛)。 

2>、假设我们有一个固定的公网ip,你就可以控制外部用户访问你的内网服务器。控制他们的行为(比如你们公司有wed服务器,这样你可以控制客户的行为)。

 

 

 

2、语法和端口转发规则实例

DNAT : 目标地址转换

SNAT:原地址转换

 

-j SNAT

     --to-source

 

-j  MASQUERADE  #等价于 -j  SNAT  --to-source   一起写。这个语法主要用在ADSL获取到的ip时(因为ip地址不确定,这个就是自动把原地址转换为你ADSL获取到的地址的)。注意这个规则最好不要用,速度很慢的。

 

-j DNAT

     --to-destination

 

例子:

 2.1、       echo  1 > /proc/sys/net/ipv4/ip_forward  ##开启端口转发功能,临时生效。   

            永久生效: vim /etc/sysctl.conf   ##修改net.ipv4.ip_forward = 1

                                sysctl  -p   ##生效配置文件。

 

 2.2、规则书写例子:

 

         iptables -t nat  -A PREROUTING  -d   172.168.100.7 -p tcp --dport 80  -j  DNAT --to-destination 192.168.100.9

         iptables -t nat  -A POSTROUTING   -d 192.168.100.9 -p tcp --dport 80 -j  SNAT --to-source  172.168.100.7     ##两行蓝色的规则效果一样

         iptables -t nat  -A POSTROUTING   -d 192.168.100.9 -p tcp --dport 80 -j  MASQUERADE   

 

 

 


 

 

 

 

3、实用抓包命令:  tcpdump  -i eth0  -nn -X tcp   ##抓tcp的报文

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

展开阅读全文

没有更多推荐了,返回首页