CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

1. CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 21/12/2016 - 07:24h

Pessoal, essa dúvida vem me enchendo a cabeça há uns dias. Já fiz testes e obtive resultados meia boca...

é o seguinte:

é possível conectar-me em uma máquina que esteja usando outra rede? Sem ter que subir servidor web!
Apenas conexão TCP/IP, TCP/UDP. (usando socket,sys,os.. as libs básicas. Algo simples realmente...)


por exemplo, eu executo o script server que vai receber as conexões, arquivos etc. e preciso que esse mesmo servidor possa se conectar em um ip interno de outra maquina. Ou vice versa!

conseguir conexões locais é fácil! faço toda hora servidores e clientes TCP/IP.

Agora, por questões de aprendizado, gostaria de saber se HÀ COMO, sem usar gambiarras, conectar minha máquina em outra que esteja fora da minha rede.

(POR EXEMPLO:

Eu estou em são paulo, e a máquina que vai lidar com a conexão está em outro estado

Como eu faria para conseguir a conexão? Usando headers http, talvez?

Há alguma exemplo (solução) simples e didática?


Hipoteticamente: estou no meu computador, de repente preciso enviar um relatório da faculdade para um colega ou professor, que está em outra rede, e o único meio que ele tem para receber o arquivo seria por meio dessa conexão... hipoteticamente, é claro.

Mas imaginemos a seguinte situaçao: a pessoa está em um computador com conexao ruim, e tem esse serviço de conexão ao meu server para poder liberar o arquivo para ele.

E caso comentem, quero tanto quanto preciso aprender a fazer conexões desse tipo! Sem depender de FTP, ssh e outras ferramentas.



Por favor, qualquer exemplo ou opnião será de extrema ajuda!

Paz a todos


  


2. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Takahashi
signout

(usa Slackware)

Enviado em 21/12/2016 - 07:44h

Boas...

A sua duvida ficou um tanto confusa e se a resposta não for a que voce busca, peço desculpas.
Uma conexão entre maquinas de rede distintas não depende de headers ou qualquer coisa da parte de aplicação/libs/ferramentas, depende da parte de rede(roteamento).
Ex.:

server1=192.168.0.10
default gateway server1=192.168.0.1
server2=192.168.10.10
default gateway server2=192.168.10.1

Basicamente para conexão do server1 para o server2 é necessário que o server1 conheça a rede do server2 e vice-versa.
Isso pode ser feito colocando uma rota estática no server1 apontando por onde ele deve passar para chegar ao server2 e o server2 deve ter uma rota estatica de resposta.
Uma outra alternativa seria que o default gateway do server1 conheça a rede do server2 e o default gateway do server2 conheça a rede do server1.

Espero que ajude.
[]s


3. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 21/12/2016 - 07:56h

signout escreveu:

Boas...

A sua duvida ficou um tanto confusa e se a resposta não for a que voce busca, peço desculpas.
Uma conexão entre maquinas de rede distintas não depende de headers ou qualquer coisa da parte de aplicação/libs/ferramentas, depende da parte de rede(roteamento).
Ex.:

server1=192.168.0.10
default gateway server1=192.168.0.1
server2=192.168.10.10
default gateway server2=192.168.10.1

Basicamente para conexão do server1 para o server2 é necessário que o server1 conheça a rede do server2 e vice-versa.
Isso pode ser feito colocando uma rota estática no server1 apontando por onde ele deve passar para chegar ao server2 e o server2 deve ter uma rota estatica de resposta.
Uma outra alternativa seria que o default gateway do server1 conheça a rede do server2 e o default gateway do server2 conheça a rede do server1.

Espero que ajude.
[]s




Opa, amigo! obrigado pela rápida resposta...

imaginei que poderia ficar confuso estender tanto a questão.

vou simplificar:

Tenho um server numa cidade, usando de uma rede cabeada ou wifi... e preciso me conectar (transmitir arquivos, mensagens,,,) nela a partir de outra rede! Uma rede qualquer...

Suponha a seguinte situação:

Estou na cidade onde faço minha faculdade. E então preciso enviar um arquivo pra alguém da minha família (conta de luz, água... etc) , o server1 estaria sendo executado, pronto para receber os arquivos do server2.

Entende?

Os IP's internos não são relevantes nesse contexto, então?



Teria algum exemplo para me passar?


GRATO!



4. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 21/12/2016 - 08:00h

há algum exemplo de roteamento gateway que tu citou? ajudaria bastante!

Pois ainda não vejo como fazer isso... ; / Apenas conexoes locais...

:Preciso de conexão remota, sem a limitação de estar na mesma rede!!!


5. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Takahashi
signout

(usa Slackware)

Enviado em 21/12/2016 - 08:20h

Boas,

Na verdade, faltaram alguns detalhes, a resposta anterior foi pensando que voce estava em uma empresa, no esquema matriz-filial e que voce tinha acesso a parte WAN.
Se voce não tem controle sobre a parte WAN da conexão, então depende mais de saber o ip de destino (que voce receberá via dhcp do provedor) e se a porta de conexão para envio do arquivo não esta sendo barrada pelo provedor ou pelo roteador que esta sendo usado.
No caso do seu exemplo (faculdade->casa), voce precisa saber qual o ip externo (ip fornecido pela operadora) para voce efetuar a conexão.
Se na sua casa voce utilizar o linux tambem, de uma lida nestas url:

https://www.vivaolinux.com.br/topico/Servidores-Linux-para-iniciantes/Acesso-externo./
http://www.dicas-l.com.br/arquivo/acesso_remoto_a_maquinas_linux_via_internet.php#.WFpVBlwxBB1
https://www.vivaolinux.com.br/topico/Servidores-Linux-para-iniciantes/Acesso-remoto-com-ssh-via-inte...

Espero que ajude
[]s



6. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 21/12/2016 - 09:41h

signout escreveu:

Boas,

Na verdade, faltaram alguns detalhes, a resposta anterior foi pensando que voce estava em uma empresa, no esquema matriz-filial e que voce tinha acesso a parte WAN.
Se voce não tem controle sobre a parte WAN da conexão, então depende mais de saber o ip de destino (que voce receberá via dhcp do provedor) e se a porta de conexão para envio do arquivo não esta sendo barrada pelo provedor ou pelo roteador que esta sendo usado.
No caso do seu exemplo (faculdade->casa), voce precisa saber qual o ip externo (ip fornecido pela operadora) para voce efetuar a conexão.
Se na sua casa voce utilizar o linux tambem, de uma lida nestas url:

https://www.vivaolinux.com.br/topico/Servidores-Linux-para-iniciantes/Acesso-externo./
http://www.dicas-l.com.br/arquivo/acesso_remoto_a_maquinas_linux_via_internet.php#.WFpVBlwxBB1
https://www.vivaolinux.com.br/topico/Servidores-Linux-para-iniciantes/Acesso-remoto-com-ssh-via-inte...

Espero que ajude
[]s



Boas dicas, amigo!

Já fiz o redirecionamento com iptables, que é uma grande jogada

Sendo assim, as conexão vão estar liberadas para máquina destino?

E então o server fica na escuta por solicitações do cliente, (seja de arquivos, mensagens etc...) certo?


Eu estou implementando um código em Python aqui!

Isso vai me salvar!

Já tenho um rascunho do código

Dá uma olha e vê o que você acha:



# servidor na escuta por solitações

import socket
import sys

s = socket.socket()
s.bind (('',9999))
port = 9999
s.listen(10) ## aceita 10 conexões, logo, 10 transferências.

while True:
print '\nAccepting connections... port %s active\n' %(port)
sc, address = s.accept()

print address
i=1
f = open('Copy'+ str(i)+"",'wb') # abre o arquivo
i=i+1
while (True):
# arquivo recebido e passado para pasta '/' ou '~/'
l = sc.recv(1024)
while (l):
f.write(l)
l = sc.recv(1024)
f.close()


sc.close()

s.close


###########

# cliente a fazer solicitações

import socket

s = socket.socket() # Ciração do objeto soquete
host = socket.gethostname() # nome da máquina
port = 9999 # porta reservada para conexão

s.connect((host, port))
f = open(r"F:\teste\\BLACK SABBATH (FULL).mp4", "rb") # arquivo previamente selecionado

print 'Sending...'
l = f.read(1024)

while (l):
print 'Sending...'
s.send(l)
l = f.read(1024)
f.close()

print "Done Sending"
s.shutdown(socket.SHUT_WR)

print s.recv(1024)
s.close



poderia assim trocar os host's pelos ip's externos das máquinas para conseguir a conexão?

ou o servidor tem que permanecer aceitando todas? vide '0.0.0.0'

abração!



7. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 21/12/2016 - 09:48h

Em execução:

http://prnt.sc/dm4tdt


8. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Takahashi
signout

(usa Slackware)

Enviado em 21/12/2016 - 09:50h

Boas,
Então, se for só para enviar arquivos, voce pode usar o scp mesmo, mas caso voce queira realmente implementar esse script, então o que precisa ser feito é na verdade ver se o roteador da sua casa (ou do destino) esta mandando as requisições para o servidor que esta na rede local. O endereço de listen pode ser o da maquina local mesmo.
Algo do tipo:

origem->>internet->>roteador->>servidor.

Espero que ajude.
[]s


9. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 21/12/2016 - 09:54h

signout escreveu:

Boas,
Então, se for só para enviar arquivos, voce pode usar o scp mesmo, mas caso voce queira realmente implementar esse script, então o que precisa ser feito é na verdade ver se o roteador da sua casa (ou do destino) esta mandando as requisições para o servidor que esta na rede local. O endereço de listen pode ser o da maquina local mesmo.
Algo do tipo:

origem->>internet->>roteador->>servidor.

Espero que ajude.
[]s


Mandando requisições tu se refere ao serviço das portas? Se há alguma aberta para a conexão?

assim só tenho que configurar o roteador para aceitar conexões na porta x? que será redirecionado para o meu server


10. Re: CONEXÂO ENTRE MÁQUINAS USANDO DIFERENTES REDES

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 21/12/2016 - 13:02h

Para responder sua pergunta tenho que perguntar, o que é uma rede? O que são pacotes tcp/udp? Como é feita uma conexão local?

DE MODO CRU!!!

Eu costumo imaginar uma rede como uma cidade, onde, os carros são os pacotes tcp/udp e etc. Tendo em vista isso, posso dizer que para um carro (Pacote) ir de uma rua para outra ele precisa passar por uma esquina (gateway ...), certo?

Sempre que você se conecta a "localhost", "127.0.0.1", "::1" os pacotes jamais saem da sua máquina, eles são passados diretamente para os serviços em execução.

E se você diz para um socket se conectar a "www.goole.com" e ai ????

Simples, o kernel toma as decisões precisando somente conhecer o gateway da rede, para saber qual é o da sua, use:
route -n 


Se a rota para o gateway existir, então, o pacote é enviado para ele e se o endereço de destino for na mesma rede ele entrega para a máquina. Se o pacote tem o destino para a rede externa o gateway toma a decisão de enviar o pacote para o próximo hop

O próximo hop é um termo de roteamento que se refere a rota mais perto pelo qual um pacote pode passar. O próximo hop está entre a série de roteadores que estão conectados em uma rede e é o próximo destino possível de um pacote de dados. É um endereço IP em uma tabela de roteamento do roteador, que especifica o roteador mais próximo ou ideal em seu caminho de roteamento.

Enquanto o pacote não chega ao destino é feito esse processo, cada um entrega para o próximo se o pacote não for dele ou da sua rede.


______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts