使用Telnet检查服务器防火墙连通性

Posted Rolei_zl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Telnet检查服务器防火墙连通性相关的知识,希望对你有一定的参考价值。

  1. 需求
    - 申请开通防火墙(TCP/UDP、客户端IP、服务器IP、服务端口),验证防火墙是否开通(客户端到服务器是否连通)
  2. 分析
    - Windows客户端使用
    - IP,Port信息保存在txt文件中
    - 使用telnet命令验证连通性 -- telnet host_IP host_Port
    - 使用python实现
  3. 实现
    1)检查客户端telnet命令
    ## connect fail
    > telnet 127.0.0.1 8022
    正在连接127.0.0.1...无法打开到主机的连接。 在端口 8022: 连接失败
    
    如果window客户端telnet无法调用,参考如下步骤:
    控制面板 -> 程序和功能 -> 启用或关闭Windows功能 -> 选中Telnet客户端 -> 确认后安装
    2)python调用telnet命令,检查客户端->服务器连通性

          - 安装python环境(自行安装,此处略)
          - 引用telnet相关方法
    import telnetlib
          - 客户端 -> 服务器连通性检查
            > 从文件读入服务器地址信息:Host IP
            > 从文件读入服务器访问端口:Host Port
    with open(file_name,'r') as fp:
        flist = fp.readlines()       # 读取所有文件
        for f in flist:              # 解析每一行数据
            fl = f.split(" ")        # 分解host_ip 和 host_port 
            ip = fl[0]               # host_ip
            port = fl[1]             # host_port
    
    ########## 行数据特殊处理
    # 当前空行,继续下一行数据
    f = f.strip()
    if f == "":
        continue
    
    # host_ip 和 port之间只保留1个空格
    while f.find("  ") != -1:
         f.replace("  "," ")
    
    # tab键(\\t)替换为1个空格
    f = f.replace('\\t'," ")
    
    # 回车/换行(\\n, \\r)替换为空字符
    f = f.replace('\\n','')
    f = f.replace('\\r','')
    
    # 同一IP多个port字符串,以“/”分隔不同的port
    port = port.split("/")
    for p in port:
        # telent命令执行,以p为端口
    
            > 执行telnet命令:telnet host_IP  host_Port
    telnetlib.Telnet(ip, port)   # 执行telnet命令
                                 # 成功返回连通数据;失败返回异常信息
            > 值判断并输出连通结果
    try:
        telnetlib.Telnet(ip, port)    # 连通正常,返回success
        print("Connect Success!")
    except:
        print("Connect Fail!")        # 连通异常,返回fail
    
            > 保存结果到文件
    with open(file_name,"a") as fp:        # 以增量方式添加结果到文件
         fp.write(result_data + "\\n")
    
    ########## 文件特殊处理
    # 每次执行生成不同文件,文件名区分,将文件名加入时间戳 timestamp
    import time
    
    timestamp = time.strftime("%Y%m%d%H%M%S",time.localtime())
    file_name = file_name + "_" + timestamp + ".txt"
  4. 程序发布
    1)安装 pyinstaller 工具
    pip install pyinstaller
    2)生成exe文件
         > CMD,进入代码py文件所在目录
         > 执行pyinstaller命令生成exe文件
    CMD
    
    > cd [path of file_name]
    > pyinstaller -F file_name.py    # 生成file_name.exe
    3)执行结果示例
    Blank
    Wrong Data: 127.0.1.2 
    Success: 127.0.1.2         80   
    Success: 127.0.1.2         80   
    Fail   : 127.0.1.2         81   
    Fail   : 127.0.1.2         82   
    Success: 192.168.1.1       80   
    Success: 127.0.0.1         80   
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    Fail   : 192.168.1.5       8080 
    
    #################################################### 
     >  Total count:    17 
     >  Success  IP:     4 
     >  Fail     IP:    11 
     >  Wrong  Data:     1 
     >  Blank      :     1 
    

以上是关于使用Telnet检查服务器防火墙连通性的主要内容,如果未能解决你的问题,请参考以下文章

在Linux服务器上检查TCP/UDP端口的连通性

怎样检测TCP/UDP端口的连通性

网络端口连通性检查(telnetnc和tcpdump)

验证TCP端口连通性-telnet方法和telnet协议RFC854

阿里云ECS无法连接到服务器怎么解决?

linux测试网络是不是连通的命令