Dante SOCKS5 代理服务器无法在 ipv6 上运行

Dante SOCKS5 代理服务器无法在 ipv6 上运行

在测试和输入此命令期间

curl -x socks5://<user>:<pass>@<ip>:<port> ifconfig.co

它返回一条错误消息

Can't complete SOCKS5 connection to <ip address v6>

当我们禁用 ipv6 时,curl 测试就可以工作,但这不是正确的方法。尝试应用本教程但仍然没有成功

http://www.inet.no/dante/doc/latest/config/ipv6.html

=================================================== ===========

但丁配置文件

logoutput: /var/log/socks.log
internal: enp0s3 port = 1080
external: enp0s3
clientmethod: none
socksmethod: none
user.privileged: root
user.notprivileged: nobody

client pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: error connect disconnect
}
client block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error
}
socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: error connect disconnect
}
socks block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error
}

答案1

来自https://www.inet.no/dante/doc/1.4.x/config/ipv6.html

仅当使用接口名称(例如,外部:eth0)或主机名(例如,内部:dante-int)在 sockd.conf 中指定 Dante 的内部或外部接口地址时,才需要在仅 IPv4 使用场景中对 sockd.conf 进行更改。 example.com),这些接口名或主机名现在或将来可能将包含 IPv6 地址。

如果内部接口是通过其名称(而不是其 IP 地址之一)指定的,Dante 服务器将默认使用在内部接口上找到的所有地址。如果接口有一个或多个 IPv6 地址,这将导致 Dante 服务器也使用 IPv6 地址。

检查接口是否enp0s3已分配 ipv6 地址,如果是,则 dante 正在尝试使用它。考虑到这一点,enp03s用 ipv4 地址替换 应该可以解决这个问题。

例子:

internal: 10.2.4.6 port = 1080

答案2

要使 Dante 服务器接受 IPv4 和 IPv6 地址上的请求,必须指定具有两种类型地址的网络接口作为内部 sockd.conf 关键字的参数,或者使用不同的地址多次指定该关键字。例如:

#accept SOCKS requests on 10.0.0.1 (IPv4) and fc00::01 (IPv6)
internal: 10.0.0.1 port = 1080
internal: fc00::1  port = 1080

Dante 的配置文件还需要两种地址类型的规则。

#accept connections from any IPv4 client
client pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
}

以上是 IPv4 地址规则的示例,该规则将允许任何 IPv4 客户端连接到 Dante 服务器。 IPv6 的等效规则如下所示:

#accept connections from any IPv6 client
client pass {
        from: ::/0 to: ::/0
}

上述两条规则仅匹配一种地址类型,第一个仅匹配 IPv4,第二个仅匹配 IPv6。要添加接受任何地址(无论地址族如何)的规则,可以使用以下特殊的 Dante 特定地址语法 (0/0):

#accept connections from any client
client pass {
        from: 0/0 to: 0/0
}

相关内容