Как отправить запрос на сервер, который находится в той же сети 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-адресом в Интернете.
Надеюсь, это поможет. Новое на сервере.
Приветствия.