zoukankan      html  css  js  c++  java
  • iptables使用

    iptables规则的查看、添加、删除和修改

    1、查看

    iptables -nvL --line-number (这个命令跟/etc/init.d/iptables status 输出差不多)
    • -L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数
    • -n 不对ip地址进行查,加上这个参数显示速度会快很多
    • -v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
    • –line-number 显示规则的序列号,这个参数在删除或修改规则时会用到

    2、添加
    添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部
    例如:
    当前规则:

    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.4          0.0.0.0/0
    

    添加一条规则到尾部:

    [root@test ~]# iptables -A INPUT -s 192.168.1.5 -j DROP
    

    再插入一条规则到第三行:

    [root@test ~]# iptables -I INPUT 3 -s 192.168.1.3 -j DROP
    

    查看:

    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.3          0.0.0.0/0
    4    DROP       all  --  192.168.1.4          0.0.0.0/0
    5    DROP       all  --  192.168.1.5          0.0.0.0/0
    

    可以看到192.168.1.3插入到第三行,而原来的第三行192.168.1.4变成了第四行。

    3、删除
    删除用-D参数

    删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):

    [root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP
    

    有时候有些规则太长,删除时要写一大串,既浪费时间又容易写错,这时我们可以先使用–line-number查看出该条规则的行号,再通过行号删除

    [root@test ~]# iptables -nv --line-number
    iptables v1.4.7: no command specified
    Try `iptables -h' or 'iptables --help' for more information.
    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.3          0.0.0.0/0
    

    删除第二行规则

    [root@test ~]# iptables -D INPUT 2
    

    4、修改
    修改使用-R参数

    将第三行规则改为ACCEPT
    先看下当前规则:

    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    DROP       all  --  192.168.1.5          0.0.0.0/0
    

    修改:

    [root@test ~]# iptables -R INPUT 3 -j ACCEPT
    

    再查看下:

    [root@test ~]# iptables -nL --line-number
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    DROP       all  --  192.168.1.1          0.0.0.0/0
    2    DROP       all  --  192.168.1.2          0.0.0.0/0
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0




    在mysql配置中某些linux系统中防火墙默认是阻止3306端口的,我们要是想访问mysql数据库,我们需要这个端口,命令如下:

    1 /sbin/iptables -I INPUT -p tcp --dport 3036 -j ACCEPT

    我们需要保存我们的操作,命令如下:

    1  /etc/rc.d/init.d/iptables save

    此时我们可以查看端口的状态,命令如下:

    1 /etc/init.d/iptables status

    当然如果你打开其他端口也一样,只需要把这个端口号换乘你需要的端口号即可。

    #关闭防火墙
    /etc/init.d/iptables stop
    service iptables stop # 停止服务
    #查看防火墙信息
    /etc/init.d/iptables status

    #开放端口:8080
    /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
    #重启防火墙以便改动生效:(或者直接重启系统)
    /etc/init.d/iptables restart
    #将更改进行保存
    /etc/rc.d/init.d/iptables save

    另外直接在/etc/sysconfig/iptables中增加一行:
    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT

    #永久关闭防火墙
    chkconfig –level 35 iptables off

     我们可以直接编辑iptables文件 

    文件位置:

    /etc/sysconfig/iptables

     有次遇到这个问题:

    nginx请求php,返回502 bad gateway.

    2016/03/21 16:29:44 [error] 8898#0: *1 connect() failed (113: No route to host) while connecting to upstream, client: 14.120.192.32, server: localhost, request: "GET /phpinfo.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xxx:81" 。

    nginx请求php文件怎么出错了,nginx和php是同一台主机,php-fpm 9000不需要开放,同一台主机localhost请求怎么就报错了呢?

    要把环回打开:

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    先把“回环”打开,以免有不必要的麻烦。

    iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT
    iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT
    在所有网卡上打开ping功能,便于维护和检测。

    参考:http://blog.chinaunix.net/uid-23078678-id-2554520.html

    http://www.cnblogs.com/ccdc/archive/2012/04/24/2468048.html

  • 相关阅读:
    《信息安全系统设计基础》实验一 开发环境的熟悉
    20145205 《信息安全系统设计基础》第9周学习总结
    #20145205《信息安全系统设计基础》第八周学习暨期中总结
    20145205 《信息安全系统设计基础》第7周学习总结
    20145205 《信息安全系统设计基础》第6周学习总结
    20145205 《信息安全系统设计基础》第5周学习总结
    20145205 《信息安全系统设计基础》第3周学习总结
    《信息安全系统设计基础》第一周问题总结
    20145205 《信息安全系统设计基础》第2周学习总结
    20145205 《信息安全系统设计基础》第1周学习总结
  • 原文地址:https://www.cnblogs.com/youxin/p/5195603.html
Copyright © 2011-2022 走看看