Я установил алгоритм на 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.
Ура.