iptables使用详解

1. 安装iptables

#检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#安装iptables-services
yum install iptables-services

使用了iptables之后,记得把系统自带得firewalld给禁用掉

# 停止firewalld服务
systemctl stop firewalld
# 禁用firewalld服务
systemctl mask firewalld

1.1 规则

iptables会包含多个Rules(一个条件和一个目标值)
如果满足条件,就执行规则中得目标值。
如果不满足条件,就判断下一条Rules。

目标值

iptables支持下列目标值

  • ACCEPT – 允许数据包
  • DROP – 丢弃包
  • QUEUE – 数据包移交到用户空间
  • RETURN – 停止执行当前链中的后续Rules

1.2 规则表

规则表之间的优先顺序:Raw—>mangle—>nat—>filter

  • filter表,三个链:INPUT、FORWARD、OUTPUT
    作用:过滤数据包 内核模块:iptables_filter.
  • Nat表,三个链:PREROUTING、POSTROUTING、OUTPUT
    作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
  • Mangle表,五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
    作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
  • Raw表,两个链:OUTPUT、PREROUTING
    作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw

2. 基本命令

# 查看iptables现有规则
iptables -nvL

# 开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 封停一个IP,使用下面这条命令
iptables -I INPUT -s 106.54.212.96 -j DROP

# 查看mangle/nat/raw 表
iptables -t mangle/nat/raw --list

3. 高级功能

添加规则

iptables -t 表名 -A INPUT/OUTPUT -p 协议 -d 目标ip --dport 目标端口 -j 动作 
  • -A 添加规则到尾部
  • -I 插入规则
  • -D 删除规则

3.1 目标地址转换(DNAT)

访问 192.168.1.101:8080端口,转换到访问 192.168.1.102:80 端口

iptables -t nat -A OUTPUT -p tcp -d 192.168.1.101 --dport 8080 -j DNAT --to-destination 192.168.1.102:80

4. 常用基本设置

#!/bin/sh
#允许所有
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
#开放22,21,80,443端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律接收
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#保存设置
service iptables save
#重启iptables
systemctl restart iptables
发布了237 篇原创文章 · 获赞 215 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/junmoxi/article/details/105293280