HCRM博客

如何在CentOS上使用iptables配置端口转发?

CentOS 系统中 iptables 端口管理详解

在 CentOS 系统中,iptables 是用于配置和管理网络防火墙规则的重要工具,它允许管理员通过设置一系列的规则来控制网络流量,从而实现对服务器端口的安全管理和访问控制,本文将详细介绍如何在 CentOS 中使用iptables 进行端口管理,包括开放、关闭和查看端口等操作。

如何在CentOS上使用iptables配置端口转发?-图1
(图片来源网络,侵权删除)

一、CentOS 中iptables 的基础概念

iptables 是一个基于内核的包过滤系统,它根据预先定义的规则来决定如何处理进出系统的网络数据包,每个规则由多个条件组成,如源地址、目的地址、协议类型、端口号等,当数据包与某个规则的条件匹配时,就会执行相应的动作,如接受(ACCEPT)、拒绝(DROP)或跳转到其他链。

在 CentOS 系统中,iptables 主要包含以下几个内置链:

INPUT:处理进入本地系统的数据包。

FORWARD:处理通过本地系统转发的数据包。

OUTPUT:处理从本地系统发出的数据包。

如何在CentOS上使用iptables配置端口转发?-图2
(图片来源网络,侵权删除)

默认情况下,这些链中的规则可能会根据系统的安全策略进行设置,但在大多数情况下,需要手动添加规则来满足特定的需求。

二、CentOS 中iptables 的安装与启动

在较新的 CentOS 版本中,默认使用的是firewalld 作为防火墙服务,但仍然可以安装和使用iptables,以下是安装和启动iptables 的基本步骤:

1、安装iptables 软件包

  • yum install iptablesservices y

2、启动并启用iptables 服务

  • systemctl start iptables
  • systemctl enable iptables

3、验证iptables 服务状态

如何在CentOS上使用iptables配置端口转发?-图3
(图片来源网络,侵权删除)
  • systemctl status iptables

三、CentOS 中iptables 的常用操作命令

在使用iptables 进行端口管理时,常用的操作命令包括增加规则、删除规则、查看规则以及保存规则等。

1、增加规则

语法格式iptables [选项] A 链名 条件 j 动作

示例:开放本机的 8080 端口,允许所有服务器访问该端口。

  • iptables A INPUT p tcp dport 8080 j ACCEPT

2、删除规则

语法格式iptables [选项] D 链名 规则编号

示例:删除刚才添加的开放 8080 端口的规则,首先使用iptables L n linenumber 命令查看规则编号,然后执行删除操作。

  • iptables D INPUT 4 # 假设规则编号为 4

3、查看规则

语法格式iptables [选项] L [链名]

示例:查看当前所有的防火墙规则。

  • iptables L n

4、保存规则

语法格式service iptables save/etc/rc.d/init.d/iptables save

示例:保存当前的防火墙规则,以便在系统重启后仍然生效。

  • service iptables save

四、CentOS 中iptables 的端口开放与关闭示例

1、开放特定端口

开放单个端口:开放本机的 3306 端口,允许外部服务器访问该端口上的 MySQL 服务。

  • iptables A INPUT p tcp dport 3306 j ACCEPT

开放多个端口:可以使用多条iptables 命令分别开放不同的端口,或者编写脚本批量添加规则,以下是一个开放多个端口的示例脚本:

  • #!/bin/bash
  • PORTS=(22 80 443 3306)
  • for PORT in "${PORTS[@]}"; do
  • iptables A INPUT p tcp dport $PORT j ACCEPT
  • done

2、关闭特定端口

关闭单个端口:关闭本机的 22 端口,禁止外部服务器通过 SSH 访问该服务器。

  • iptables A INPUT p tcp dport 22 j DROP

关闭多个端口:同样可以使用多条iptables 命令分别关闭不同的端口,或者编写脚本批量添加规则,以下是一个关闭多个端口的示例脚本:

  • #!/bin/bash
  • PORTS=(80 443 3306)
  • for PORT in "${PORTS[@]}"; do
  • iptables A INPUT p tcp dport $PORT j DROP
  • done

五、CentOS 中iptables 的高级应用:端口转发与 NAT

除了基本的端口开放和关闭操作外,iptables 还支持端口转发和网络地址转换(NAT)等功能,这些功能在构建复杂的网络环境和实现负载均衡等方面非常有用。

1、端口转发:端口转发可以将到达一个端口的流量重定向到另一个端口或地址上,将到达本机 8080 端口的流量转发到本地的 80 端口上。

  • iptables t nat A PREROUTING p tcp dport 8080 j REDIRECT toport 80

2、NAT:NAT 可以将私有网络中的 IP 地址转换为公有网络上的 IP 地址,从而实现多个设备共享一个公网 IP 地址上网,以下是一个简单的 NAT 配置示例,将内网中的 IP 地址段转换为公网 IP 地址:

  • # 开启 IP 转发功能
  • echo 1 > /proc/sys/net/ipv4/ip_forward
  • # 清除原有的 NAT 规则
  • iptables t nat F
  • # 添加 NAT 规则,假设内网 IP 段为 192.168.1.0/24,公网 IP 为 192.0.2.1
  • iptables t nat A POSTROUTING o eth0 j MASQUERADE
  • iptables t nat A PREROUTING i eth0 p tcp d 192.0.2.1 dport 80 j DNAT todestination 192.168.1.10:80

六、FAQs

1、Q: CentOS中如何查看已开放的端口?

A: 在 CentOS 中,可以通过多种方法查看已开放的端口,以下是一些常用的方法:使用netstat 命令、ss 命令或lsof 命令结合grep 命令来筛选出指定端口的使用情况,要查看端口 8080 是否被占用,可以使用以下命令:netstat tuln | grep 8080,如果输出结果中包含该端口的信息,则说明该端口已被占用;如果没有输出结果,则说明该端口未被占用。

也可以使用telnet 命令来尝试连接指定端口,如果连接成功,则说明该端口是开放的;如果连接失败,则可能该端口未开放或被防火墙阻止。

对于使用firewalld 作为防火墙的 CentOS 7及以上版本系统,还可以使用firewallcmd listports 命令来列出当前已开放的端口。

需要注意的是,查看已开放端口的操作可能需要超级用户权限,因此在执行相关命令时可能需要在前面加上sudo,由于网络环境和系统配置的不同,具体的命令输出结果可能会有所差异,如果对网络配置不太熟悉,建议在进行任何更改之前备份相关的配置文件和重要数据,以免造成不必要的损失。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/24464.html

分享:
扫描分享到社交APP
上一篇
下一篇