iptables基本操作

引言

从Cent7以后,iptables服务的启动脚本已被忽略。请使用firewalld来取代iptables服务。

在RHEL7里,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables。
firewalld是iptables的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面。

firewalld 与 iptables的比较:

  • firewalld可以动态修改单条规则,动态管理规则集,允许更新规则而不破坏现有会话和连接。而iptables,在修改了规则后必须得全部刷新才可以生效;
  • firewalld使用区域和服务而不是链式规则;
  • firewalld默认是拒绝的,需要设置以后才能放行。而iptables默认是允许的,需要拒绝的才去限制;
  • firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。也就是说,firewalld和iptables一样,它们的作用都用于维护规则,而真正使用规则干活的是内核的netfilter。只不过firewalld和iptables的结果以及使用方法不一样!

firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。它并不是iptables的替代品,虽然iptables命令仍可用于firewalld,但建议firewalld时仅使用firewalld命令。

安装

  1. 关闭 firewalld
    systemctr disable firewalld
    systemctl stop firewalld

  2. 安装 iptalbes
    yum install iptables iptables-services

  3. 启用 iptables
    systemctl enable iptables
    systemctl start iptables

  4. 备份 iptables
    cp /etc/sysconfig/iptables /etc/sysconfig/iptables-backup

相关实例

  1. 查看当前规则
    iptables -L -n -v --line-number

  2. 开启 80 端口
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

  3. 对指定网段开启80端口
    iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT

  4. 删除某条规则
    iptables -D INPUT 1
    iptables -D FORWARD 1

  5. 指定某段ip地址
    先禁用80端口所有访问权, 在开启指定ip段的80端口访问权
    iptables -I INPUT -p tcp --dport 80 -j DROP
    iptables - I INPUT -m iprange --src-range 192.168.1.200-192.168.1-210 -p tcp --dport 80 -j ACCEPT

  6. 保存更改
    记得在centos6 的时候 只需要 iptables-save即可
    但是在centos7 需要 iptables-save > /etc/sysconfig/iptables
    然后重启iptables systemctl restart iptables

暂时更新到这….
2022/2/17

  1. nat转发

192.168.1.7:7410 —> 192.168.1.160:9200
iptables -t nat -A PREROUTING -d 192.168.1.7/32 -p tcp --dport 7410 -j DNAT --to-destination 192.168.1.160:9200
iptables -t nat -A POSTROUTING -d 192.168.1.160/32 -p tcp --dport 9200 -j SNAT --to-source 192.168.1.7

  1. 删除nat中的规则
    iptables -t nat -D POSTROUTING 6
    iptables -t nat -D PREROUTING 1

  2. 显示行号和详细内容(方便删除某条规则)
    iptables -nvL --line-number

  3. 重置所有规则
    使用这些命令刷新和重置 iptables 到默认状态:

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
iptables -t security -F
iptables -t security -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
没有任何参数的 -F 命令在当前表中刷新所有链。同样的, -X 命令删除表中所有非默认链。