1. 允许特定端口的入站连接(例如允许外部访问 TCP 80 端口)
2. 允许特定端口的出站连接(例如允许服务器访问外部的 TCP 443 端口)
3. 允许特定 IP 地址访问特定端口(例如允许 IP 192.168.1.100 访问 TCP 22 端口)
4. 开放一段连续端口范围(例如允许外部访问 TCP 3000 - 3010 端口)
保存规则
Debian/Ubuntu
CentOS/RHEL
iptables
添加端口相关规则主要是针对防火墙对特定端口的访问控制,以下为你详细介绍不同场景下添加端口规则的方法:
INPUT
链:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-A
:表示将规则追加到指定链的末尾。这里指定的链是INPUT
,即入站规则链。-p tcp
:指定协议为 TCP。--dport 80
:指定目标端口为 80。-j ACCEPT
:表示如果数据包符合前面的条件(TCP 协议且目标端口为 80),则允许通过。
OUTPUT
链:
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
-A
是追加规则到OUTPUT
链末尾。-p tcp
指定 TCP 协议。--dport 443
指定目标端口为 443。-j ACCEPT
表示允许符合条件的数据包出站。
sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
-s 192.168.1.100
:指定源 IP 地址为 192.168.1.100,即只有该 IP 地址的设备发出的连接请求会被考虑。
sudo iptables -A INPUT -p tcp --dport 3000:3010 -j ACCEPT
--dport 3000:3010
:指定目标端口范围从 3000 到 3010。
iptables
规则,系统重启后这些规则会丢失。为了让规则持久化,不同的 Linux 发行版有不同的方法:
iptables-persistent
工具:
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
iptables-services
:
sudo yum install iptables-services
sudo systemctl enable iptables
sudo service iptables save
iptables
规则在系统重启时会自动加载。