• 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那边会将收到的字符显示出来,这就表示端口可以用,反之直接连接不上根本输入不了
  • 相关阅读:
    杰理之应用配置文件《app_config.c》介绍【篇】
    地图上根据圆心经纬度、半径 创建多边形存储(JS/MYSQL实现)
    Ubuntu卸载python,重启电脑后进入tty1界面,无法进入图像化界面
    Lingo基础语法笔记
    sqoop连接MYSQL报错处理
    【蓝桥杯选拔赛真题46】Scratch潜艇游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
    全数字系列-麦克风K歌模组-搭配投影仪专业方案
    西门子PLC的优势在哪呢?
    2022年 6 月面试题 100 + 大全(合适各级 Java 人员)
    由于找不到mfc100u.dll,无法继续执行代码的详细处理方法分享
  • 原文地址:https://blog.csdn.net/weixin_43576565/article/details/133790695