iptables是管理netfilter的唯一工具;(netfilter是网络过滤器,或者网页内容过滤器),netfiletr直接嵌套在linux的内核上面。netfilter在内核中过滤,没有守护进程。它的过滤速度非常快,因为只读取数据包头,不会给信息流量增加负担,也无需进行验证。

        netfiletr提供一系列的表(tables),每个表有若干个链组成,每条链可以有若干个规则(rules)组成。可以简单的说:netfilter是表的容器,表是链的容器,链是规则的容器。

       表分为3个分别为:filter表  ,  nat表 ,    mangle表;

       filter表包含INPUT链,FORWARD链,OUTPUT链;

       nat表包含INPUT链,OUTPUT链,PREROUTING链,POSTROUTING链;

      mangle表包含INPUT链,OUTPUT链,PREROUTING链,POSTROUTING链 ,INPUT链,OUTPUT链,PREROUTING链,POSTROUTING链;

       注意:filter表主要执行数据包过滤;nat表主要进行网络地址转换;mangle表用于修改一些特殊规则;

PREROUTING链:路由之前刚达到的数据包;     INPUT链:通过路由,目的地为本机的数据包;   FORWARD链:需要通过本地系统进行转发的数据包;    OUTPUT链:由本机产生,向外转发,处于postrouting之前的数据包;    POSTROUTING链 :通过路由后,即将离开系统的数据包;

IPtables的基本语法:

   1.iptables的服务

关闭防火墙服务,冻结防火墙服务;


开启iptables服务,设置开机自启;


vim /etc/sysconfig/iptables   ####编辑iptables文件进行设置;保存iptables设置,对iptables规则编辑后一定要保存;


保存设置以后需要重新启动否则相关设置不会生效;


2,iptables的基本命令

   iptables 有三张表,-t  参数来设置是哪张表生效,如果没有参数,系统默认对filter表进行操作;

   iptables  -L    #####显示filter表中的规则,后面需要指定表,否则默认为filter表;


  iptables -t  nat   -L    ####显示nat表的所有规则;


   iptables   -F    #####删除默认filter表的所有规则;

 #####删除全部链的规则;

   iptables   -t   nat   -F   #####删除nat表的所有规则;


####为了方便我们在nat表里面添加了一条规则;


    iptables   -t nat  -F    PSOTROUTING   ####删除nat表中PSOTROUTING链的所有规则;

   iptables   -t nat  -F    PSOTROUTING  2   ####删除nat表中PSOTROUTING链的第二条规则;

注意:有时我们进行添加或者删除,不一定会立刻生效,我们需要保存service  iptables save  保存设置来生效;

 -A    ####在规则列表的最后增加1条规则

iptables  -A   INPUT   -s   192.168.88.132   -j     DROP

####丢弃来自192.168.88.132的数据包,默认为filter表;


注意:保存设置重新启动服务,该条规则在所有规则后面,则iptables的匹配是由顺序的;

-I     (注意是大写的i)   ######在指定位置插入一条规则;

-P     分配链接策略;P 是大写的;

iptables   -P   INPUT  DROP     #### 禁止任何输入的数据包;

iptables    -P   OUTPUT  ACCEPT   ####允许所有输出的数据包;

-D    删除某条规则;

iptables   -t  nat    -D   OUTPUT  2  ####删除nat 表里OUTPUT链的第二条规则;


-R     ######替换规则列表中的某条规则

iptables -R INPUT 1 -s 192.168.88.129 -p tcp --dport 80 -j ACCEPT  

####替换filter表INPUT链里面的第二条规则为允许192.168.88.129客户端通过80端口进行访问;


3.iptables匹配选项

-i    ####指定数据包从哪个网络接口进入

-o     ######指定数据包从哪个网络接口输出

-p     #####指定数据包的匹配协议

-s     ####指定数据包的匹配源地址

--sport<源端口号>   ####指定数据包匹配的源端口号;

-d  <目标地址或者子网>   ####指定数据包的匹配目标地址;

--dport目标端口号     ####指定数据包匹配的目标端口号;


iptables  -A  INPUT  -p  tcp  -s   192.168.88.132/24  -dport 22    -j    ACCEPT

-p  protocol      ######匹配网络协议,我们匹配的是tcp协议;

-s   IP地址或者网段   ######匹配源ip地址或者网段;

! -s  ip地址或者网段     ######除了这个ip地址或者网段的所有网段;

-j    ACCESPT/DROP/REJECT      #####后面添加执行的动作,接受,丢弃,拒绝;

####允许192.168.88.132的主机通过22端口访问该主机;

iptables   -A INPUT -p  tcp  --dport   20:21   -j    ACCEPT   ####开放ftp的20和21端口

iptables  -A   INPUT   -p  tcp   --dport   80   -j   ACCEPT    #####开放http服务的80端口;

iptables  -A   INPUT   -p  tcp   --dport   22   -j   ACCEPT    #####开放ssh服务的80端口

        NAT(netwoek address translation)网络地址转换器 是将一个地址域映射到另外一个地址域的标准方法。他是根据rfc1631开发的IETE标准,允许一个ip地址以一个公有的ip地址出现在网络上。nat可以将内部网络的所有节点的地址转换成一个ip地址。

     目的地 NAT(DNAT):DNAT修改包的目的地位置,必须在包即将被送到本机行程之前,或是要被转送其它电脑之前;所以,使用DNAT为目标的规则,必须设置于nat表格的PREROUTING链结。
      源NAT(SNAT):SNAT必须在封包即将离开核心的前一刻,即时修改其来源位址(或通讯端口),所以SNAT规则的设置地点必须是在nat表格的POSTROUTING链结。

设置iptables FORWARE规则

开启转发功能:编辑/etc/sysctl.conf文件

net.ipv4.ip_forward = 1      #####开启内核的转发功能;

sysctl -p    #####使得上面参数生效;

NAT转发功能

1. 在虚拟主机里面添加一块网卡设置两个不同的网段,例如:192.168.88.132和192.168.66.132


2.打开nat的转发功能;



   ####查看转发功能打开没有;

sysctl -p    ####也可以查询转发功能打开没有

3.服务端添加地址转换

 iptables -t nat -A PREROUTING  -i  eno16777736 -j DNAT --to-dest 192.168.66.132

iptables -t nat -A POSTROUTING -o eno16777736 -j SNAT --to-source 192.168.88.132


4.客户端测试;



####登录时显示地址已经转换;




















Logo

更多推荐