精华内容
下载资源
问答
  • 同一个网站,有同事反映说打不开,他们用的有windows,mac,ubantu系统的,后面自己在虚机上装了个ubantu 16.04 LTS,发现访问这个网站也是不成功,用telnet 端口的方式测试也是超时,还以为是ubantu的系统设置的问题...

    同一个网站,有同事反映说打不开,他们用的有windows,mac,ubantu系统的,后面自己在虚机上装了个ubantu 16.04 LTS,发现访问这个网站也是不成功,用telnet 端口的方式测试也是超时,还以为是ubantu的系统设置的问题,改了网卡MTU,内核参数,DNS啥的,异常还是存在,此时是陷入了迷惑之中:
    疑惑一:​我物理本机可以正常访问,而虚拟机却不可以,也用centos(公网上的)测试过,没问题
    疑惑二:我们周围几个都是可以的,其他的都是不行的
    疑惑三:对网站的IP可以ping通,但是telnet,wget,curl等方式却超时
    对于疑惑一,这让我感觉是不是ubantu的系统有问题,还是谷歌了好久,一无所获,直到我发现我一台centos的虚机也是访问不了​,此时我从ubantu系统的方向转向了可以ping通但是telnet超时这个方向上,找到了这个帖子
    https://2sitebbs.com/thread-1544-1-1.html​

    改了一下服务端的内核参数
    ​在文件/etc/sysctl.conf增加
    ​net.ipv4.tcp_timestamps = 0​
    sysctl -p


    ​让内核参数立即生效!
    问题马上解决了

    原理:​
    ​问题出在了 tcp 三次握手,ping 的通 icmp ok ,http ssh mysql 都不 ok
    经过nat之后,如果前面相同的端口被使用过,且时间戳大于这个链接发出的syn中的时间戳,服务器上就会忽略掉这个syn,不返会syn-ack消息,表现为用户无法正常完成tcp3次握手,从而不能打开 web页面。在业务闲时,如果用户nat的端口没有被使用过时,就可以正常打开;业务忙时,nat端口重复使用的频率高,很难分到没有被使用的端口,从而产生这种问题。​
    只有客户端和服务端都开启时间戳的情况下,才会出现能ping通不能建立tcp三次握手的情况
    在同一个内网的环境下,多人使用同一个公网IP进行上网,这样nat之后是大大增加了端口重复使用的概率,centos默认是开启了TCP/IP建立的timestamps,所以忽略syn导致TCP三次握手失败。

     

    展开全文
  • telnet 连接centos超时或者被拒绝

    千次阅读 2017-08-24 10:23:31
    今天在使用telnet连接centos时出现超时,就检查了一下: #iptables -L 检查防火墙,对应的端口是否被允许 #/etc/sysconfig/iptables 修改增加对应的端口 #service iptables restart 重启 又可以使用了

    今天在使用telnet连接centos时出现超时,就检查了一下:

    #iptables -L  检查防火墙,对应的端口是否被允许


    #/etc/sysconfig/iptables  修改增加对应的端口

    #service iptables restart 重启


    又可以使用了



    展开全文
  • Telnetip端口连接失败,但是我的Telnet服务都已经开启了: 如图解决: 原文链接:https://blog.csdn.net/buster2014/article/details/45847359

    Telnet  ip  端口,连接失败,但是我的Telnet服务都已经开启了:

    如图解决:

    原文链接:https://blog.csdn.net/buster2014/article/details/45847359

    展开全文
  • 局域网中的其他主机都可以telent服务器中的某个端口,为什么我的主机不能telent这个端口,本人的主机是win8.1的系统,已开启telnet客户端服务器,跪求高手支招! 歇息的
  • C程序实现带自定义超时时间的自动检测端口连通性的功能
    #ifdef _WIN32
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <WINSOCK2.H>
    #include <windows.h>
    #include <time.h>


    #else
    #include <time.h>
    #include <sys/time.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <sys/select.h>
    #include <unistd.h>
    #include <errno.h>
    #include <netdb.h>
    #endif




    typedef unsigned char UINT8;
    typedef unsigned short UINT16;
    typedef unsigned int UINT32;


    #ifdef _WIN32
    #pragma comment(lib, "ws2_32.lib")
    #endif


    #ifdef _WIN32
    #define EWOULDBLOCK WSAEWOULDBLOCK
    #define EINPROGRESS      WSAEINPROGRESS
    #define ETIMEDOUT            WSAETIMEDOUT
    #endif




    #ifndef _WIN32
    typedef int SOCKET;
    typedef struct sockaddr_in SOCKADDR_IN;


    #define closesocket close
    #define INVALID_SOCKET -1
    #define SOCKET_ERROR -1
    #endif


    #ifndef _WIN32
    int   GetLastError(void)
    {
    return errno;
    }
    #endif


    #ifdef _WIN32
    BOOL InitTCPIP(void)
    {
    WSADATA wsaData;

    if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)        //winsock2.2版本
    {
    printf("Init TCP:WSAStartup failed!\n");
    return FALSE;
    }
    if (wsaData.wVersion != 0x0202)                  //验证版本协商结果
    {
    WSACleanup();
    printf("Init TCP:wsaData.wVersion failed!\n");
    return FALSE;
    }

    return TRUE;
    }
    #endif
    /*
      当我们以非阻塞的方式来进行连接的时候,返回的结果如果是 -1,这并不代表这次连接发生了错误,
      如果它的返回结果是 EINPROGRESS(windows下返回EWOULDBLOCK),那么就代表连接还在进行中。 后面可以通过poll或者select来
      判断socket是否可写,如果可以写,说明连接完成了
      
      步骤1: 设置非阻塞,启动连接
      实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况:
      (1) 如果返回 0,表示 connect 成功。
      (2) 如果返回值小于 0, errno 为 EINPROGRESS, 表示连接建立已经启动但是尚未完成。这是期望的结果,不是真正的错误。
      (3) 如果返回值小于0,errno 不是 EINPROGRESS,则连接出错了。
      步骤2:判断可读和可写
      然后把 sockfd 加入 select 的读写监听集合,通过 select 判断 sockfd
      是否可写,处理三种情况:
      (1) 如果连接建立好了,对方没有数据到达,那么 sockfd 是可写的
      (2) 如果在 select 之前,连接就建立好了,而且对方的数据已到达,那么 sockfd 是可读和可写的。
      (3) 如果连接发生错误,sockfd 也是可读和可写的。
      判断 connect 是否成功,就得区别 (2) 和 (3),这两种情况下 sockfd 都是
      可读和可写的,区分的方法是,调用 getsockopt 检查是否出错。
      步骤3:使用 getsockopt 函数检查错误
      getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len)
      在 sockfd 都是可读和可写的情况下,我们使用 getsockopt 来检查连接
      是否出错。但这里有一个可移植性的问题。
      如果发生错误,getsockopt 源自 Berkeley 的实现将在变量 error 中
      返回错误,getsockopt 本身返回0;然而 Solaris 却让 getsockopt 返回 -1,
      并把错误保存在 errno 变量中。所以在判断是否有错误的时候,要处理这两种情况。
    */
    int connect_nonb(int sockfd, struct sockaddr *saptr, int salen, int nsec, int *err)
    {
    fd_set readset, writeset;
    struct timeval tm;
    int n, error, len;


    #ifdef _WIN32
    int nonblock = 1;
    n = ioctlsocket(sockfd, FIONBIO, &nonblock);
    if (n != 0)
    {
    (* err) = GetLastError();
    return SOCKET_ERROR;
    }
    #else
    int flag = fcntl(sockfd, F_GETFL, 0);
    fcntl(sockfd, F_SETFL, flag|O_NONBLOCK);
    #endif

    error = 0;
    n = connect(sockfd, saptr, salen);
    if (n != 0)
    {
    (* err) = GetLastError();
    if ((* err) != EINPROGRESS && (* err) != EWOULDBLOCK)
    {
    return SOCKET_ERROR;
    }
    }
    else 
    goto done;


    FD_ZERO(&readset);
    FD_ZERO(&writeset);
    FD_SET(sockfd, &readset);
    FD_SET(sockfd, &writeset);
    tm.tv_sec = nsec;
    tm.tv_usec = 0;

    n = select(sockfd + 1, &readset, &writeset, NULL, &tm);
    if (n == 0)
    {
    (* err) = ETIMEDOUT;
    return SOCKET_ERROR;
    }


    if (FD_ISSET(sockfd, &readset) || FD_ISSET(sockfd, &writeset))
    {
    len = sizeof(error);
    if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, (char *)&error, &len) <0)
    {
    (* err) = GetLastError();
    return SOCKET_ERROR;
    }
    }
    else
    printf("select error : sockfd not set");

    /*将套接字恢复为默认状态,即阻塞态*/
    done:
    #ifdef _WIN32
    nonblock = 0;
    n = ioctlsocket(sockfd, FIONBIO, &nonblock);
    if (n != 0)
    {
    (* err) = GetLastError();
    return SOCKET_ERROR;
    }
    #else
    fcntl(sockfd, F_SETFL, flag);
    if (error)
    {
    (* err) = error;
    return SOCKET_ERROR;
    }
    #endif
    return 0;
    }


    int main(int argc, char **argv)
    {
    char *ipaddr;
    SOCKADDR_IN addrSrv;
    UINT16 port;
    SOCKET sock;
    int err;


    if (argc != 3)
    {
    printf("input parameter's number error");
    return 1;
    }
    ipaddr = argv[1];
    port = (UINT16)atoi(argv[2]);
    printf("%s %d\n", ipaddr, port);

    #ifdef _WIN32
    if (!InitTCPIP())
    {
    printf("InitTCPIP error\n");
    return 1;
    }
    #endif

    addrSrv.sin_family = AF_INET;
    addrSrv.sin_addr.s_addr = inet_addr(ipaddr);
    addrSrv.sin_port = htons(port);


    if((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
    {
    printf("create socket error\n");
    return 1;
    }

    if (connect_nonb(sock, (struct sockaddr *)&addrSrv, sizeof(addrSrv), 3, &err) == SOCKET_ERROR)
    {
    printf("FAILURE\n");
    return 1;
    }


    closesocket(sock);
    printf("SUCCESS\n");


    return 0;

    }


    以下为纯linux下实现:

    实现方法二:

    #include <stdio.h>
    #include <unistd.h>


    int main(int argc, char *argv[])
    {
            int fd[2];
            if(argc <2)
            {
               printf("param less\n");
               return -1;
            }
            alarm(3);
            pipe(fd);
            
            write(fd[1], "\035", 1);      /* ^] */
            write(fd[1], "close\n", 6);
            
            close(fd[1]);
            dup2(fd[0], STDIN_FILENO);


            execlp("telnet", "telnet", argv[1], argv[2], 0);
    }


    实现方法三:

    #include <stdio.h>
    #include <unistd.h>


    int main(int argc, char *argv[])
    {
            int fd[2];
            if(argc <2)
            {
               printf("param less\n");
               return -1;
            }
            alarm(3);
            pipe(fd);
            
            close(fd[1]);
            dup2(fd[0], STDIN_FILENO);

            execlp("telnet", "telnet", argv[1], argv[2], 0);
    }


    实现方法四:

    #include <stdio.h>
    #include <unistd.h>


    int main(int argc, char *argv[])
    {
            int fd[2];
            if(argc <2)
            {
               printf("param less\n");
               return -1;
            }
            alarm(3);
            pipe(fd);

            execlp("telnet", "telnet", argv[1], argv[2], 0);
    }


    展开全文
  • # timout_second:超时时间,秒 # host: 域名 # port: 端口 echo -e '\x1dclose\x0d' | timeout --signal=9 {timout_second} telnet {host} {port}
  • 自己也百度了很多,都是复制黏贴,基本对解决问题没有太大帮助,我...虚拟机需要端口映射 1.安装redis命令 sudo apt-get install redis-server  2.修改配置文件 如果只用于本地访问不必修改redis.conf配置文...
  • 阿里云ECS机器TELNET服务器端口,,经常连接超时..找阿里云人员协助..发现宿主机负载过高,,进行ECS机器迁移,,,仍未解决..后来意外发现,这台机器开启了tcp_timestamps..关闭tcp_timestamps,连接超时问题解决..echo 0 &...
  • 服务器telnet oracle 数据库端口可以,但是plsql访问 tns超时 ...服务器 使用cmd telnet 1521数据库端口 是通的,但是数据库连接工具,plsql等登录都提示 TNS 操作超时,一直找信息科 说是ora 集群
  • windows下带超时telnet探测IP和端口

    千次阅读 2017-12-21 09:07:45
    玩树莓派由于没有屏幕,IP可能会跳,这时就不知道...其主要思想是:非阻塞的带超时的connect函数。 #include #include #pragma comment(lib, "ws2_32.lib") int telnet_test_tcp(char *ip,int port,int timeout
  • Golang telnet 端口

    2020-01-07 11:22:29
    golang 查看端口是否连通 func tcpGather(ip string, ports []string) map[string]string { // 检查 emqx 1883, 8083, 8080, 18083 端口 results := make(map[string]string) for _, port := range ports { ...
  • 昨天应同学的要求在自己公司的云平台找了一台云主机上部署了分布式文件系统 ...云主机的问题,果然一测试发现云主机的端口不能telnet通,在网上查了一些资料整理如下: 1、可能是端口没有起来,这一点不适用于我,
  • Telnet 连接时很慢,及无法连接的问题

    千次阅读 2018-04-19 11:33:28
    Telnet连接慢 在 telnet 192.168.x.x 时,发现可以连接成功,但是很慢,大概需5秒左右, 在百度后发现是DNS反向解析的问题 解决: 1.注掉 /etc/resolv.conf 里的内容 (略粗暴,没法ping外网了) 首次测试的确ok,...
  • telnet连接失败的常见错误

    千次阅读 2020-01-18 20:36:23
    telnet提示“在端口23:连接失败”,说明没有开启telnet服务。 解决方法如下 1、在运用telnet命令时经常显示不是内部或外部命令,或无法打开到主机的连接,在端口23:连接失败,如下图。 2、点击左下角控制面板,...
  • linux 远程服务连接超时连接不上

    千次阅读 2019-03-06 13:41:19
    linux 远程服务连接超时连接不上1.测试是否可以ping通2.若能ping通则网络连接正常,telnet测试端口3.查看防火墙状态4.若防火墙开启,则需要设置防火墙策略允许当前端口通行 1.测试是否可以ping通 在本机ping远程...
  • 一般我们在测试 端口 和ip 是否 可以 访问时 我们 使用 ping和 telnet 来测试 ping: 主要是 用来 测试 ip 是否 可以 正常访问 ping通 但是 不可以 测试一些端口号是否可用。 ping 域名或者ip --这里 不带协议 ...
  • redis通过6379端口无法连接服务器 ...按照顺序依次检查了防火墙,安全组,密码,配置文件,都确认没有问题之后,再次启动redis,依然是服务器可以访问,本地telnet都无法连接。这个问题很像是防火墙
  • 阿里服务器部署了一个API站点,端口为8079,本地电脑怎么telnet到这个端口都不成功 排查 防火墙 要么把防火墙全部关闭,或者配置入站出站规则,这里我是直接关闭服务器的防火墙 查看端口是否正常监听 确保系统内部...
  • 程服务连接不上,或连接超时解决路径: 1、测试网络是否通: ping 远程IP 2、如果能ping通则表示与服务器网络连接是正常,接下来测试端口telnet 远程ip 端口 3、如果telnet不上,要考虑服务器是否有防火墙拦截...
  • Redis连接超时(解决)

    2021-01-20 16:57:09
    连接超时 connect timed out 总体上有一下几点(个人观点,如有不同欢迎提醒) 1,ip地址配置不同 2,用Linux虚拟机防火墙未关闭 3,连接池数量达到了最大值 4,网络问题
  • 排查:先在B上用telnet 尝试连接连接A的11211端口超时。换用另外的机器来telnet A 的11211端口,正常。用B去telnet另一台机器的开放端口,也正常。用B telnet A的其他端口,例如 22,也不正常。
  • // 检查 emqx 1883, 8083, 8080, 18083 端口 results := make(map[string]string) for _, port := range ports { address := net.JoinHostPort(ip, port) // 3 秒超时 conn, err := net.DialTimeou
  • 最近由于换了新的服务器,配置更高了,所以装了个Server 2016(之前装的是Server 2008),结果个别客户就无法访问了,无法访问的客户电脑telnet到80端口是不通的,也ping不通网站 查了半天不知道哪里的问题,又急于...
  • 之前用的win10家庭版,使用securecrt8.0连接虚拟机ubuntu系统,SSH连接,总是显示连接超时。 在虚拟机中ping主机IP,可以接通,在主机中ping虚拟机IP总是超时。关闭防火墙也没有用。 虚拟机使用的NAT连接,无法...
  • 当我们想访问dubbo接口时,会用到telnet方法, 运行 telnet127.0.0.1:20880 会报错 原因是 ip与端口间不要加符号 解决办法: 去掉冒号,用空格隔开即可 telnet127.0.0.1 20880 ...
  • 在学习zookeeper中,通过api的方式创建连接时,一直报超时,于是就使用:telnet ip:2181 这个命令看是不是端口的问题。结果我的天,太扎心了: 此处红牌警告: “telnet ip 端口号”这个命令ip和端口号之间没有...
  • 脚本实现telnet检测指定机器端口的连通性,先通过ping检测ip的连通性,接着通过telnet检测指定端口的连通性

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,249
精华内容 10,499
关键字:

telnet端口连接超时