网站地图    收藏   

主页 > 系统 > linux系统 >

iptables知识小结 - Linux操作系统:Ubuntu_Centos_Debi

来源:自学PHP网    时间:2015-04-14 11:12 作者: 阅读:

[导读] iptables知识小结最近工作上一个作业用到了iptables命令,主要进行端口映射,在网上查了好多资料,尽管有很多例子,但还是整了好几天才整明白。在这里将学习到的知识总结一下。以下...

iptables知识小结
 
 最近工作上一个作业用到了iptables命令,主要进行端口映射,在网上查了好多资料,尽管有很多例子,但还是整了好几天才整明白。在这里将学习到的知识总结一下。以下均属个人见解。(有一些是从网络中总结的,不断完善中...)
 
 一、基本知识
 
(1) iptables简介
 
           iptables是一个Linux下优秀的nat+防火墙工具,iptables操作的是2.4以上内核的netfilter,所以需要linux的内核在2.4以上。其功能性与安全性远远比其前辈ipforward、ipchains强大,iptables大致是工作在OSI七层的二、三、四层。
 
          首先简单介绍一下netfilter的大致工作流程,也就是一个数据包(或者分组,packet),在到达linux的网络接口(网卡)的时候,如何处理这个包。然后再介绍一下如何利用iptables改变或控制这个数据包。
 
         netfilter的内部有三个表吗,分别是filter、nat和mangle。每个表有不同的操作链(Chain)。
 
         filter表中,即起防火墙功能的表,定义了三个Chain,分别是INPUT、FORWARD、OUTPUT(即对包的进入、转发和出进行定义的三个链),对这个filter表的操作是实现防火墙功能的一个重要手段。
 
        nat表(Network Address Translation网络地址翻译),定义了PREROUTING、POSTROUTING、OUTPUT三个链,主要用于实现地址转换和端口转发。
 
        mangle表,是一个自定义表,包括上述的filter和nat表中的各种chains,它可以让我们进行一些自定义的操作。mangle表中的chains存在netfilter对包的处理流程中处于一个比较优先的位置(对此表的了解不多,一般情况我们用不到这个mangle表,在此不做介绍)。
 
        下述图清晰的描绘了netfilter对包的处理流程
                                                   
 
(2)基本操作
 
 ①iptables命令启动、停止、重启、保存:
 
  #/etc/init.d/iptables start
 
 #service iptables start
 
 #/etc/init.d/iptables stop
 
 #/etc/init.d/iptables restart
 
 #service iptables restart
 
 #/etc/init.d/iptables save
 
二、应用
 
(1)端口映射
 
 前提:一台Linux双网卡计算机IP:192.168.1.2、202.201.1.2,内网有一个Web服务器192.168.1.6
 
 要求:在外网的浏览器输入202.201.1.2:8000访问到192.168.1.6的80Web服务端口
 
详细配置:
 
注意:在此之前要打开端口转发服务
 
/etc/sysctl.conf配置文件的  net.ipv4.ip_forward = 1 默认是0
 
可以获得root权限修正,也可以用如下命令:
 
echo "1" > /etc/sysctl.conf/net.ipv4.ip_forward
 
①清除原有规则
 
#iptables -F -t nat
 
#iptables -F -t filter
 
#/etc/init.d/iptables save
 
②配置映射规则
 
#iptables -t nat -A PREROUTING -d 202.201.1.2 -t tcp  --dport 8000 -t tcp -j DNAT -to--destination 192.168.1.6:80
 
#iptables -t nat -A POSTROUTING -d 192.168.1.6 -p tcp --dport 80 -j SNAT -- to 192.168.1.2
 
#iptables -A FORWARD -o eth0 -d 192.168.1.6 -p tcp --dport 80 -j ACCEPT
 
#iptables -A FORWARD -i eth0 -s192.168.1.6 -p tcp --dport 80 -j ACCEPT
 
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
 
③保存,启动服务
 
 #/etc/init.d/iptables save
 
 #service iptables restart
注:在/proc/net/ip_conntrack文件里有包的流向
 
(2)IP映射
 
前提:Linux先在一个网卡上追加一个IP地址,Linux上的一个网卡可以有多个IP地址。
 
  LINUX双网卡,IP分别为eth0:192.168.1.2/24、eth1:192.168.2.2/24
 
要求:将IP:192.168.2.5映射到LINUX上的192.168.1.2上
 
①追加linux的eth0一个网址
 
#ip address add 1.1.1.1/30 brd + dev eth0
 
②iptables配置
 
#iptables -A FORWARD -s 192.168.12.95 -j ACCEPT
 
#iptables -A FORWARD -d 192.168.12.95 -j ACCEPT
 
#iptables -t nat -A PREROUTING -d 202.201.1.2 -j DNAT -to--destination 192.168.1.6
 
#iptables -t nat -A POSTROUTING -d 192.168.1.6 -j SNAT -- to -source 192.168.1.2
 
#/etc/init.d/iptables save
 
 #service iptables restart

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论