一、前言

iptables 中文名:IP信息包过滤系统,它是一个配置 Linux 内核防火墙的命令行工具,是 netfilter 项目的一部分。术语 iptables 也经常代指该内核级防火墙。iptables 可以直接配置,也可以通过许多前端和图形界面配置。iptables 用于 ipv4,ip6tables 用于 ipv6。

iptables 是 Linux 核心网络安全的重要工具,使用前需要先启动服务。

(nftables 已经包含在 Linux kernel 3.13 中,以后会取代 iptables 成为主要的 Linux 防火墙工具。)

二、 iptables 命令

2.1 语法



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



2.2 说明

1)表名



  • filter:包过滤,用于存放所有与防火墙相关操作的默认表。
  • raw:数据跟踪处理,用于配置数据包,raw 中的数据包不会被系统跟踪。
  • nat:用于网络地址转换(例如:端口转发)
  • mangle:用于对特定数据包的修改
  • security:用于强制访问控制网络规则



2)规则



  • -A:追加,在当前链的最后新增一个规则
  • -I num:插入,把当前规则插入为第几条
  • -R num:替换/修改第几条规则(格式:iptables -R INPUT 3 ……)
  • -D num:删除,明确指定删除第几条规则



3)规则链名



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



4)协议名



  • TCP
  • UDP
  • ICMP



5)动作



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



2.3 选项



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



2.4 实例

禁止服务器 INPUT 链的 80 端口:



iptables -t filter -A INPUT -p tcp --dport 80 -j DROP



三、将 iptables 配置保存

3.1 方法一

使用 iptables save 选项



service iptables save



2.2 方法二

使用 iptables-save 命令,需要指定保存的配置文件路径


iptables-save /etc/sysconfig/iptables



3.3 实例

开启服务器 INPUT 链的 80 端口,并保存配置:



iptables -t filter -R INPUT 1 -p tcp --dport 80 -j ACCEPT
service iptables save



四、netstat 命令

netstat 是一款命令行工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

netstat 可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。

centos7 iptables 状态 centos6 iptables配置_连线

4.1 基本语法



netstat [选项]



4.2 选项
  • -a 或 --all:显示所有连线中的 Socket
  • -A <网络类型> 或 --<网络类型>:列出该网络类型连线中的相关地址
  • -c 或 --continuous:持续列出网络状态
  • -C 或 --cache:显示路由器配置的快取信息
  • -e 或 --extend:显示网络其他相关信息
  • -F 或 --fib:显示 FIB;
  • -g 或 --groups:显示多重广播功能群组组员名单
  • -h 或 --help:在线帮助
  • -i 或 --interfaces:显示网络界面信息表单
  • -l 或 --listening:显示监控中的服务器的 Socket
  • -M 或 --masquerade:显示伪装的网络连线
  • -n 或 --numeric:直接使用 ip 地址,而不通过域名服务器
  • -N 或 --netlink 或 --symbolic:显示网络硬件外围设备的符号连接名称
  • -o 或 --timers:显示计时器
  • -p 或 --programs:显示正在使用 Socket 的程序识别码和程序名称
  • -r 或 --route:显示 Routing Table
  • -s 或 --statistice:显示网络工作信息统计表
  • -t 或 --tcp:显示 TCP 传输协议的连线状况
  • -u 或 --udp:显示 UDP 传输协议的连线状况
  • -v 或 --verbose:显示指令执行过程
  • -V 或 --version:显示版本信息
  • -w 或 --raw:显示RAW传输协议的连线状况
  • -x 或 --unix:此参数的效果和指定 -A unix 参数相同
  • --ip 或 --inet:此参数的效果和指定 -A inet 参数相同
4.3 实例

显示 tcp 模式运行状况:



netstat -ant



tcp 状态(state):

  • LISTENING :服务启动后首先处于侦听状态
  • ESTABLISHED :建立连接,表示两台机器正在通信
  • CLOSE_WAIT:对方主动关闭连接或者网络异常导致连接中断
  • TIME_WAIT :我方主动调用 close() 断开连接,收到对方确认后状态变为 TIME_WAIT