:INPUT DROP :FORWARD DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP
不论是 v4 还是 v6,大多路由器默认的防火墙规则基本都是这样配置的,要开放一个端口到公网就需要通过路由器接口等方式来修改这个防火墙规则才能让公网的流量进入。当某些情况下无法或者是不方便这个防火墙规则,比如:
那么要实现 v6 的端口开放或者说两点之前直接互访,是不是还是得借助类似 v4 nat 打洞或 upnp 这样的技术才能实现呢?有没有简单的实现按理可以参考呢?现有的很多开源 BT 软件他们是不是都实现了 v6 直接点对点通讯呢
1
Jirajine 2022-10-20 12:04:59 +08:00
都有公网 ipv6 的情况下打洞不要太简单,直接两边各监听一个端口,互相发包就行。两边的防火墙的状态追踪是不能同步的,双方都会认为是我方主动建立的连接。
不像 NAPT 情况下你需要先确定一个公网可达的 socket 映射。 |
2
leonshaw 2022-10-20 12:13:11 +08:00
UDP 直接对发,TCP 绑好端口互相 connect 。
|
4
JohnBull 2022-10-20 13:15:41 +08:00
没看懂,规则都加在 INPUT 链里面了,怎么可能控制不了?
|
5
acbot OP @JohnBull 描述中我已经举例了。
"...当某些情况下无法或者是不方便这个防火墙规则,比如: 1. 路由器根本没有提供配置防火墙的接口或者是不掌握防火墙控制权的情况; 2. 应用端口随机不固定的情况;..." |
7
Jirajine 2022-10-20 13:52:09 +08:00
@acbot 通过其他信道交换 socket 地址。
如中心服务器、用户手动输入、用户扫码编码到 id 里让用户通过 IM 等工具发送给对方等等。 |
9
smallthing 2022-10-20 16:40:12 +08:00
@acbot 中心服务器。ID 分享。甚至根据时间范围+IP 地址生成固定浮动端口号。
|
10
acbot OP @smallthing 谢谢,所以要实现真正的点对点通讯(双方端口不定,地址不定的情况),其实还是得要一个类似 NAT 4 得那种打洞服务器才行,只是 v6 这个服务器功能要简单得多,只需要提供端口这些信息就行了!
|
11
smallthing 2022-10-21 20:42:44 +08:00
@acbot 可以双方约定算法决定端口范围 然后互相探测。
|