在Centos操作系统中,iptables是一个功能强大的防火墙工具,用于控制网络流量,它通过设置规则来允许或禁止特定端口的访问,从而增强服务器的安全性,本文将详细介绍如何在CentOS中使用iptables管理端口,包括安装、配置和常见问题解答。
一、安装与配置iptables
1. 关闭firewalld

CentOS 7默认使用firewalld作为防火墙,为了使用iptables,需要先关闭并禁用firewalld:
- systemctl stop firewalld
- systemctl disable firewalld
- systemctl mask firewalld
2. 安装iptables
安装iptables服务:
- yum install y iptablesservices
3. 启动iptables并设置开机自启
启动iptables服务:
- systemctl enable iptables
- systemctl start iptables
查看iptables状态:

- systemctl status iptables
如果显示“active (exited)”,则表示iptables已成功启动。
4. 查看默认规则
查看当前iptables规则:
- iptables L
5. 备份现有规则
备份当前的iptables规则:
- cp a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
二、添加和管理端口规则
1. 开放特定端口

以开放80端口为例,执行以下命令:
- iptables I INPUT p tcp dport 80 m state state NEW j ACCEPT
查看规则是否生效:
- iptables L
保存添加的规则:
- iptablessave > /etc/sysconfig/iptables
设置iptables开机自启:
- systemctl enable iptables.service
2. 修改现有规则
修改80端口为8080端口:
- iptables D INPUT p tcp dport 80 m state state NEW j ACCEPT
- iptables I INPUT p tcp dport 8080 m state state NEW j ACCEPT
再次保存规则:
- iptablessave > /etc/sysconfig/iptables
3. 删除规则
删除特定规则(例如删除80端口规则):
- iptables D INPUT p tcp dport 80 m state state NEW j ACCEPT
保存修改:
- iptablessave > /etc/sysconfig/iptables
三、高级功能:端口转发
1. DNAT与SNAT
DNAT(目的地址转换)用于外网访问内网主机,而SNAT(源地址转换)用于内网主机访问外网:
- 开启IP转发功能
- echo 1 > /proc/sys/net/ipv4/ip_forward
- echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
- sysctl p
示例:将外部请求的8080端口转发到内部192.168.1.103的80端口:
- iptables t nat A PREROUTING p tcp d 192.168.111.102 dport 8080 j DNAT todestination 192.168.1.103:80
- iptables t nat A POSTROUTING p tcp d 192.168.1.103 dport 80 j SNAT tosource 192.168.111.102
2. 本地端口转发
将本机的8080端口请求转发到80端口:
- iptables t nat A PREROUTING p tcp dport 8080 j REDIRECT toports 80
四、完整配置示例
以下是一个完整的iptables配置文件示例,包含多个开放端口和转发规则:
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- A INPUT m state state RELATED,ESTABLISHED j ACCEPT
- A INPUT p icmp j ACCEPT
- A INPUT i lo j ACCEPT
- A INPUT p tcp m state state NEW m tcp dport 22 j ACCEPT # SSH
- A INPUT p tcp m state state NEW m tcp dport 80 j ACCEPT # HTTP
- A INPUT p tcp m state state NEW m tcp dport 3306 j ACCEPT # MySQL
- A INPUT p tcp m state state NEW m tcp dport 8080 j ACCEPT # HTTP Alternate Port
- A INPUT j REJECT rejectwith icmphostprohibited
- A FORWARD j REJECT rejectwith icmphostprohibited
- COMMIT
保存到/etc/sysconfig/iptables
文件中,并重启iptables服务使其生效:
- systemctl restart iptables
五、FAQs
Q1: 如何更改iptables配置文件后不重启服务即生效?
A1: 可以使用以下命令使更改立即生效:
- iptablesrestore < /etc/sysconfig/iptables
Q2: 如果误删了iptables规则,如何恢复?
A2: 如果有备份文件,可以通过以下命令恢复:
- cp a /etc/sysconfig/iptables.bak /etc/sysconfig/iptables
然后重启iptables服务:
- systemctl restart iptables
本文详细介绍了在CentOS中使用iptables管理端口的方法,从安装、配置到高级功能如端口转发等各个方面进行了阐述,通过合理配置iptables,可以有效提升系统的安全性,保护服务器免受未经授权的访问。