Назад | Перейти на главную страницу

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

Я установил алгоритм на Digital Ocean (под управлением Ubuntu), подключились к нему и написали небольшой 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/ когда я сидел на машине, я получал "привет, мир".

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

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

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

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

Если вы используете 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 || localhost

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

simplehttpserver --host 0.0.0.0

слушать только на localhost (что может быть вашим случаем), в таком случае используйте 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-адресом в Интернете.

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

Ура.