当出现 FTP (或 SFTP)无法连接、长连接(websocket)无法连接、https 无法连接、远程桌面无法访问 等情况时,很有可能是因为对应端口不通的问题造成的(这里暂时也值探索这种情况,先排除端口不通的情况后,其他的再另行探讨)。
上述情况对应的端口号一般为:
FTP:21、SFTP:22、连接(websocket):2346(默认,可自定义)、https:433、远程桌面:3389
如何判断服务器的某端口是否是通的?
1. 本地命令(windows):telnet 你的IP 你要查询的端口号(如:telnet 188.126.3.3 8080);输入命令并回车后,如果一直显示类似“正在连接主机....”等字样则表示该端口不通,若显示空白的(或其他你确定是从服务器返回的字符)则表示该端口是通的;windows系统一般需要你先手动开启“telnet客户端”,才可以使用 telnet 命令。
2. 服务器命令(linux):通过 Putty 等 linux 远程连接工具,连接上 服务器后,执行命令:lsof -i:你的端口(如:lsof -i:2346);输入命令并回车后,若显示 CMMMOND 等内容,则表示该端口是同的,若显示空白则表示该端口不通过。
如果端口不通,如何排查?如何解决?
1. 常用的云服务器,如阿里云、腾讯云,都有“安全组”,你得先确保你的服务器所使用的“安全组”中,以开放了对应的端口号,开放方法:
a:最简单粗暴的方法就是:“出规则”和“如规则”都全开放(不安全,不推荐);开放所有端口的规则设置参考:
b:比较安全的做法:逐个添加每个端口号到“安全组”的“入规则”;出规则如果你不知道该怎么做,那就全开放把。这个规则主要是用于阻止你通过某个端口对外访问,所以,我认为相对来说,全开放也没多大风险。开放部分端口的规则设置参考,如图:
很容易被忽视的,一丝不苟的保安:防火墙
好几次都被我“忠实的保安”坑了!搭建服务器时,经常都会忽略掉“防火墙”,因为它看不见,所以往往也没想到。有时候也会把“安全组”当做是防火墙,以为“安全组”和“防火墙”就是一回事儿,或者以为只要“安全组”设置好了,防火墙就跟着好了。我用泪水告诉你,绝大部分情况下,这两者都是分开的,你就把它想作是多重保险吧!哎........
“安全组”设置完毕后,如果端口还不通,那就就该看看“防火墙”了:
1. 最简单粗暴的方法:关闭防火墙。linux 关闭防火墙方法:
a. systemctl stop firewalld(临时关闭,不安全,不推荐。而且重启服务器后会恢复,一定要记得这一点,否则过了很久后,因为某种原因需要重启了服务器,你的端口有不通了,而且大概率事件你会忘记是因为防火墙又开启了)
b. systemctl disable firewalld(开机禁用,不安全,不推荐)
2. 单个查询防火墙中你需要的端口是否以开放,若为开放,则开放即可:
a. 查询端口是否开放:firewall-cmd --query-port=你的端口/tcp(如:firewall-cmd --query-port=2346/tcp)
b. 开放开放某端口:firewall-cmd --permanent --add-port=你的端口/tcp(如:firewall-cmd --permanent --add-port=2346/tcp)
c. 重启防火墙(修改配置后记得要重启防火墙,否则不生效):firewall-cmd --reload
【干货分享】
1、firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2、查询、开放、关闭端口(2346 即为你需要操作的端口号)
查询 某 端口是否开放:firewall-cmd --query-port=2346/tcp
开放 某 端口:firewall-cmd --permanent --add-port=2346/tcp
移除 某 端口:firewall-cmd --permanent --remove-port=2346/tcp
重启防火墙(修改配置后要重启防火墙):firewall-cmd --reload
网友评论