• Linux 测试端口是否放行


    1、准备

    首先准备两台服务器:服务器A、服务器B

    在服务器A装上端口测试工具netcat

    yum list | grep netcat
    
    • 1

    在这里插入图片描述

    yum install netcat
    
    • 1

    2、在 CentOS 7 上放行端口,你可以使用以下方法:

    1. 使用 firewalld(推荐):

      • 检查 firewalld 服务状态:
        sudo systemctl status firewalld
        
        • 1
      • 如果 firewalld 未运行,则启动它:
        sudo systemctl start firewalld
        
        • 1
      • 检查防火墙状态:
        sudo firewall-cmd --state
        
        • 1
      • 如果防火墙处于非活动状态,启用它:
        sudo systemctl enable firewalld
        sudo systemctl restart firewalld
        
        • 1
        • 2
      • 放行端口:
        sudo firewall-cmd --zone=public --add-port=20/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=21/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=22222/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=11111/tcp --permanent
        sudo firewall-cmd --zone=public --add-port=10000/tcp --permanent
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
      • 更新防火墙规则:
        sudo firewall-cmd --reload
        
        • 1
    2. 使用 iptables:

      • 检查 iptables 服务状态:
        sudo systemctl status iptables
        
        • 1
      • 如果 iptables 未运行,则启动它:
        sudo systemctl start iptables
        
        • 1
      • 检查防火墙状态:
        sudo iptables -L -n
        
        • 1
      • 如果防火墙处于非活动状态,启用它:
        sudo systemctl enable iptables
        sudo systemctl restart iptables
        
        • 1
        • 2
      • 放行端口:
        sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 22222 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 11111 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
      • 保存 iptables 规则:
        sudo service iptables save
        
        • 1

    以上方法将允许指定端口通过 CentOS 7 的防火墙。请记住,这些设置可能需要管理员权限进行操作(使用 sudo)。

    4、错误解决:[root@localhost backup]# netcat -l -p 11111 netcat: cannot use -p and -l 装了netcat不能用

    如果你在使用 netcat 命令时遇到 “-p” 和 “-l” 参数不能同时使用的问题,可能是因为你的 netcat 版本较老,不支持同时使用这两个参数。

    你可以尝试使用不同的方法启动监听模式来代替 “-l -p” 参数的使用。以下是两种可能的替代方法:

    1. 使用 nc 监听端口(替代 “-p” 和 “-l”):

      nc -vv -l 11111
      
      • 1
    2. 使用 socat 命令作为 netcat 的替代品:

      socat TCP-LISTEN:11111,reuseaddr,fork -
      
      • 1

    请确保你已经正确安装了 netcat 或 socat。如果你没有安装 netcat 或 socat,你可以使用包管理器(如 apt、yum 等)进行安装,或者从官方网站下载并手动安装。

    可以了,那我另一台机器怎么访问这个端口去测试

    要从另一台机器上的终端访问已在第一台机器上开放的端口进行测试,你可以使用以下命令:

    nc <第一台机器的 IP 地址> 11111
    
    • 1

    需要将 “<第一台机器的 IP 地址>” 替换为第一台机器的实际 IP 地址。这将建立一个与第一台机器指定端口的 TCP 连接。

    如果连接成功,你可以在第二台机器的终端上键入任何内容并按 Enter 发送,这些内容将被发送到第一台机器上的端口。你可以通过观察第一台机器上终端的输出来验证连接和通信是否成功。

    5、能用telnet去测试吗

    是的,你可以使用 telnet 命令在另一台机器上测试连接到开放的端口。请确保你的机器上安装了 telnet 客户端。

    在命令提示符下,使用以下命令连接到第一台机器的指定端口:

    telnet <第一台机器的 IP 地址> 11111
    
    • 1

    将 “<第一台机器的 IP 地址>” 替换为实际的 IP 地址,“11111” 替换为已开放的端口号。

    如果连接成功,你将看到终端打印出与该端口的连接信息。你可以在 telnet 连接建立后向服务器发送数据进行测试。

    注意:如果 telnet 连接不成功,或者 telnet 命令未找到,可能需要安装 telnet 客户端或确认目标机器的防火墙是否允许传入的 telnet 连接。

    6、效果:

    服务器A:
    在这里插入图片描述
    服务器B:
    在这里插入图片描述

    • 在服务器B链接要测试的服务器端口,并输入字符,服务器A那边会将收到的字符显示出来,这就表示端口可以用,反之直接连接不上根本输入不了
  • 相关阅读:
    # 磁盘引导方式相关知识之BIOS、msdos、MBR、UEFI、gpt、esp、csm
    js事件循环与macro&micro任务队列-前端面试进阶
    再一次整理一下spring框架步骤
    康耐视visionpro定位引导标定简介及方法
    lvgl v8 linux下使用xmake交叉编译移植
    【数据结构----KMP算法】校招笔试题总结
    Mysql(数据库)知识详解终章~{日志,Mycat}
    启动hdfs伪分布式模式过程中格式化namenode报错
    基于java+SpringBoot+HTML+Mysql线上视频购买学习
    DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?
  • 原文地址:https://blog.csdn.net/weixin_43576565/article/details/133790695