Ich habe Dante sockd so konfiguriert, dass der Datenverkehr über mehrere IP-Schnittstellen weitergeleitet wird. Die Konfiguration sieht im Wesentlichen so aus:
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
}
Wenn „external.rotation = same.same“ deaktiviert ist, wird der Datenverkehr über den Server geleitet, geht aber nur von einer Adresse aus. Wenn es aktiviert ist, erhalte ich bei Verwendung von curl den folgenden Fehler:
curl: (7) Can't complete SOCKS5 connection to x.x.x.x:80. (3)
und dieser Fehler in den Protokollen:
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?
xxxx ist meine IP-Adresse, yyyy ist die serverseitige Adresse und zzzz ist die Zieladresse.
Das lässt mich darauf schließen, dass der Server erwartet, sich als meine Adresse auszugeben, dies jedoch nicht konfiguriert ist. Was korrekt ist, da ich möchte, dass der Datenverkehr so angezeigt wird, als käme er von der Adresse yyyy, obwohl über hundert davon zur Auswahl stehen.
Ich kann in der Dokumentation nichts finden, das zu dem angezeigten Fehler passt, und ich vermute, dass eine Art Round-Robin-Konfiguration erforderlich ist, aber die kann ich auch nicht finden. Hat das schon mal jemand auf diese Weise zum Laufen gebracht?
Antwort1
Folgendes hat bei mir mit Dante 1.4.2 auf CentOS 6.x 64bit funktioniert, obwohl ich keine Authentifizierung verwende, da ich über SSH-Tunnel auf Dante zugreife (die IPs meines Servers sind 1.1.1.1, 2.2.2.2 und 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
}
Anschließend habe ich von meinem Client-Rechner aus drei lokale Tunnel erstellt:
ssh -L 10801:1.1.1.1:1080 -L 10802:2.2.2.2:1080 -L 10803:3.3.3.3:1080 [email protected]
Ich glaube, die meisten Probleme, die ich mit den Einstellungen hatte, waren auf Berechtigungsprobleme (Client-Pass und Socks-Pass) zurückzuführen.
Wenn weiterhin Probleme auftreten, können Sie eine Alternative zu Dante ausprobieren: 3Proxy.
Sie würden 3proxy folgendermaßen konfigurieren:
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
Hoffe das hilft.
Antwort2
Haben Sie versucht, die IP-Weiterleitung für Ihr Betriebssystem zu aktivieren?
sysctl -w net.ipv4.ip_forward=1
oder
echo 1 > /proc/sys/net/ipv4/ip_forward
Mehr Informationen @http://linuxconfig.org/how-to-turn-on-off-ip-forwarding-in-linux