1.表 链 规则

iptables nat 指定域名 iptables 放行域名_应用程序

filter表

根据已配置好的规则操作本机的包(INPUT)、转发的包(FORWARD)、本机发出的包(OUTPUT);最终决定是否放行(ACCEPT)、丢弃(DROP)、拒绝(REJECT)、产生告警日志(LOG)。

Nat表:

1)用于做企业路由(zebra)或网关(iptables),共享上网(POSTROUTING)
2 )做内部外部IP地址一对一映射(dmz),通过iptables防火墙映射IP到内部服务器,ftp服务。(PREROUTING)
3)web,单个端口的映射,直接映射80端口(PREROUTING)
这个表定义了三个链(chains),nat功能就相当于网络的acl控制,和网络交换机acl类似

Mangle

主要负责修改数据包中特殊的路由标记,如TTL,TOS,MARK等。
iptables工作的netfilter框架挂载点转发流程

iptables工作的netfilter框架挂载点转发流程

iptables nat 指定域名 iptables 放行域名_NAT_02

  • 1.数据包从网络A经过网卡中断送入内核协议栈,首先进入prerouting挂载点,路由前的操作可加入到此挂载点完成,如图的对目的地址的修改,修改后的地址会跟进修改后的地址会继续进入转发路由查找但是查找路由的目的地址变成了目的NAT后的地
  • 2.经过转发路由查找,如果是发给本机的报文,交给本机的应用程序处理;在具体的应用程序处理之前
    会经过input挂载点,如图你可以进行上本机的报文限制,直接在input挂载点丢弃报文,使其无法到达具体的应用程序。
    2-1.应用程序在处理完成后,根据本机路由表酱数据发出,在本机报文发出前,会经过output挂载点,此处你的策略只针对于本机发出报文有效。如果你想修改本机发出报文的源地址,你需要在此实现。
  • 3.经过转发路由查找,如果是转发的报文,在具体的转发报文之前,你可以通过在forward挂载点操作进行过滤等动作。
  • 4.无论是转发报文还是本机发出的报文,它们最终会经过postrouting挂载点,送到最终物理发包流程;也就是说postrouting是数据包离开本netfilter协议栈的最后一个流程,你可以在这个流程中修改源IP地址。

2. 查看itables 包转发情况

参数“n”的意思是将name转为IP

iptables -vL 
iptables -nvL
iptables -vL -t nat
iptables -nvL -t nat

iptables -nvL -t nat

[root@ip-172-31-25-72 ~]# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 1650 packets, 180K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 15 packets, 900 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 686 packets, 50019 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 599 packets, 53047 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  160 17780 RETURN     all  --  *      *       10.10.10.0/24        172.217.0.0/16      
   12   768 RETURN     all  --  *      *       10.10.10.0/24        216.58.217.46       
    3   192 RETURN     all  --  *      *       10.10.10.0/24        216.58.193.78       
    0     0 RETURN     all  --  *      *       10.10.10.0/24        172.217.14.238      
    2   128 RETURN     all  --  *      *       10.10.10.0/24        172.217.14.206      
    0     0 RETURN     all  --  *      *       10.10.10.0/24        172.217.3.206       
    8   440 RETURN     all  --  *      *       10.10.10.0/24        172.217.3.174       
    2   168 RETURN     all  --  *      *       10.10.10.0/24        172.217.27.142      
    5   360 RETURN     all  --  *      *       10.10.10.0/24        104.244.42.1        
    3   192 RETURN     all  --  *      *       10.10.10.0/24        104.244.42.193      
    2   128 RETURN     all  --  *      *       10.10.10.0/24        216.58.193.78       
   13   832 RETURN     all  --  *      *       10.10.10.0/24        172.217.14.238      
   32  2068 RETURN     all  --  *      *       10.10.10.0/24        172.217.14.206      
   10   604 RETURN     all  --  *      *       10.10.10.0/24        172.217.3.174       
   23  1472 RETURN     all  --  *      *       10.10.10.0/24        216.58.217.46       
    3   252 RETURN     all  --  *      *       10.10.10.0/24        172.217.160.78      
32026 2063K MASQUERADE  all  --  *      ens5    10.10.10.0/24        0.0.0.0/0

3.NAT

3.1 拒绝NAT包

iptables -t nat -I POSTROUTING -s 10.10.10.0/24 -d youtube-ui.l.google.com -j RETURN

3.2 NAT转发

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o ens5 -j MASQUERADE

4. 清除默认规则

iptables -F //清除所有规则,不会处理默认的规则
iptables -X //删除用户自定义的链
ipables -Z //链的计数器清零

5.Filter

iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
iptables -nL

删除policy的方法

iptables -nL --line-number
iptables -D INPUT 1

全部清空

iptables -F

-t 指定表
-A 添加规则
-p 协议
–dport 目的端口
-j jump 处理的行为(ACCEPT),DROP, REJECT

-i 插入第一条
-A 插入最后一条

#插入再第2条的前面,这台规则变成了第2条
iptables -I INPUT 2 -p tcp --dport 10000 -j DROP

基于源地址网段控制

iptables -t filter -A INPUT -s 10.10.0.0/24 -j DROP   (该网段DROP)
iptables -t filter -A INPUT !-s 10.10.0.0/24 -j DROP  (非内网网段DROP)

基于网卡控制

iptables -t filter -A INPUT -i eth0 -s 10.10.0.0/24 -j DROP   (该网段DROP)
iptables -t filter -A INPUT  -p tcp --dport 52113 -i eth0 !-s 10.10.0.0/24 -j DROP  (非内网网段DROP)

基于端口

iptables -t filter -A INPUT  -p tcp --dport 52113 -j DROP  
iptables -t filter -A INPUT  -p tcp --sport 52113 -j DROP

基于端口范围

iptables -t filter -A INPUT  -p tcp --dport 50000:60000 -j DROP  
iptables -t filter -A INPUT  -p tcp -m multiport -p tcp --dport 21,22,80,443 -j DROP

-i 匹配进入的网卡接口
-o 匹配出去的网卡接口

匹配网络状态

连接状态 
-m state  --state
NEW: 已经或将启动新的连接
ESTABLISHED:已经建立的连接
RELATED:正在启动的新连接
INVALID:  非法或者无法识别的


#允许关联的状态包(如ftp 21连接,20传数据)
iptables -A INPUT -m state --state  ESTABLISED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state  ESTABLISED,RELATED -j ACCEPT

#限速
-m limit --limit n/{second/minute/hour}:

–limit-burst [n]:

-P 改变默认规则

比如default规则

查看匹配包的数量

iptables -nvL
[root@wwww ~]# iptables -nvL

pkts bytes target prot opt in out source destination

27(包的数量) 1368(包的大小) REJECT(拒绝) tcp(指定tcp) – * * 192.168.0.105(来源ip) 0.0.0.0/0 (目标ip) tcp dpt:80(到80端口) reject(最终的行为为拒绝)-with icmp-port-unreachable

DROP(扔掉连管都不管) REJECT(杰克)(拿包过来看一下再拒绝) ACCEPT(饿多涉)(接受)

如果前面匹配到了,后面的匹配的就不管了。

越往上的规则越先生效。

[root@wwww ~]# iptables -Z //清除访问数据

[root@wwww ~]# iptables -nvL //都变0了

保存配置文件
1.iptables save

2.iptables-save > /etc/sysconfig/iptables