linux 系统、云服务器,怀疑因端口无法访问的排查方法和解决办法

当出现 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

你可能感兴趣的:(linux 系统、云服务器,怀疑因端口无法访问的排查方法和解决办法)