V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acbot
V2EX  ›  程序员

ipv6 点对点通讯的问题

  •  
  •   acbot · 2022-10-20 11:52:43 +08:00 · 1332 次点击
    这是一个创建于 757 天前的主题,其中的信息可能已经有所发展或是发生改变。

    :INPUT DROP :FORWARD DROP

    -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP

    不论是 v4 还是 v6,大多路由器默认的防火墙规则基本都是这样配置的,要开放一个端口到公网就需要通过路由器接口等方式来修改这个防火墙规则才能让公网的流量进入。当某些情况下无法或者是不方便这个防火墙规则,比如:

    1. 路由器根本没有提供配置防火墙的接口或者是不掌握防火墙控制权的情况;
    2. 应用端口随机不固定的情况;

    那么要实现 v6 的端口开放或者说两点之前直接互访,是不是还是得借助类似 v4 nat 打洞或 upnp 这样的技术才能实现呢?有没有简单的实现按理可以参考呢?现有的很多开源 BT 软件他们是不是都实现了 v6 直接点对点通讯呢

    11 条回复    2022-10-21 20:42:44 +08:00
    Jirajine
        1
    Jirajine  
       2022-10-20 12:04:59 +08:00
    都有公网 ipv6 的情况下打洞不要太简单,直接两边各监听一个端口,互相发包就行。两边的防火墙的状态追踪是不能同步的,双方都会认为是我方主动建立的连接。
    不像 NAPT 情况下你需要先确定一个公网可达的 socket 映射。
    leonshaw
        2
    leonshaw  
       2022-10-20 12:13:11 +08:00
    UDP 直接对发,TCP 绑好端口互相 connect 。
    acbot
        3
    acbot  
    OP
       2022-10-20 12:42:48 +08:00
    @Jirajine
    @leonshaw 谢谢!如果双方的端口是随机的,是不是还是得需要有一个查询过程?
    JohnBull
        4
    JohnBull  
       2022-10-20 13:15:41 +08:00
    没看懂,规则都加在 INPUT 链里面了,怎么可能控制不了?
    acbot
        5
    acbot  
    OP
       2022-10-20 13:25:14 +08:00
    @JohnBull 描述中我已经举例了。

    "...当某些情况下无法或者是不方便这个防火墙规则,比如:

    1. 路由器根本没有提供配置防火墙的接口或者是不掌握防火墙控制权的情况;
    2. 应用端口随机不固定的情况;..."
    leonshaw
        6
    leonshaw  
       2022-10-20 13:31:34 +08:00
    @acbot 随机端口那肯定要某种方式互相通知
    Jirajine
        7
    Jirajine  
       2022-10-20 13:52:09 +08:00
    @acbot 通过其他信道交换 socket 地址。
    如中心服务器、用户手动输入、用户扫码编码到 id 里让用户通过 IM 等工具发送给对方等等。
    acbot
        8
    acbot  
    OP
       2022-10-20 13:59:55 +08:00
    smallthing
        9
    smallthing  
       2022-10-20 16:40:12 +08:00
    @acbot 中心服务器。ID 分享。甚至根据时间范围+IP 地址生成固定浮动端口号。
    acbot
        10
    acbot  
    OP
       2022-10-20 17:13:22 +08:00
    @smallthing 谢谢,所以要实现真正的点对点通讯(双方端口不定,地址不定的情况),其实还是得要一个类似 NAT 4 得那种打洞服务器才行,只是 v6 这个服务器功能要简单得多,只需要提供端口这些信息就行了!
    smallthing
        11
    smallthing  
       2022-10-21 20:42:44 +08:00
    @acbot 可以双方约定算法决定端口范围 然后互相探测。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:26 · PVG 23:26 · LAX 07:26 · JFK 10:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.