简介:由于不了解端口工作的方式,导致在想要实践telnet ip 80时一直被报telnet: Unable to connect to remote host: Connection refused,在解决问题的过程中又一直在防火墙放行处原地转圈圈导致自己浪费了很长时间,遂梳理一份自己解决问题的可行方案,并总结一下此过程学到的关于端口和服务的琐碎知识点。
解决方案写在最前面,(以80端口为例子,80端口是http服务默认的端口)
首先,要检查端口监听状态netstat -lnpt
此时还没有监听80端口
如果发现所需端口未被监听LISTENING,那么首先需要做的就是启动一个进程去监听它,而不是去设置防火墙(iptables, firewall-cmd).
我想要监听的是80端口,80是http服务的默认端口,打开http配置文件vim /etc/httpd/conf/httpd.conf
可以看到默认的监听端口就是80
33 #
34 # Listen: Allows you to bind Apache to specific IP addresses and/or
35 # ports, instead of the default. See also the
36 # directive.
37 #
38 # Change this to Listen on specific IP addresses as shown below to
39 # prevent Apache from glomming onto all bound IP addresses.
40 #
41 #Listen 12.34.56.78:80
42 Listen 80
43 #
于是问题首先就是要启动http服务
查看http服务状态
systemctl status httpd
启动服务
systemctl start httpd
再次查看http服务状态systemctl status httpd
此时再去查看端口监听情况netstat -lntp
发现已经有了80端口的监听情况,接下来才是去配置防火墙放行该端口,这部分教程遍地都是,此处仅简记命令
#开放及关闭30007端口,并重启防火墙firewalld
firewall-cmd --zone=public --add-port=30007/tcp --permanent
# 开放30007端口firewall-cmd --zone=public --remove-port=30007/tcp --permanent
#关闭30007端口firewall-cmd --reload
# 配置立即生效
#查看防火墙所有开放的端口firewall-cmd --zone=public --list-ports
#查看防火墙所有开放的端口firewall-cmd --list-ports
#如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估systemctl stop firewalld.service
#开机启动防⽕墙systemctl enable firewalld
#禁止开机启动防⽕墙systemctl disable firewalld
#启动防⽕墙systemctl start firewalld
#关闭防⽕墙systemctl stop firewalld
#查看防火墙状态firewall-cmd --state
我的情况是端口未监听,还可能遇到另一种情形,就是端口被占用,可以使用以下方式找到对应进程,杀死进程释放端口
#检查端口被哪个进程占用
netstat -lnpt |grep 5672
#查看进程详情(端口号)ps 6832
#查看进程详情(应用程序名)ps -ef|grep XXX
#应用程序名
#杀死进程(进程号)kill -9 26531
#进程号文章来源:https://www.toymoban.com/news/detail-455383.html
吃一堑长一智,重新认识一下端口和监听
systemctl list-units --type=service | grep httpd
查看某服务是否启动
后面自己理解消化后会输出在这里
https://zhuanlan.zhihu.com/p/20365900文章来源地址https://www.toymoban.com/news/detail-455383.html
到了这里,关于Linux端口开放和监听的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!