Linux服务器上新增开放端口号

本文介绍了在 CentOS 7 中使用 firewalld 服务替代 iptables 来管理和配置防火墙的方法。内容包括如何临时及永久地开放端口、查询端口状态等操作,并提供了详细的命令示例。

开放端口的方法:

方法一:命令行方式
               1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
               2.保存:/etc/rc.d/init.d/iptables save
               3.重启服务:/etc/init.d/iptables restart
               4.查看端口是否开放:/sbin/iptables -L -n
    

 方法二:直接编辑/etc/sysconfig/iptables文件
               1.编辑/etc/sysconfig/iptables文件:vi /etc/sysconfig/iptables
                   加入内容并保存:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
               2.重启服务:/etc/init.d/iptables restart
               3.查看端口是否开放:/sbin/iptables -L -n


查询端口是否有进程守护用如下命令grep对应端口,如80为端口号
例:netstat -nalp|grep 80


大哭大哭大哭

最近安装了CentOS7.3.1611之后,使用redis时,发现无法使用iptables控制Linux的端口,百度之后发现Centos 7.3使用firewalld代替了原来的iptables。下面这篇文章将给大家介绍如何在Centos 7.3中使用firewalld快速开发端口
CentOS 7 默认没有使用iptables,所以通过编辑iptables的配置文件来开启80端口是不可以的,
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

CentOS 7 采用了 firewalld 防火墙
1.如何查询是否开启6379端口:
[root@localhost ~]# firewall-cmd --query-port=6379/tcp
no
注:no 表示端口没有开启。
2.开启6379端口:
[root@localhost ~]# firewall-cmd --add-port=6379/tcp
success
注:success 表示开启了6379端口。


我擦,今天我发现用上述方法,端口过一段时间就被禁用了,又发现一种永久开启端口的方式:

firewall-cmd --zone=public --add-port=17777/tcp --permanent

加完之后要更新  

firewall-cmd --reload

这就是不系统学习带来的弊端啊,每次只学一个点,太散了,要以点带面的学习得意得意得意


1、firewalld的基本使用
启动: systemctl start firewalld
查看状态: systemctl status firewalld 
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
 
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

3.配置firewalld-cmd

查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
 
那怎么开启一个端口呢
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

### 服务器端口开放原因及解决方案 #### 一、常见原因分析 服务器端口开放通常由以下几个方面引起: 1. **防火墙规则限制** 防火墙可能阻止了特定端口的流量。例如,Windows系统的内置防火墙或Linux中的`iptables`/`firewalld`可能导致目标端口被屏蔽[^2]。 2. **安全组配置缺失** 如果使用的是云服务器(如阿里云、腾讯云),则需要在云端的安全组中手动开放对应端口。如果没有正确配置安全组规则,即使本地设置了监听,外部也无法访问该端口[^4]。 3. **服务未启动或绑定错误** 对应的服务程序可能未正常运行,或者未绑定到指定端口。例如SQL Server未开启TCP/IP协议支持,或者Nginx/Apache未正确配置监听端口[^1]。 4. **操作系统网络策略限制** 操作系统层面可能存在额外的网络策略限制,比如SELinux/AppArmor等强制访问控制机制干扰了端口的正常使用[^5]。 --- #### 二、具体解决方法 1. **检查并调整防火墙设置** - Windows环境下可以通过PowerShell命令临时关闭防火墙测试连通性: ```powershell Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False ``` - Linux环境中可以查看当前防火墙状态,并允许特定端口通过以下命令实现: ```bash sudo firewall-cmd --zone=public --add-port=<port>/tcp --permanent sudo firewall-cmd --reload ``` 2. **配置云服务商安全组** 登录云服务平台管理界面,找到实例关联的安全组,新增一条入站规则允许所需端口的TCP流量。例如对于HTTP服务需开放80端口;而对于SSH登录,则要确保22端口可用。 3. **确认服务进程已启用** 使用工具检测是否有进程正在监听预期端口。以Kali为例可执行如下指令获取活动连接详情: ```bash netstat -tuln | grep <port> ``` 若无任何输出表明相关服务尚未激活,此时应该依据官方文档重启相应守护进程。 4. **核查高级权限管控组件** 当发现尽管完成了上述步骤仍存在障碍时,有必要深入探究是否存在更深层次的操作系统级约束因素影响着实际效果。针对CentOS系列发行版而言,可通过设定参数来放宽SELinux制约力度: ```bash setsebool -P httpd_can_network_connect on ``` --- ### 示例代码片段 以下是用于调试的一个Python脚本样例,它能够帮助判断远程主机某个端口是否处于可达状态。 ```python import socket def check_port(host, port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) try: result = sock.connect_ex((host, int(port))) if result == 0: print(f"Port {port} is open.") else: print(f"Port {port} seems closed or filtered.") except Exception as e: print(e) if __name__ == "__main__": host_ip = input("Enter the target IP address: ") test_port = input("Which port do you want to verify? ") check_port(host_ip, test_port) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值