在 CentOS 系统中,使用 iptables
命令可以设置防火墙规则,以允许特定 IP 地址访问服务器。以下是一些基本步骤和示例命令,帮助你配置 iptables
以允许特定 IP 访问。
1. 允许特定 IP 访问所有端口
假设你想允许 IP 地址 192.168.1.100
访问服务器的所有端口,可以使用以下命令:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
2. 允许特定 IP 访问特定端口
如果你只想允许特定 IP 访问服务器的特定端口(例如,允许 192.168.1.100
访问端口 80 和 443),可以使用以下命令:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 443 -j ACCEPT
3. 允许多个特定 IP 访问
如果你需要允许多个特定 IP 访问,可以重复上述命令,或者使用 -m iprange
模块来指定一个 IP 范围:
sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.110 -j ACCEPT
4. 保存 iptables
规则
默认情况下,iptables
规则在系统重启后会丢失。为了使规则永久生效,你需要保存这些规则。CentOS 7 及以上版本使用 firewalld
服务来管理防火墙规则,而 CentOS 6 使用 iptables-persistent
。
CentOS 7 及以上版本
使用 firewalld
服务:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' sudo firewall-cmd --reload
CentOS 6
使用 iptables-persistent
服务:
sudo service iptables-persistent save
5. 查看 iptables
规则
你可以使用以下命令查看当前的 iptables
规则:
sudo iptables -L -n -v
注意事项
- 在修改
iptables
规则之前,建议先备份当前的规则,以便在需要时可以恢复。 - 确保你有足够的权限来修改防火墙规则,通常需要 root 权限。
- 如果你使用的是
firewalld
服务,确保它已启用并正在运行:
sudo systemctl status firewalld sudo systemctl start firewalld
通过以上步骤,你应该能够成功配置 iptables
以允许特定 IP 地址访问你的 CentOS 服务器。