ImCylon
(usa Slackware)
Enviado em 28/07/2013 - 02:10h
Olá todos,
a questão é: quero acessar mais de um servidor ssh, por exemplo:
server_ssh01 -> ssh -f -C2qTnN -D 127.0.0.1:1080 user@xxx.xxx.xxx.xxx
server_ssh02 -> ssh -f -C2qTnN -D 127.0.0.1:1081 user@xxx.xxx.xxx.xxx
dai então o programa X acessaria server01 e programa Y acessaria server 02.
É claro que a solução trivial seria socks4-5, contudo os programas que eu tive acesso- tsocks, torsocks, proxyschains - todos apresentaram problemas de conexão. Pelo que li suspeito que o problema seja com "statically linked executables" ou "asynchronous".
Segue a analise resumida dos pacotes com wireshark:
Sem uso de socks e sem ssh:
SOURCE_________________DESTINATION____________PROTOCOL________INFO
192.168.1.4______________XXX.XXX.XX.X______________TCP_____________PORT_A > PORT_B [SYN]...
XXX.XXX.XX.X_____________192.168.1.4_______________TCP_____________PORT_B > PORT_A [SYN,ACK]...
192.168.1.4______________XXX.XXX.XX.X______________TCP_____________PORT_A > PORT_B [ACK]...
192.168.1.4______________XXX.XXX.XX.X______________TCP_____________PORT_A > PORT_B [PSH,ACK]...
XXX.XXX.XX.X_____________192.168.1.4_______________TCP_____________PORT_B > PORT_A [PSH,ACK]...
192.168.1.4______________XXX.XXX.XX.X______________TCP_____________PORT_A > PORT_B [ACK]...
192.168.1.4______________192.168.1.101_____________TCP_____________PORT_A > PORT_C [SYN]...
192.168.1.101____________192.168.1.4_______________TCP_____________PORT_C > PORT_C [SYN,ACK]...
E assim segue até se conectar definitivamente com o XXX.XXX.XX.X
Com o uso de socks+ssh fica a assim (server_ssh01=YYY.YYY.YYY.YYY):
SOURCE_________________DESTINATION____________PROTOCOL__________INFO
192.168.1.4______________YYY.YYY.YYY.YYY___________SSH_____________Encrypted request packet
YYY.YYY.YYY.YYY__________192.168.1.4_______________TCP_____________ssh > PORT_D [ACK]
YYY.YYY.YYY.YYY__________192.168.1.4_______________SSH_____________Encrypted response
192.168.1.4______________YYY.YYY.YYY.YYY___________SSH_____________Encrypted request packet
YYY.YYY.YYY.YYY__________192.168.1.4_______________TCP_____________ssh > 48384 [ACK]
YYY.YYY.YYY.YYY__________192.168.1.4_______________SSH_____________Encrypted response packet
192.168.1.4______________YYY.YYY.YYY.YYY___________SSH_____________Encrypted request packet
YYY.YYY.YYY.YYY__________192.168.1.4_______________TCP_____________ssh > 48384 [ACK]
Aqui a conexão fica aberta sem respostas pois a máquina 192.168.1.4 não se conecta à 192.168.1.101 que funciona como servidor via lan - OS windows XP.
Em resumo, quando executo o programa em perl ele pergunta ao servidor XXX.XXX.XXX.XXX se pode se conectar, dai o outro responde e assim vai. Nesse vai e vem de pacotes chega uma hora que a resposta requerida pelo servidor XXX.XXX.XXX.XXX está na máquina 192.168.1.101. Contudo, quando uso socks 192.168.1.4 não se conecta ao servidor via lan(192.168.1.101), bem esse é o meu problema com os socks.
Agora vamos à solução que imaginei com utilizando iptables --uid-owner.
Estava pensando em criar vários usuários e executar o perl, por exemplo, userPERL01, dai neste usuário daria para colocar um regra com: iptables --uid-owner userPERL01, mas não entendo nada de iptables. Fiz várias tentativas sem sucesso, mas acredito que a mais próxima foi:
#iptables -t nat -A OUTPUT -p tcp -mowner --uid-owner userPERL01 -j REDIRECT --dport 1080
Obrigado.