
Eu sei como os servidores proxy funcionam por dentro e por fora, em teoria, mas a prática está tirando o melhor de mim.
Preciso configurar um proxy SOCKS na mesma rede do meu IP de gerenciamento para que ele permaneça abstraído dos usuários. Eu tenho um cluster vCenter no qual posso implantar qualquer sistema operacional recomendado, mas para simplificar, aqui está a configuração:
- IP de gerenciamento do sistema de armazenamento = 10.244.244.15
- IP da VM SUSE11 = 10.244.244.10
- IP do Windows XP = 10.244.244.5
No sistema SUSE, executei o ssh -ND 1080 <user>@<storage mgmt ip>
, mas isso não resultou em conectividade ponta a ponta.
Eu estava executando um tcpdump
na mesma porta naquele momento e vi algumas tentativas de tráfego:
17:42:26.669953 IP 10.x.x.x.54214 > x.x.com.socks: S 3287828135:3287828135(0) win 5840 <mss 1460,sackOK,timestamp 6708230 0,nop,wscale 6>
17:42:26.669968 IP x.x.com.socks > 10.x.x.x.54214: R 0:0(0) ack 3287828136 win 0
Perguntas gerais:
- Menos importante, o que eu fiz acima?
- Mais importante ainda, como posso configurar um proxy SOCKS neste ambiente?
Responder1
A conexão SSH provavelmente está escutando apenas na interface de loopback (127.0.0.1) devido à configuração GatewayPorts na configuração SSHD. Seu comando funcionará se GatewayPorts estiver definido como sim.
netstat -an | grep LISTEN
mostrará se está escutando na interface pública. Você pode forçá-lo a ouvir na interface pública com
ssh -ND <ip address>:<port> <user>:<host>
mas somente se GatewayPorts permitir que você faça isso.
GatewayPorts
Specifies whether remote hosts are allowed to connect to ports
forwarded for the client. By default, sshd binds remote port
forwardings to the loopback address. This prevents other remote
hosts from connecting to forwarded ports. GatewayPorts can be
used to specify that sshd should allow remote port forwardings to
bind to non-loopback addresses, thus allowing other hosts to con-
nect. The argument may be "no" to force remote port forwardings
to be available to the local host only, "yes" to force remote
port forwardings to bind to the wildcard address, or
"clientspecified" to allow the client to select the address to
which the forwarding is bound. The default is "no".
Meu palpite é que GatewayPorts está definido como não. Altere para sim (in /etc/ssh/sshd_config
) e então seu comando ssh deverá funcionar inalterado, mas você pode usar o endereço IP da interface para ser específico, apenas por precaução.
NB: Além disso, você deve verificar se não possui regras de iptables bloqueando conexões de entrada.
Um proxy ssh funcionará, mas pode ser bastante lento (sobrecarga de criptografia). Você pode querer procurar um proxy de meias dedicado, comomeias.