iptables tips

  • 4 张表的分工:

    filter 用于过滤,

    nat 用于网络地址转换,

    mangle 用于给数据包做标记以修改分组数据的特定规则,

    raw 表则独立于Netfilter连接跟踪子系统。

  • 3 种数据包经过的链(chain)

iptables tips

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
  • iptables 常见 target

ACCEPT      # 允许数据包通过
DROP        # 丢弃数据包
REJECT      # 拒绝数据包通过
SNAT        # 源地址转换
MASQUERADE  # 地址欺骗,自动化的snat
DNAT        # 目标地址转换
REDIRECT    # 重定向
LOG         # 将数据包信息记录到 syslog 日志
QUEUE       # 排队
RETURN      # 返回
  • iptables 进行 url 过滤

# iptables 其实不是真正对 url 进行过滤,只是对传送的数据包内容进行过滤
# 而 http 头中含有目标 url
# 关于 -m 参数,man iptables 只有几句简介,
# 详细信息需要在 man iptables-extensions 里面进一步查询

# 开启
# 过滤掉含有 qq.com 的 url
sudo iptables -A OUTPUT -m string --string "qq.com" --algo bm -j DROP
# 如果本机是 squid 服务器,可以通过 INPUT 链过滤
sudo iptables -A INPUT -m string --string "qq.com" --algo bm -j DROP
# 对于 nat 转发的内容过滤
sudo iptables -A FORWARD -m string --string "qq.com" --algo bm -j DROP
# 查看
sudo iptables -nL --line-numbers
# 移除(最后的数字为加 --line-numbers 参数后 num 显示的序号)
sudo iptables -D OUTPUT 2
  • 移除过滤规则示例

#查看
sudo iptables -t filter -nL --line-numbers
#移除。最后的数字为加 --line-numbers 参数后 num 显示的序号
sudo iptables -t filter -D FORWARD 1
  • 保存规则以便重启生效(Ubuntu 16.04)

sudo su
iptables-save > /etc/iptables.rules
cd /etc/network/if-pre-up.d/
vim iptables
#>>> #! /bin/bash
#>>> iptables-restore < /etc/iptables.rules
chmod +x iptables
sudo iptables -I INPUT   -p tcp -j REJECT --reject-with tcp-reset -m connlimit --connlimit-above 20
sudo iptables -I FORWARD -p tcp -j REJECT --reject-with tcp-reset -m connlimit --connlimit-above 10



*** walker ***