清理防火墙

1
2
3
iptables -F
iptables -X
iptables -Z

iptables 命令选项输入顺序

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

表名包括

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

规则链名包括

  • INPUT 链:处理输入数据包
  • OUTPUT 链:处理输出数据包
  • FORWARD 链:处理转发数据包
  • PREROUTING 链:用于目标地址转换(DNAT),路由前
  • POSTROUTING 链:用于源地址转换(SNAT),路由后

动作包括

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

iptables 里面的 dport 和 sport

首先先来翻译一下 dportsport 的意思:

  • dport:目的端口
  • sport:来源端口

dportsport 字面意思来说很好理解,一个是数据要到达的目的端口,一个是数据来源的端口。

但是在使用的时候要分具体情况来对待,这个具体情况就是你的数据包的流动行为方式(INPUT 还是 OUTPUT)。

INPUT 示例 1

1
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

注意里面的 INPUT 参数,这个代表你的这条数据包的"进入"操作!那么这条数据包可以这么描述:

  1. 这是一条从外部进入内部本地服务器的数据
  2. 数据包的目的(dport)地址是 80,就是要访问我本地的 80 端口
  3. 允许以上的数据行为通过

总结:允许外部数据访问我的本地服务器 80 端口。

INPUT 示例 2

1
/sbin/iptables -A INPUT -p tcp --sport 80 -j ACCEPT
  1. 这是一条从外部进入内部本地服务器的数据
  2. 数据包的来源端口是(sport)80,就是对方的数据包是 80 端口发送过来的
  3. 允许以上数据行为

总结:允许外部的来自 80 端口的数据访问我的本地服务器。

INPUT 方式总结dport 指本地,sport 指外部。

OUTPUT 示例

如果数据包是(OUTPUT)行为,那么就是另外一种理解方式:

1
/sbin/iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
  1. 这是一条从内部出去的数据
  2. 出去的目的(dport)端口是 80
  3. 允许以上数据行为

OUTPUT 行为总结dport 指外部,sport 指本地。