V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tamer
V2EX  ›  问与答

云服务器能否通过客户机 mac 地址反查到客户机实时公网 ip

  •  
  •   tamer · 2019-01-09 13:28:03 +08:00 · 1332 次点击
    这是一个创建于 2147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景是这样: 主机与客户机采用 udp 连接, 客户机的 ip 随时可能变更, 所以主机保存了客户机发送过来的 mac 地址作为客户机标识.

    当主机下发报文时, 需要先获取客户机实时的 ip 才能发送过去.

    那么问题就来啦: 我发现云服务器 arp -a的输出是

    _gateway (192.168.0.1) at fa:16:3e:54:ba:e2 [ether] on eth0
    ? (192.168.0.253) at fa:16:3e:9f:a3:f3 [ether] on eth0
    ? (192.168.0.254) at fa:16:3e:36:9b:65 [ether] on eth0
    ? (192.168.0.66) at fa:16:3e:56:e4:3d [ether] on eth0
    ? (192.168.0.21) at <incomplete> on eth0
    
    

    似乎根本就不会记录外网 ip???

    有没巨佬能科普一下, 给个办法或者思路, 我在网络通信方面着实菜鸡, 提前感谢!

    第 1 条附言  ·  2019-01-09 15:23:38 +08:00

    结贴, 谢谢各位

    我就是个瓜皮

    xenme
        1
    xenme  
       2019-01-09 13:41:04 +08:00
    难道不是 ip+port 来通信的?
    客户端哪个 IP 和端口发过来的,直接哪个地址和端口回就好了么。
    singerll
        2
    singerll  
       2019-01-09 13:43:58 +08:00 via Android
    客户机是公网 ip ?
    mhycy
        3
    mhycy  
       2019-01-09 13:45:06 +08:00
    MAC 地址是二层交换所用,上层通讯只需要关心 IP 地址,
    UDP 经过 NAT 以后端口有效时间不定,即便加了心跳也不一定长期有效
    务必注意开发时候的断流处理
    tamer
        4
    tamer  
    OP
       2019-01-09 14:54:27 +08:00
    @xenme 端口是固定了的, 但是 ip 可能会发生变化, 因为 mac 不会变, 所以现在需要 mac 查 ip
    ashes1122
        5
    ashes1122  
       2019-01-09 14:56:58 +08:00
    @tamer 获取不到客户的 mac 地址的。
    0myun
        6
    0myun  
       2019-01-09 15:00:51 +08:00
    @tamer #4 你得知道。。mac 是可以自己改的。。并不是 11 对应关系
    tamer
        7
    tamer  
    OP
       2019-01-09 15:05:35 +08:00
    @ashes1122 mac 是客户机首次通信时发送到服务端的数据的一部分
    tamer
        8
    tamer  
    OP
       2019-01-09 15:06:26 +08:00
    @0myun 嗯, 场景是 mac 不变, ip 可能会发生变化
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5934 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:09 · PVG 10:09 · LAX 18:09 · JFK 21:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.