zoukankan      html  css  js  c++  java
  • iptables动作总结

    ACCEPT动作:

    将数据包放行,进行完此处理动作后,将不再比对当前链的其它规则,直接跳往下一个规则链。

    范例如下:

    #新增自定义链TEST_ACCEPT
    iptables -t filter -N TEST_ACCEPT
    #新增自定义链TEST_ACCEPT2
    iptables -t filter -N TEST_ACCEPT2
    #在INPUT链中引用TEST_ACCEPT,在TEST_ACCEPT链中引用TEST_ACCEPT2
    iptables -t filter -I INPUT -j TEST_ACCEPT
    iptables -t filter -I TEST_ACCEPT -j TEST_ACCEPT2
    #在TEST_ACCEPT2增加如下规则
    iptables -t filter -A TEST_ACCEPT2 -d 192.168.249.149 -p tcp -m tcp --dport 30180 -j ACCEPT
    #在TEST_ACCEPT增加如下规则
    iptables -t filter -A TEST_ACCEPT -d 192.168.249.149 -p tcp -m tcp --dport 30180 -j REJECT
    

     测试:未加上面规则前,http://192.168.249.149:30180服务能够正常访问,加上上面规则后经测试还是能正常访问,效果入下图所示:

    总结:这就说明自定义链TEST_ACCEPT2匹配规则 192.168.249.149 -p tcp -m tcp --dport 30180后执行ACCEPT动作,执行完ACCET动作后将不再比对当前链的(INPUT->TEST_ACCEPT->TEST_ACCEPT2)其它规则,直接跳往下一个规则链,TEST_ACCEPT链的第二条规则没机会匹配。  

    REJECT动作:

    拦阻该数据包,并传送数据包通知对方,可以传送的数据包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(这个数据包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。

    范例如下:

    iptables -t filter -I INPUT -d 192.168.249.149 -p tcp -m tcp --dport 30180 -j REJECT

     测试:

    DROP动作:

    丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。

    范例如下:

    iptables -t filter -I INPUT -d 192.168.249.149 -p tcp -m tcp --dport 30180 -j DROP
    

     测试:

     总结:

    DROP表示丢弃,REJECT表示拒绝,REJECT和DROP动作效果类似,只不过REJECT拦阻该数据包后会传送数据包通知对方,REJECT表达的意思好像更坚决一点。

    REDIRECT动作:

    将包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。 这个功能可以用来实作通透式porxy 或用来保护 web 服务器。例如:

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

    MASQUERADE动作:

    改写数据包来源 IP为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则链(和ACCEPT动作一致)。这个功能与 SNAT 略有不同,当进行 IP 伪装时,不需指定要伪装成哪个 IP,IP 会从网卡直接读取,当使用拨号连接时,IP 通常是由 ISP 公司的 DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。范例如下:linux基础

    iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000 

    总结:使用MASQUERADE动作可以不指定网卡,它可以自动根据目标地址选择出口网卡地址作为伪装的源地址,另外,使用MASQUERADE动作和ACCEPT、SNAT、DNAT动作的效果一致,都是进行完此处理动作后,直接跳往下一个规则链。

    参考:https://serverfault.com/questions/869751/how-does-masquerade-choose-an-ip-address-if-there-are-multiple

    另外可以使用ip route get <dst>命令来确定伪装后将用作源地址的地址。

    SNAT动作 

    改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则链。范例如下:

    iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000

    DNAT动作 

    改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规链。范例如下:

    iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination
    192.168.1.1-192.168.1.10:80-100

    测试:自定义链C匹配规则后执行DNAT动作,执行完DNAT动作后将不再比对当前链的(A->B->C)其它规则,直接跳往下一个规则链,B链的第二条规则没机会匹配。  

    RETURN动作

    结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自定义规则链看成是一个子程序,那么这个动作,就相当提早结束子程序并返回到主程序中。

    测试:TEST_ACCEPT链第一条规则匹配后,将返回后INPUT链继续执行INPUT链剩下未比对的规则,即INPUT链的第2条规则到第四条规则直到匹配规则成功执行对应动作。 

    MARK动作

    将数据包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。范例如下:

    iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2

    LOG动作

    将封包相关讯息纪录在 /var/log 中,详细位置请查阅 /etc/syslog.conf 配置文件,进行完此处理动作后,将会继续比对其规则。例如:

    iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"

    MIRROR动作

    镜像数据包,也就是将来源 IP 与目的地 IP 对调后,将数据包送回,进行完此处理动作后,将会中断过滤程序。

    QUEUE动作

    中断过滤程序,将数据包放入队列,交给其它程序处理。透过自行开发的处理程序,可以进行其它应用,例如:计算联机费.......等。 

  • 相关阅读:
    从一个网页上摘取想要的元素
    Oracle数据库迁移
    java 内部类
    关于robot framework 环境搭建的几点注意
    robotframework 页面已经locate到元素 但是操作提示element is no longer valid!
    转 PyQt学习资料
    Java 大数值
    【转】Excel 使用技巧
    Java调用WebService
    String StringBuffer StringBuider
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/15655301.html
Copyright © 2011-2022 走看看