Как отправить запрос на сервер, который находится в той же сети VPN

Я установил альго- сервер в Digital Ocean (под управлением Ubuntu), запустил в него sshed и написал небольшой http-сервер, который принимает запросы и возвращает "hello world".

Я успешно подключил свой ноутбук (macos) к VPN.

Однако, когда я вызываю конечную точку (используя ip сервера vpn (на Digital Ocean, localhost или даже ip локальной сети (я думаю)), она не проходит.

Чтобы найти локальный IP-адрес компьютера, на котором размещен сервер, я использую команду: ifconfig eth0 | grep inet | grep -v inet6

Это вернуло 3 IP-адреса (inet, netmask, broadcast) и я попытался вызвать их все с моего ноутбука, думая, что один из них может быть частным IP-адресом сервера. Отправка любых запросов к ним не работает.

Я также развернул еще одну каплю Digital Ocean без алгоритма VPN и разместил тот же сценарий http-сервера, чтобы проверить, не испортил ли я запись сервера. К счастью, когда я позвонил, я получил "Привет, мир".

И последнее, что я хочу упомянуть. Когда я использовал curl localhost:8080/ когда я был sshed на машине, я получал "привет мир".

Я действительно плохо знаком с сетью в целом, и, насколько мне известно, после подключения к VPN вам придется вызывать ip частного сервера, на котором размещен vpn, для отправки данных на сервер. Вы бы НЕ использовали публичный ip сервера (тот, который я использовал для ssh).

Если кто-нибудь знает, как отправить данные с моего клиента на мой сервер через мой VPN, это было бы замечательно!

0 ответов

Я знаю, что это старо, но так как я новичок, я думал, что промокну ногами с некоторыми старыми без ответа вопросами. Надеюсь, что это кому-то поможет, и если бы ответ был лучше, не возражал бы против конструктивной критики

Что, как говорится...

Если вы используете VPN, вы должны быть в состоянии настроить и знать частные IP-адреса рассматриваемого сервера. Используйте частный IP для подключения. Например, в EC2 частный IP-адрес будет доступен через Консоль AWS, где бы ни находился ваш сервер. Это даже можно изменить. Если у вас есть частный IP-адрес, если вы пытаетесь подключиться, но не можете, то вы, скорее всего, не перечисляете по этому IP-адресу. попробуй обслужить на 0.0.0.0 который бы слушал на всех интерфейсах.

другими словами 10.0.0.1!= 127.0.0.1, но 0.0.0.0 == 10.0.0.1 || 127.0.0.1 || somewebsite.com || локальный

слушать на всех интерфейсах:

simplehttpserver --host 0.0.0.0

слушайте только на локальном хосте (что может быть вашим случаем), если это так, используйте 0.0.0.0 или используйте обратный прокси-сервер, такой как nginx и proxy_pass приватный ip на желаемом порту на правильный адрес.

server {
    listen       80;
    server_name  someurl.com  10.0.0.1;

    location / {
             proxy_pass http://127.0.0.1/
    }
}

упрощенный...

Допустим, вы используете модуль узла simplehttpserver... измените это:

simplehttpserver --host 127.0.0.1

к этому:

simplehttpserver --host 0.0.0.0

последний будет слушать на всех интерфейсах...

У вас также может быть брандмауэр, такой как ufw, или вам может понадобиться настроить netables.

Есть много способов получить частный IP-адрес рассматриваемого сервера. За транслятором сетевых адресов обычно они находятся на расстоянии нескольких цифр. Чтобы получить этот адрес, вы можете использовать ifconfig и найти сетевой интерфейс, который вы используете в этой сети. Или, как я уже говорил выше, пройти через хост VPN. Если вы являетесь хостом, перейдите к вашей конфигурации и найдите и / или настройте частный IP / диапазон. Если запутался, просто убедитесь, что вы не используете публичный IP.

частные адреса IPv4 = от 10.0.0.0 до 10.255.255.255. 172.16.0.0 до 172.31.255.255

ifconfig

ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 172.31.32.98  netmask 255.255.240.0  broadcast 172.31.47.255
        inet6 fe80::4c2:8eff:fe3c:7b1c  prefixlen 64  scopeid 0x20<link>
        ether 06:c2:8e:3c:7b:1c  txqueuelen 1000  (Ethernet)
        RX packets 1176424  bytes 733671273 (733.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2570640  bytes 1796660017 (1.7 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

172.31.32.98 будет адресом во внутренней сети, на котором работает интерфейс ens5, и другие пользователи в локальной сети должны иметь возможность подключиться к нему. Например, если вы запускаете приложение для разработки на порту 4000, пользователь в той же сети на 172.31.32.64 сможет подключиться к этому порту (если вы слушаете его) и проверить свое приложение для разработки. Транслятор сетевых адресов создает эти адреса и присваивает их каждому члену в подсети, не сильно отличаясь от того, что ваш маршрутизатор делает с публичным IP-адресом в Интернете.

Надеюсь, это поможет. Новое на сервере.

Приветствия.

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