V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
liuyulvv
V2EX  ›  云计算

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

  •  1
     
  •   liuyulvv · 149 天前 · 3279 次点击
    这是一个创建于 149 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟以学生优惠购入一台腾讯轻量应用服务器,目前正在学习 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 条回复    2021-07-24 23:58:38 +08:00
    OysterQAQ
        1
    OysterQAQ  
       149 天前   ❤️ 1
    大厂都这样 弹性 ip 随时分离添加
    westoy
        2
    westoy  
       149 天前   ❤️ 1
    绑定 0.0.0.0
    Muninn
        3
    Muninn  
       149 天前
    都这样
    phithon
        4
    phithon  
       149 天前
    和轻量没关系,云主机都是这个样
    Tink
        5
    Tink  
       149 天前 via Android
    弹性吧
    dreamage
        6
    dreamage  
       149 天前   ❤️ 1
    一对一 NAT
    baoshuo
        7
    baoshuo  
       149 天前 via Android
    好多大厂这样,一般监听 0.0.0.0 即可。
    billlee
        8
    billlee  
       149 天前
    云服务器的网络都是复杂的 SDN

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

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