iptables简单了解

Posted lfdblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables简单了解相关的知识,希望对你有一定的参考价值。

简介

  Iptables是unix/linux自带的一款优秀且开源的基于包过滤的防火墙工具。

怎么用

  可以用来做主机防火墙。

  可以做局域网共享上网。

  可以做ip及端口映射。

Iptables工作流程

  iptables分为4表5链

  表:

    filter:INPUT,OUTPUT,FORWARD

    NAT:POSTROUTING,PREROUTING,OUTPUT

    mangle:INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING

    raw:PREROUTING,OUTPUT

  链:

    INPUT:进入主机的数据包。

    OUTPUT: 流出主机的数据包。

    FORWARD: 流经主机的数据包。

    PREROUTING: 进入服务器最先经过的链,用来做NAT端口或ip映射

    POSTROUTING: 流出服务器最后经过的链,NAT共享上网。 局域网共享上网。

 4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。

          filter:一般的过滤功能

          nat:用于nat功能(端口映射,地址映射等)

          mangle:用于对特定数据包的修改

          raw:优限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能

     RAW 表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链 上,RAW表处理完后,将跳过NAT表和 ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.

         RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。

 

技术图片

iptables命令

[[email protected] ~]# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT  #添加filter表,开放21端口  

[[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE     #添加nat表,将源地址是 192.168.10.0/24 的数据包进行地址伪装

[[email protected] ~]# iptables -I INPUT 3 -p tcp -m tcp --dport 20 -j ACCEPT  #添加filter表,开放20端口,并且插入到指定位置

[[email protected] ~]# iptables -L -n --line-number   
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    DROP       icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 8
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:20                #-I指定位置插的
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
7    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID,NEW
8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21                #-A默认插到最后

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination


[[email protected] ~]# iptables -L -n --line-number |grep 21    #查看filter表,--line-number可以显示规则序号,在删除的时候比较方便

[[email protected] ~]# iptables -t nat -vnL POSTROUTING --line-number    #查看nat表
Chain POSTROUTING (policy ACCEPT 38 packets, 2297 bytes)  
num   pkts bytes target     prot opt in     out     source               destination  
1        0     0 MASQUERADE  all  --  *      *       192.168.10.0/24      0.0.0.0/0  

[[email protected] ~]# iptables -R INPUT 3 -j DROP    #将规则3改成DROP  

[[email protected] ~]# iptables -D INPUT 3  #删除input的第3条规则

[[email protected] ~]# iptables -t nat -D POSTROUTING 1  #删除nat表中postrouting的第一条规则

[[email protected] ~]# iptables -F INPUT   #清空 filter表INPUT所有规则

[[email protected] ~]# iptables -F    #清空所有规则

[[email protected] ~]# iptables -t nat -F POSTROUTING   #清空nat表POSTROUTING所有规则

[[email protected] ~]# iptables -P INPUT DROP  #设置filter表INPUT默认规则是 DROP  

把所有通过eth0这个网卡发往地址122.225.97.111的包都转发到局域网的中192.168.1.130这台机器上.它也可以配全--string功能更强大
[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp--dst 122.225.97.111 --dport 80 -j DNAT --to-destination 192.168.1.130:80

将匹配到img.51yip.com的请求转到局域网的192.168.1.136这台机器上
[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80-m string --string "img.51yip.com" --algo bm -j DNAT --to-destination 192.168.1.136:80

snat可以让本地ip地址伪装成其他机器的ip地址,或者是公网IP,假如我有三台机器,一台能上外网,另外二台却不可以.不能上网的机器可以伪装成可上网的那机器的IP
[[email protected] ~]# iptables -t nat -I POSTROUTING 1 -j SNAT -s 192.168.10.0/24 --to-destination 192.168.1.108

 

以上是关于iptables简单了解的主要内容,如果未能解决你的问题,请参考以下文章

linux下的防火墙Netfilter配置:iptables的了解与使用(详细)

iptables 深度详解

解析iptables原里及设置规则

firewalld的简单用法及了解

Apollo Codegen 没有找到生成代码的操作或片段

IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙