iptables

  1. 1. 环境准备
  2. 2. 生成/应用配置文件
  3. 3. 规则配置

之前使用privoxy用于分流代理,之后替换了方案,但是没有access-permit同等的功能。

调查后发现使用iptables可以实现访问控制的功能。

环境准备

设备: Raspberry Pi 3B+
OS: Debian 10 (buster) aarch64

1
sudo apt install iptables

由于debian系默认不实用配置文件的方式持久化,因此补充安装以下包

1
sudo apt install iptables-persistent netfilter-persistent

生成/应用配置文件

1
2
3
4
5
6
7
8
9
10
11
netfilter-persistent save   # 保存规则到配置文件
netfilter-persistent start # 从配置文件加载规则

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6

# 查看防火墙+显示行号
iptables -nL --line-numbers

规则配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 放行一个ip地址
iptables -A INPUT -s 192.168.1.100 -p tcp -m tcp --dport 8080 -j ACCEPT

# 放行一个网段
iptables -A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 8080 -j ACCEPT

# 放行多个端口
iptables -A INPUT -s 192.168.2.0/24 -p tcp -m multiport --dports 22,80:88 -j ACCEPT

# 拒绝一个端口(丢弃包,无返回)
iptables -A INPUT -p tcp -m tcp --dport 8080 -j DROP

# 拒绝一个端口(返回拒绝信息)
iptables -A INPUT -p tcp -m tcp --dport 8080 -j REJECT