请问在 NAT64 网络下怎么创建套接字(知道对方 ipv4 地址)? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
opentrade

请问在 NAT64 网络下怎么创建套接字(知道对方 ipv4 地址)?

  •  
  •   opentrade 2022 年 12 月 2 日 1858 次点击
    这是一个创建于 1242 天前的主题,其中的信息可能已经有所发展或是发生改变。

    苦于手头没有 NAT64 网络可以测试

    是本地创建一个 Ipv6Addr::UNSPECIFIED 的套接字,然后再 connect 到对方 ipv4 地址吗?还是我这边需要对 ipv4 地址做个转换,比如 IPv4-mapped addresses 。

    Jirajine
        1
    Jirajine  
       2022 年 12 月 2 日   1
    NAT64 有两种:
    一是配合 DNS64 为纯 ipv6 环境提供 ipv4 网络的访问。海外一些国家有提供的纯 ipv6 宽带使用这种方式,也有部分用户自己组建 ipv6 单栈局域网。这种情况网络就是纯 ipv6 的,只不过对解析 A 记录的域名,它会映射到一个 fake ipv6 地址,然后由上游网关 NAT 回去。
    这种网络因为是纯 ipv6 网络,你只能连接 ipv6 地址或域名,不能连接任何 ipv4 地址。当然理论上你可以探测一下当前 DNS64 使用的前缀并自己构造转换后的 ipv4 mapped address ,但应该是不符合规范的,按照设计这个转换应由网关进行对应用层透明。
    或者换一种 workaround ,使用或自己部署一个类似 https://nip.io/ 的公网服务,然后把 ip 地址包装成域名,这样网关就会帮你转换了。

    第二种自然就是上一种的逆过程。常见于当 ISP 为你提供上一种的纯 ipv6 宽带接入时,为了兼容部分协议和能正常访问 ipv4 网络,在自家网关路由器上部署,为下层设备提供正常的 ipv4 内网和 NAT 访问。这种情况对下层设备来说和普通无公网 ip 的 NAT 家宽一模一样。
    opentrade
        2
    opentrade  
    OP
       2022 年 12 月 2 日
    @Jirajine 谢谢你的讲解,我们的具体问题是我知道对方 ipv4 地址,没有 dns 的帮忙,怎么把它转换为 ipv6 地址?还是说直接自己转换,像这样,https://iplocation.io/ipv4-to-ipv6/1.1.1.1
    Jirajine     3
    Jirajine  
       2022 年 12 月 2 日   1
    @opentrade 可以自己转换,但这样不太规范。虽然一般都用 64:ff9b::/96 这个段,但这个是可以任意配置的。你可能得用一些 heuristic 的方式如先尝试连接某个域名,再探测网关返回的前缀,但网关其实是可以为不同 ip 返回不同前缀的。
    我想到的一个简单的 workaround 是利用类似 nip.io 的公网服务,如对方地址是 1.1.1.1 ,我直接连接 1.1.1.1.nip.io 这个域名就可以了。
    opentrade
        4
    opentrade  
    OP
       2022 年 12 月 2 日
    @Jirajine 谢谢, 感觉这个 workaround 非常靠谱
    opentrade
        5
    opentrade  
    OP
       2022 年 12 月 12 日
    @Jirajine nip.io 这个服务稳定吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     960 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 18:51 PVG 02:51 LAX 11:51 JFK 14:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86