首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dante sockd不能通过多个虚拟IP转发流量

Dante sockd不能通过多个虚拟IP转发流量
EN

Server Fault用户
提问于 2015-05-15 12:15:17
回答 1查看 8.5K关注 0票数 4

我已经将Dante配置为通过多个IP接口转发通信量。配置基本如下:

代码语言:javascript
复制
logoutput: /var/log/sockd.log
debug: 1
socksmethod: username none

internal: eth0 port = 60000
external: eth0
internal: eth0:0 port = 60000
external: eth0:0
internal: eth0:1 port = 60000
external: eth0:1
internal: eth0:2 port = 60000
external: eth0:2
...

external.rotation: same-same

client pass {

  from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0

  socksmethod: username

}

socks pass {

from: 0.0.0.0/0 to: 0.0.0.0/0

socksmethod: username

protocol: tcp udp

}

使用“external.rotation=same.same”,禁用的通信将通过服务器传递,但只会从一个地址流出。启用它时,我将使用curl获得以下错误:

代码语言:javascript
复制
curl: (7) Can't complete SOCKS5 connection to x.x.x.x:80. (3)

日志中的错误:

代码语言:javascript
复制
May 15 07:38:38 (1431689918.007569) sockd[4887]: info: block(1): tcp/accept ]: x.x.x.x.56066 y.y.y.y.60000: request was not performed due to error: could not get address to use on external side: using external.rotation = same-same, local address x.x.x.x was selected for forwarding from our local client x.x.x.x.56066 to target z.z.z.z.80, but that local address is not set on our external interface(s).  Configuration error in /etc/sockd.conf?

X.x是我的ip地址,Y.Y是服务器端地址,Z.Z是目标地址。

这意味着服务器希望伪装成我的地址,但它没有配置,这是正确的,因为我希望流量被视为来自Y.Y地址,其中有100多个地址可供选择。

我在文档中找不到与我所看到的错误相匹配的任何东西,我怀疑需要某种循环配置,但我也找不到。有人这样做过吗?

EN

回答 1

Server Fault用户

发布于 2017-12-16 04:03:30

以下内容适用于CentOS 6.x 64位上的Dante1.4.2,尽管我不使用身份验证,因为我通过SSH隧道访问Dante (我的服务器的IP是1.1.1.1、2.2.2.2和3.3.3.3):

代码语言:javascript
复制
logoutput: syslog stdout stderr /var/log/sockd.log
internal: eth0:0 port = 1080
internal: eth0:1 port = 1080
internal: eth0:2 port = 1080
external: eth0:0
external: eth0:1
external: eth0:2
external.rotation: same-same
user.privileged: root
user.unprivileged: sockd
#user.libwrap: sockd
clientmethod: none
socksmethod: none
client pass {
    from: 1.1.1.1/32 to: 0.0.0.0/0
    log: error # connect disconnect
}
client pass {
    from: 2.2.2.2/32 to: 0.0.0.0/0
    log: error # connect disconnect
}
client pass {
    from: 3.3.3.3/32 to: 0.0.0.0/0
    log: error # connect disconnect
}
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bind connect udpassociate
    log: error # connect disconnect iooperation
}
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bindreply udpreply
    log: error # connect disconnect iooperation
}

然后从我的客户端机器创建了三个本地隧道:

代码语言:javascript
复制
ssh -L 10801:1.1.1.1:1080 -L 10802:2.2.2.2:1080 -L 10803:3.3.3.3:1080 user@1.1.1.1

我认为我在设置中遇到的大部分问题都是由于权限问题(客户端通行证和袜子通行证)。

如果你仍然有问题,你可以尝试一个替代但丁:3 3Proxy。

您将以这种方式配置3代理:

代码语言:javascript
复制
nserver 8.8.8.8
auth none
daemon
socks -p1080 -i1.1.1.1 -e1.1.1.1
socks -p1080 -i2.2.2.2 -e2.2.2.2
socks -p1080 -i3.3.3.3 -e3.3.3.3
pidfile /var/run/3proxy.pid
log /dev/null

希望这能有所帮助。

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/692286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档