iptables 的使用实战

2022-06-27 13:13:37 浏览数 (1)

1. 引言

上一篇文章中,我们介绍了 netfilter/iptables 的原理。 netfilter/iptables 原理 本文我们就来介绍一下 iptables 的具体用法。

2. 安装 iptables

虽然 netfilter 是集成在 linux 系统内核的,但是用户层的 iptables 还是需要手动安装和开启才可以使用的。

2.1. 安装 iptables

yum install -y iptables yum install iptables-services

2.2. 开启 iptables

systemctl start iptables.service systemctl enable iptables.service #设置开机自启动

3. iptables 的用法

iptables 的基本用法就是 -

iptables (选项) (参数)

从上一篇文章中我们知道 iptables 是以规则为单位进行 IP 信息包的过滤和管理的,我们就从规则的配置入手。

4. iptables 的基本选项

  • -L - 显示规则链中已有的条目
  • -F - 清楚规则链中已有的条目
  • -Z - 清空规则链中的数据包计算器和字节计数器
  • -N - 创建新的用户自定义规则链
  • -P - 定义规则链中的默认目标
  • -h - 显示帮助信息
  • -p - 指定要匹配的数据包协议类型
  • -s - 指定要匹配的数据包源ip地址
  • -j<目标> - 指定要跳转的目标
  • -i<网络接口> - 指定数据包进入本机的网络接口
  • -o<网络接口> - 指定数据包要离开本机所使用的网络接口

5. 规则的增删和修改

5.1. 基本命令

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> —sport 源端口 <-d 目标IP/目标子网> —dport 目标端口 -j 动作

5.2. 选项

  • -A - 向规则链中添加条目
  • -D - 从规则链中删除条目
  • -i - 向规则链中插入条目
  • -R - 替换规则链中的条目

5.3. 表名

  • raw - 高级功能,如 - 网址过滤
  • mangle - 数据包修改(QOS),用于实现服务质量
  • net - 地址转换,用于网关路由器
  • filter - 包过滤,用于防火墙规则

5.4. 规则链名

  • INPUT链 - 处理输入数据包
  • OUTPUT链 - 处理输出数据包
  • PORWARD链 - 处理转发数据包
  • PREROUTING链 - 用于目标地址转换(DNAT)
  • POSTOUTING链 - 用于源地址转换(SNAT)

5.5. 动作

  • accept - 接收数据包
  • DROP - 丢弃数据包
  • REDIRECT - 重定向、映射、透明代理
  • SNAT - 源地址转换
  • DNAT - 目标地址转换
  • MASQUERADE - IP伪装(NAT),用于ADSL
  • LOG - 日志记录

6. iptables 实战

6.1. 查看现有规则

iptables -L -n

6.2. 删除某个请求

比如要删除INPUT里序号为8的规则。

iptables -D INPUT 8

6.3. 允许所有请求

iptables -P INPUT ACCEPT

6.4. 清除默认规则

iptables -F # 清空所有默认规则 iptables -X # 清空所有自定义规则 iptables -Z # 所有计数器归0

6.5. 允许来自于lo接口的数据包

如果没有此规则,你将不能通过127.0.0.1访问本地服务。

iptables -A INPUT -i lo -j ACCEPT

6.6. 开启某个端口

iptables -A INPUT -p tcp —dport 端口 -j ACCEPT

6.7. 允许 icmp 请求(ping)

iptables -A INPUT -p icmp -m icmp —icmp-type 8 -j ACCEPT

6.8. 允许所有对外请求的返回包

iptables -A INPUT -m state —state ESTABLISHED -j ACCEPT

6.9. 添加内网ip信任

iptables -A INPUT -p tcp -s 192.168.1.50 -j ACCEPT

6.10. 过滤除iptables规则之外的所有请求

iptables -P INPUT DROP

7. 参考资料

https://wiki.archlinux.org/index.php/Iptables_(简体中文) http://man.linuxde.net/iptables。 https://wangchujiang.com/linux-command/c/iptables.html。 https://www.jianshu.com/p/8fd07c60f23f。

0 人点赞