zoukankan      html  css  js  c++  java
  • 无法访问 CentOS7服务器上应用监听的端口

    无法访问 CentOS7服务器上应用监听的端口

    参考资料

    1. 云主机上Centos7配置Iptables规则开启80、3306等端口https://blog.csdn.net/qq_37960007/article/details/80374782
    2. CentOS 7 找不到 iptables 文件(需要安装 iptables 服务)
      https://www.cnblogs.com/miracle-luna/p/13714709.html
    3. 如何在CentOS 7 的机器上配置白名单
      https://www.cnblogs.com/miracle-luna/p/13714809.html
    4. 关于mysql服务器3306端口不能远程连接的解决
      https://blog.csdn.net/m0_37477061/article/details/83275408
    5. Linux关闭防火墙命令
      https://blog.csdn.net/qq_39399966/article/details/102660601
    6. CentOS7开启端口(永久)
      https://blog.csdn.net/zx110503/article/details/78787483
    7. centos7 打开mysql 3306端口并 设置外部访问
      https://www.cnblogs.com/yangxunwu1992/p/6091422.html

    问题由来

    我在自己的虚拟机中的CentOS7 中(MySQL 8 安装过程)并启动了 mysql 8 服务,并且确认了服务启动没有问题。
    定位问题:

    1. telnet 服务器的22 端口,访问正常
    2. netstat -ntpl |grep 3306 查看监听端口,没有问题
    3. telnet 服务器的3306端口,无法访问

    经过百度,发现是防火墙的问题。

    防火墙开启端口供其他访问

    1. 使用 firewalld 开启端口

    1、运行命令:

    firewall-cmd --get-active-zones
    

    运行完成之后,可以看到zone名称,如下:
    image

    2、执行如下命令命令:

    # --permanent 表示 永久生效
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    

    image

    3、重启防火墙,运行命令:

    firewall-cmd --reload
    

    4、查看端口号是否开启,运行命令:

    firewall-cmd --query-port=3306/tcp
    

    5、如果firewall 已经注销的了,运行以下命令可恢复:

    systemctl unmask firewalld
    

    image

    2. 使用 iptables

    在CentOS 7.x 的机器上,给指定主机和指定端口配置白名单的时候,发现机器的 /etc/sysconfig/ 目录下没有找到 iptables 文件。

    原因是因为CentOS 7.x 默认是使用 firewalld 服务作为防火墙,我们需要禁用该服务,安装 iptables 服务。

    1、停止 firewall 服务

    systemctl stop firewalld 
    

    2、注销 firewall 服务

    systemctl mask firewalld
    
    

    可以通过systemctl unmask firewalld 重新注册 firewalld 服务
    3、安装 iptables 服务

    yum install -y iptables 
    yum install iptables-services
    

    4、启动 iptables 服务

    systemctl start iptables
    

    或者

    service iptables start
    

    5、设置 iptables 开机自启动

    systemctl enable iptables
    

    6、查看 iptables 状态

    systemctl status iptables
    

    或者

    service iptables status
    

    image

    7、查看 iptables 文件
    此时可以在 /etc/sysconfig/ 目录下看到 iptables 文件
    image

    8、编辑 iptables 文件,加入防火墙规则

    vi /etc/sysconfig/iptables
    

    加入 3306 端口规则

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
    

    image

    注意: 3306 端口规则 一定不能是两个 icmp-host-prohibited 中间,否则仍然不能访问!

    ====== 错误示范========
    之前新增的规则,在两个 icmp-host-prohibited 中间,所以不能访问:
    image
    image
    ====== 错误示范========

    9、重启 iptables

    systemctl restart iptables.service
    

    然后再查看

    iptables -L -n
    

    image

    10、Telnet 服务器 3306 端口
    访问正常。

    iptables 一些命令

    # iptables 服务的停止命令
    systemctl stop iptables
    或者
    service iptables stop
    
    # iptables 服务的重启命令
    systemctl restart iptables
    或者
    service iptables restart
    
    
    # Saving firewall rules to /etc/sysconfig/iptables
    service iptables save
    
    # 重载 iptables 文件
    systemctl reload iptables
    或者
    service iptables reload
    
    # 查看已配置的iptables规则:
    
    iptables -n -L
    iptables -n -L --line-numbers
    
    
  • 相关阅读:
    使用Stream流递归 组合树形结构
    MySQL 8 通用表表达式
    sa-token 权限认证
    先更新缓存还是先更新数据库?
    钉钉 回调事件 消息加解密
    commons-io
    stream和parallelstream的区别
    消除if...else
    springboot 扩展xml请求和响应
    springboot admin 邮箱
  • 原文地址:https://www.cnblogs.com/lihw-study/p/15516056.html
Copyright © 2011-2022 走看看