Python Socket соединение через 2 разные сети

Я знаю, что есть множество подобных вопросов, но ни один из них не помог мне. Я пытаюсь подключить компьютер и VM, которые находятся в 2 разных сетях.

Сервер:

import socket

HOST = '0.0.0.0'  
PORT = 1080  

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

server_socket.bind((HOST, PORT))

server_socket.listen(5)  
print("\n Listening on port " +str(PORT)+ ", waiting for client to connect...")


client_socket, (client_ip, client_port) = server_socket.accept()
print("[+] Client " +client_ip+ " connected!\n")


while True:
    try:
        command = raw_input(client_ip+ ">")
        if(len(command.split()) != 0):
            client_socket.send(command)
        else:
        continue
    except Exception,e:
        print("[-]Something went wrong")
                continue

    if(command == "stop"):
        break

    data = client_socket.recv(1024)
    print(data + "\n")

client_socket.close()

Как видите, я открыл сервер, который прослушивает порт 1080 и принимает все соединения. Я выключил брандмауэр Windows и брандмауэр SPI. Я также перенаправил порт 1080(Nmap Scan находит его и говорит, что он открыт).

Клиент:

import socket
import platform
HOST = "output of whatismyipaddress.com when run on server computer" 
PORT = 1080 # port(same as on server.py)

connection_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
connection_socket.connect((HOST, PORT))
print("\n[*] Connected to " +HOST+ " on port " +str(PORT)+ ".\n")

while True:

    command = connection_socket.recv(1024)
    split_command = command.split()
    print("Received command : " +command)

    if (command == "stop"):
        break
    elif (command == "info"):
        connection_socket.send(("Info: " + str(tuple(platform.uname()))))
connection_socket.close()

Таким образом, клиент отправляет данные на сервер, а сервер отправляет команды клиенту.

Я предполагаю, что клиенту не нужно переадресовывать порт.

Клиент (vm) был подключен к Android HotSpot. Сервер был подключен к маршрутизатору с переадресованным портом. Я выбрал мостовое соединение для VM и подключил к нему свою внешнюю карту Wi-Fi.

Сервер начал слушать, и клиент запустился. Я получаю сообщение об ошибке, что сервер не отвечает должным образом через некоторое время при попытке подключения. Я также попытался подключиться с использованием шлюза по умолчанию, но безуспешно.

Я немного запутался, потому что Википедия говорит:

Шлюз по умолчанию в компьютерной сети - это узел, который должен знать, как пересылать пакеты в другие сети. Как правило, в сети TCP/IP узлы, такие как серверы, рабочие станции и сетевые устройства, имеют определенный параметр маршрута по умолчанию (указывающий на шлюз по умолчанию), определяющий, куда отправлять пакеты для IP-адресов, для которых они не могут определить конкретный маршрут.,

Что я понимаю, так как он используется для связи через 2 разные сети? В любом случае, кто-нибудь знает, как я могу решить эту проблему и что я делаю не так?

0 ответов

Другие вопросы по тегам