複数のIPインターフェースを介してトラフィックを転送するようにDantesockdを構成しました。設定は基本的にこれです:
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'を無効にすると、トラフィックはサーバーを通過しますが、1つのアドレスからのみ送信されます。有効にすると、curlを使用して次のエラーが発生します。
curl: (7) Can't complete SOCKS5 connection to x.x.x.x:80. (3)
そしてログのこのエラー:
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は私のIPアドレス、y.y.y.yはサーバー側のアドレス、z.z.z.zは宛先アドレスです。
これは、サーバーが私のアドレスになりすますことを期待しているが、構成されていないことを示唆しています。これは、トラフィックが100を超えるy.y.y.yアドレスから送信されているように見せたいので正しいです。
私が見ているエラーに一致するものがドキュメントに見つからず、何らかのラウンドロビン構成が必要であると思われますが、それも見つかりません。誰かがこのようにこの作品を作ったことがありますか?
以下は、CentOS 6.x64ビット上のDante1.4.2で機能しましたが、SSHトンネルを介してDanteにアクセスするため認証を使用しません(サーバーのIPは1.1.1.1、2.2.2.2、および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
}
次に、クライアントマシンから3つのローカルトンネルを作成しました。
ssh -L 10801:1.1.1.1:1080 -L 10802:2.2.2.2:1080 -L 10803:3.3.3.3:1080 [email protected]
設定に関する問題のほとんどは、権限の問題(クライアントパスとソックスパス)にあると思います。
それでも問題が解決しない場合は、Danteの代わりに3Proxyを試すことができます。
3proxyは次のように構成します。
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
お役に立てれば。
OSでIP転送を有効にしてみましたか?
sysctl -w net.ipv4.ip_forward=1
または
echo 1 > /proc/sys/net/ipv4/ip_forward
詳細情報@ http://linuxconfig.org/how-to-turn-on-off-ip-forwarding-in-linux