Dante sockd não pode encaminhar o tráfego através de vários IPs virtuais

2

Eu configurei o Dante sockd para encaminhar o tráfego através de várias interfaces IP. A configuração é basicamente isto:

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

}

Com o tráfego desabilitado 'external.rotation = same.same' é passado pelo servidor, mas só sai de um endereço. Quando está ativado, recebo o seguinte erro usando o curl:

curl: (7) Can't complete SOCKS5 connection to x.x.x.x:80. (3)

e este erro nos registros:

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.x.x é o meu endereço IP, y.y.y.y é o endereço do lado do servidor e z.z.z.z é o endereço de destino.

Isso sugere para mim que o servidor espera se passar por meu endereço, mas não está configurado, o que é correto, pois quero que o tráfego seja visto como proveniente do endereço yyyy, onde há mais de cem deles para escolher.

Não consigo encontrar nada na documentação que corresponda ao erro que estou vendo e suspeito que haja algum tipo de configuração de round robin necessária, mas também não consigo encontrar. Alguém fez esse trabalho dessa maneira?

    
por Simon Greenwood 15.05.2015 / 14:15

2 respostas

1

O seguinte funcionou para mim com o Dante 1.4.2 no CentOS 6.x 64bit, embora eu não use autenticação porque acesso Dante via túneis SSH (os IPs do meu servidor são 1.1.1.1, 2.2.2.2 e 3.3.3.3 ):

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
}

Em seguida, criei três túneis locais a partir da minha máquina cliente:

ssh -L 10801:1.1.1.1:1080 -L 10802:2.2.2.2:1080 -L 10803:3.3.3.3:1080 [email protected]

Acho que a maioria dos problemas que tive com as configurações foi reduzida a problemas de permissão (passagem do cliente e meias passam).

Se você ainda tiver problemas, tente uma alternativa ao Dante: 3Proxy.

Você configuraria o 3proxy desta maneira:

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

Espero que isso ajude.

    
por 16.12.2017 / 05:03
0

Já tentou ativar o encaminhamento de IP para o seu SO?

sysctl -w net.ipv4.ip_forward=1

ou

echo 1 > /proc/sys/net/ipv4/ip_forward

Mais informações @ link

    
por 08.01.2016 / 13:43

Tags