Recommended Services
› Amazon Web Services
› LeanCloud
› New Relic
› ClearDB
liuyulvv
V2EX  ›  云计算

腾讯轻量应用服务器 ifconfig 没有公网 IP

  •  1
     
  •   liuyulvv · Jul 9, 2021 · 6678 views
    This topic created in 1947 days ago, the information mentioned may be changed or developed.

    小弟以学生优惠购入一台腾讯轻量应用服务器,目前正在学习 Linux C++开发,今天在学习 socket 编程,代码也是很简单的代码:

    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <signal.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <assert.h>
    #include <stdio.h>
    #include <string.h>
    
    static bool stop = false;
    
    static void handle_term(int sig)
    {
        stop = true;
    }
    
    int main(int argc, char *argv[])
    {
        signal(SIGTERM, handle_term);
    
        if (argc <= 3)
        {
            printf("usage: %s ip_address port_number backlog\n", basename(argv[0]));
            return 1;
        }
    
        const char *ip = argv[1];
        int port = atoi(argv[2]);
        int backlog = atoi(argv[3]);
    
        int sock = socket(AF_INET, SOCK_STREAM, 0);
        assert(sock >= 0);
    
        struct sockaddr_in address;
        bzero(&address, sizeof(address));
        address.sin_family = AF_INET;
        inet_pton(AF_INET, ip, &address.sin_addr);
        address.sin_port = htons(port);
    
        int ret = bind(sock, (struct sockaddr *)&address, sizeof(address));
        assert(ret != -1);
    
        ret = listen(sock, backlog);
        assert(ret != -1);
    
        while (!stop)
        {
            sleep(1);
        }
    
        close(sock);
        return 0;
    }
    

    g++ -o main main.cpp后,终端运行./main 公网 IP 12345 5 ,然后就在bind后面 assert 退出了,bind 失败。确定代码没问题,我直接把可执行文件传到 Digitalocean 的机器上,运行程序,成功。

    纳闷了,然后两台机器 ifconfig,DO 的机器出现了公网 IP,腾讯的没出现公网 IP,只有内网的 IP 和 localhost,我就在腾讯上 ./main 内网 IP 12345 5,能运行!,DO 上 telnet 腾讯的公网 IP,成功?!!!

    还有这种操作?我在内网 IP 上 bind,结果给我“映射”到公网 IP 上了,这是咋做到的,为啥不让我 bind 公网的 IP 嘞

    23 replies  •  2021-07-24 23:58:38 +08:00
    OysterQAQ
    OysterQAQ
    Jul 9, 2021❤️1
    1
    大厂都这样 弹性 ip 随时分离添加
    westoy
    westoy
    Jul 9, 2021❤️1
    2
    绑定 0.0.0.0
    Muninn
    Muninn
    Jul 9, 2021
    3
    都这样
    phithon
    phithon
    Jul 9, 2021
    4
    和轻量没关系,云主机都是这个样
    Tink
    Tink
    Jul 9, 2021 via Android
    5
    弹性吧
    dreamage
    dreamage
    Jul 9, 2021❤️1
    6
    一对一 NAT
    baoshuo
    baoshuo
    Jul 9, 2021 via Android
    7
    好多大厂这样,一般监听 0.0.0.0 即可。
    billlee
    billlee
    Jul 10, 2021
    8
    云服务器的网络都是复杂的 SDN

    试试 arping, 你会发现这个内网接口还有 arp 代理
    no1xsyzy
    no1xsyzy
    Jul 10, 2021
    9
    你想多了,你内网不 bind 直接 telnet 公网 IP 也会收到(控制台屏蔽除外)
    jedihy
    jedihy
    Jul 10, 2021
    10
    大厂 SDN 都是这样的。你本机没有那个 IP 所以你是不可能直接 bind 上去的。bind wildcard 或者 external nic 的 IP 都行。
    mightofcode
    mightofcode
    Jul 10, 2021
    11
    阿里的轻量也这样
    我记得以前不是这样的
    Xusually
    Xusually
    Jul 10, 2021 via iPhone
    12
    直接 bind 0.0.0.0 即可
    mutoudaren
    mutoudaren
    Jul 10, 2021
    13
    我猜跟 docker 一个原理。你在 docker 容器里面也是只有内网 ip,但是如果在容器里面 bind 0.0.0.0 。然后 docker run 的时候指定端口绑定,也可以在外部通过访问 host 的 ip 来访问 docker 容器内部。

    所以云主机本身应该也就是一个高级的”docker 容器“
    opentrade
    opentrade
    Jul 10, 2021
    14
    Aws EC2 里看到的也是内网 IP 和 127.0.0.1 。Vultr 的 VPS 看到的倒是公网 IP 。
    julyclyde
    julyclyde
    Jul 10, 2021❤️3
    15
    @mutoudaren 现在的人认识计算机都是以 docker 为标准模型了嘛
    msaionyc
    msaionyc
    Jul 10, 2021❤️3
    16
    @julyclyde 最后一句那个“也就是”让我笑了半天
    freecloud
    freecloud
    Jul 10, 2021
    17
    用显示的内网 IP,试试。
    Foxkeh
    Foxkeh
    Jul 10, 2021
    18
    同样的阿里云现在新购买的主机只能选择专有网络,ifconfig 也是这样了。
    根据阿里云官网文档解释这种更安全一些
    PeacePeach
    PeacePeach
    Jul 11, 2021 via iPhone
    19
    @julyclyde
    @msaionyc 两位已 b
    adoal
    adoal
    Jul 11, 2021 via iPhone
    20
    没听说过 NAT 吗
    lc7029
    lc7029
    Jul 11, 2021
    21
    一对一 nat
    Jessica8821
    Jessica8821
    Jul 23, 2021
    22
    腾讯云轻量新老用户同价,享终身续费同价,再赠一年顶级域名,大家可以咨询我哦:17602378821 (微信)
    opengps
    opengps
    Jul 24, 2021
    23
    类似于 dmz 主机的全端口 nat 转发就理解了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1723 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 14:21 · PVG 22:21 · LAX 06:21 · JFK 09:21
    ♥ Do have faith in what you're doing.