linux abre acesso à porta externa

Crie o hábito de escrever juntos! Este é o 9º dia da minha participação no "Nuggets Daily New Plan · April Update Challenge", clique para ver os detalhes do evento

prefácio

O software relacionado à instalação do Linux pode precisar permitir acesso à rede externa, como mysql, redis, kafka, etc. Há alguns dias, um colega instalou o mosquitto (servidor Mqtt), mas a rede externa não pôde ser acessada. Verifique a configuração relacionada e o periférico ainda está inacessível. Em relação a essa questão, precisamos analisar e investigar a partir desses aspectos.

imagem.png

Verifique se a porta externa está ocupada

Se a porta externa do Linux estiver ocupada, você geralmente pode usar os comandos lsof e netstat

comando lsof

lsof (list open files) é uma ferramenta que lista os arquivos abertos no sistema atual. No ambiente linux, tudo existe na forma de arquivos, através dos quais você pode acessar não apenas dados regulares, mas também conexões de rede e hardware. Portanto, como os soquetes Transmission Control Protocol (TCP) e User Datagram Protocol (UDP), o sistema aloca um descritor de arquivo para o aplicativo em segundo plano, não importa qual seja a natureza do arquivo, o descritor de arquivo é para o aplicativo. A interação com o sistema operacional subjacente fornece uma interface comum.

Por exemplo, verifique se a porta do mosquito está ocupada

 lsof -i:1883
复制代码

imagem.png

Descrição dos parâmetros de resultado relacionados

  • COMMAND: o nome do processo PID: o identificador do processo
  • USUÁRIO: proprietário do processo
  • FD: descritor de arquivo, a aplicação identifica o arquivo pelo descritor de arquivo. Como cwd, txt, etc. TYPE: tipo de arquivo, como DIR, REG, etc.
  • DEVICE: especifica o nome do disco
  • SIZE: o tamanho do arquivo
  • NODE: inode (identificação do arquivo no disco)
  • NAME: O nome exato do arquivo aberto
  • O valor do descritor de arquivo cwd na coluna FD representa o diretório de trabalho atual do aplicativo, que é o diretório onde o aplicativo é iniciado, a menos que ele próprio faça alterações nesse diretório, arquivos do tipo txt são código de programa, como o próprio binário do aplicativo ou Bibliotecas compartilhadas, como o programa /sbin/init mostrado na lista acima.

Ele solicita o comando lsof não encontrado, use o comando yum install lsof para instalar, se o resultado estiver vazio, significa que a porta não está ocupada, se aparecer os dados da lista, significa que a porta está ocupada por outros aplicativos.

comando netstat

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

netstat -nultp

此命令是查看当前所有已经使用的端口情况

imagem.png

从上图可以看出,1883的端口没有被占用.

netstat -anlp | grep :1883

检查具体某个端口是否被占用,如果查询结果为空,则代表端口没被占用,如果存在列表数据,且状态为listen状态则表示端口已被占用。

netstat -tunlp

列出所有的udp或者tcp端口是否被占用

检查端口是否开放

可以从三个方面进行检查。

1.安装应用软件是否配置开发端口

检查相关的配置文件,外部返回端口是否配置。

2.云服务器添加外部端口

查询云服务是否开放了端口权限,这里以阿里云为例

2.1.登录云服务器,进入实例页面,点击配置安全组规则

imagem.png

2.2 添加相应端口即可

imagem.png

3.防火墙是否添加外部端口访问权限

3.1.查看防火墙的状态是否打开

这里可以使用iptables或者使用firewalld命令

firewalld方式

systemctl status firewalld 
复制代码

iptables方式

 service iptables status
复制代码

imagem.png

如果出现这个说明iptables的命令没有安装,安装iptables命令即可

yum install iptables-services

防火墙状态为inactive(dead)说明防火墙没有打开,状态为active说明防火墙已经激活。

imagem.png

3.2.查看所有端口列表

firewall-cmd --zone=public --list-ports
复制代码

3.3.查看端口状态

firewall-cmd --zone=public --query-port=6379/tcp
复制代码

如果是no-表示关闭,yes-表示开启

3.4.开发端口访问

firewall-cmd --zone=public --add-port=1883/tcp --permanent
复制代码

3.5.重新加载防火墙,这里不是重启防火墙

firewall-cmd --reload
复制代码

重新执行查看命令,查看端口是否打开即可。

总结

本文从几个方面,分别介绍了linux如何开发端口访问的方法,linux端口对外开放,涉及了相关安全性问题,实际的项目中根据情况来是否开放外部端口。例外修改默认端口,例如mysql默认3306、redis默认6379等。

Acho que você gosta

Origin juejin.im/post/7084973491748864036
Recomendado
Clasificación