Здравствуйте, dmitry251, Вы писали:
D>Есть такое, да. но как узнать какой порт "нужный"?
D>Т.е. получается это провайдер должен направить выданный белый ip на [куда? адрес роутера?] и выдать порт???
Провайдер должен только выдать белый IP.
Мысленно удалим роутер и подключим этот компьютер непосредственно к проводу от провайдера. Установим на нем этот белый IP. Все, что идет на этот IP, попадет на этот компьютер.
Теперь вернем роутер и белый IP дадим ему. Все пойдет на него, а он должен перебросить на этот компьютер.
Какие порты — зависит от того, что там на этом сервере. Если там HTTP сервер, то 80 обычно, если FTP — 21 и 22. Ну и т.д.
Здравствуйте, dmitry251, Вы писали:
D>я вот к нему щас подключился удаленно, открываю в браузере этот самый белый ip. D>выдается пустая корневая директория "\"
D>получается, что какой-то комп отвечает.
D>как понять, какой? =) в роутере для 80 порта ничего не настроено.
Если последнее правда, то, видимо, кто-то висит на 80 порту. Например, сам роутер. Можно открыть URL не браузером, а curl'ом, тогда увидишь заголовки ответа и там будет имя и версия сервера, может, наведёт на мысль, но маловероятно.
А если настроить проброс другой пары портов, например, 3000:3000 и настроить сервер на этот порт? Причём, сервером может быть любой скрипт или программа, например, https://gist.github.com/huyng/814831.
Кстати, помимо NAT как проброса отдельных портов на внутренний комп, есть ещё DMZ, который пробрасывает все порты на заданный внутренний ip.
И ещё, а есть уверенность, что этот "белый ip" — ваш? Может, кто-то другой на нём? Что выдаёт http://httpbin.org/ip, если открыть ссылку из-под того компа?
А вообще, лучше попросить/заказать какого-то спеца и дать ему удалённый доступ (TeamViewer или аналог), а не гадать, не имея опыта.
Здравствуйте, Pavel Dvorkin, Вы писали:
vsb>>Я сталкивался с ситуацией, когда прокидывание 80 порта не работало. Вероятно потому, что на нём висел веб-интерфейс этого роутера. Понятно, что он снаружи не доступен, но — не работало.
PD>Я думаю, что это должно как-то лечиться, если болезнь в этом. Я не могу представить себе, что создатели роутера сделали его таким, что нельзя за ним иметь web-сервер.
Ну очевидных способов лечить я не нашел. 443 порта мне в принципе хватило. Подозреваю, что порты обычно прокидывают для игр и тд, а не для веб-серверов, по крайней мере на домашних роутерах.
Здравствуйте, Pavel Dvorkin, Вы писали:
Pzz>>Не, ну может кому надо в такие места заходить, куда с "левых" IP не пускают. Такое встречается, хоть и не часто.
PD>Хм, не совсем понятно, почему белый адрес , данный мне провайдером не является "левым", а выданный мне по DHCP тем же провайдером, вдруг "левый". По-моему, они, как в старом анекдоте "из одной бочки", то есть пула IP этого провайдера, Вот только часть выдается по DHCP бесплатно, а часть дают на постоянное пользование и берут за это деньги.
Потому, что адрес, выданый тебе по DHCP, скорее всего находится в базе адресов, с которых пачками ходит спам и прочая гадость. А белый IP вряд ли.
Но эти базы муторно поддерживать, поэтому это редко делают. Но бывает.
тут человек мучает меня вопросом, есть у него сервер на windows в локальной сети, есть белый ip — арендовал у провайдера. хочет этот белый ip прицепить к серверу, чтобы ходить на него откуда угодно. как сделать не знает. я погуглил, тоже ничего не нашел, даже минимального понимания.
есть роутер. кроме этого ip-адреса ничего больше у него нет.
подскажите плз просто в общих в чертах, без конкретики, какая последовательность действий?
Здравствуйте, Dair, Вы писали:
D>Здравствуйте, dmitry251, Вы писали:
D>>есть роутер.
D>На роутере найти port forwarding, прокинуть нужный порт с роутера на нужный адрес этого "сервера на windows".
Есть такое, да. но как узнать какой порт "нужный"?
Т.е. получается это провайдер должен направить выданный белый ip на [куда? адрес роутера?] и выдать порт???
Здравствуйте, dmitry251, Вы писали: D>>На роутере найти port forwarding, прокинуть нужный порт с роутера на нужный адрес этого "сервера на windows". D>Есть такое, да. но как узнать какой порт "нужный"?
От того, как именно планируется "подключаться" к "серверу на windows".
D>Т.е. получается это провайдер должен направить выданный белый ip на [куда? адрес роутера?] и выдать порт???
Нет. От провайдера только IP-адрес. Порты — сами, сами.
Рекомендую почитать какой-нибудь faq на тему работы IP-сетей, как там что устроено.
Здравствуйте, dmitry251, Вы писали:
D>тут человек мучает меня вопросом, есть у него сервер на windows в локальной сети, есть белый ip — арендовал у провайдера. хочет этот белый ip прицепить к серверу, чтобы ходить на него откуда угодно. как сделать не знает. я погуглил, тоже ничего не нашел, даже минимального понимания.
Лучше с таким уровнем понимания никак. Потому что следующий от него вопрос будет, как извести из сервера на windows 100500 вирусов, которые весело на нем резвятся, мешая друг другу.
Здравствуйте, Pavel Dvorkin, Вы писали:
D>>Т.е. получается это провайдер должен направить выданный белый ip на [куда? адрес роутера?] и выдать порт???
PD>Провайдер должен только выдать белый IP.
Собственно, если речь идет об исходящих соединениях, то ничего больше делать не надо.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Какие порты — зависит от того, что там на этом сервере. Если там HTTP сервер, то 80 обычно, если FTP — 21 и 22. Ну и т.д.
Я сталкивался с ситуацией, когда прокидывание 80 порта не работало. Вероятно потому, что на нём висел веб-интерфейс этого роутера. Понятно, что он снаружи не доступен, но — не работало.
Здравствуйте, Dair, Вы писали:
D>Здравствуйте, dmitry251, Вы писали: D>>>На роутере найти port forwarding, прокинуть нужный порт с роутера на нужный адрес этого "сервера на windows". D>>Есть такое, да. но как узнать какой порт "нужный"?
D>От того, как именно планируется "подключаться" к "серверу на windows".
D>>Т.е. получается это провайдер должен направить выданный белый ip на [куда? адрес роутера?] и выдать порт???
D>Нет. От провайдера только IP-адрес. Порты — сами, сами.
D>Рекомендую почитать какой-нибудь faq на тему работы IP-сетей, как там что устроено.
D>Я быстро нагуглил статью от 2007 года.
спасибо, но... гм, это получается в перенаправлении порта я просто пишу любой порт например 11111 как внешний, и указываю внутренний локальный ip "сервера на windows" и внутренний порт который мне нужен — например 80.
и теперь открывая [публичый ip]:11111 я должен увидеть стартовую страницу IIS так?
такого не происходит =) tracert выдает только одну позицию pppoe...xxx сервер провайдера и больше ничего.
Здравствуйте, vsb, Вы писали:
vsb>Я сталкивался с ситуацией, когда прокидывание 80 порта не работало. Вероятно потому, что на нём висел веб-интерфейс этого роутера. Понятно, что он снаружи не доступен, но — не работало.
Я думаю, что это должно как-то лечиться, если болезнь в этом. Я не могу представить себе, что создатели роутера сделали его таким, что нельзя за ним иметь web-сервер.
Здравствуйте, dmitry251, Вы писали:
D>>Я быстро нагуглил статью от 2007 года. D>спасибо, но... гм, это получается в перенаправлении порта я просто пишу любой порт например 11111 как внешний, и указываю внутренний локальный ip "сервера на windows" и внутренний порт который мне нужен — например 80. D>и теперь открывая [публичый ip]:11111 я должен увидеть стартовую страницу IIS так?
да.
D>такого не происходит =) tracert выдает только одну позицию pppoe...xxx сервер провайдера и больше ничего.
Здравствуйте, Dair, Вы писали:
D>Здравствуйте, dmitry251, Вы писали:
D>>>Я быстро нагуглил статью от 2007 года. D>>спасибо, но... гм, это получается в перенаправлении порта я просто пишу любой порт например 11111 как внешний, и указываю внутренний локальный ip "сервера на windows" и внутренний порт который мне нужен — например 80. D>>и теперь открывая [публичый ip]:11111 я должен увидеть стартовую страницу IIS так?
D>да.
D>>такого не происходит =) tracert выдает только одну позицию pppoe...xxx сервер провайдера и больше ничего.
D>tracert откуда куда?
мммм. точно. поскольку все происходит у одного провайдера то одна строчка и должна быть.
Здравствуйте, Pavel Dvorkin, Вы писали:
Pzz>>Собственно, если речь идет об исходящих соединениях, то ничего больше делать не надо.
PD>Несомненно. Даже белый IP не нужен, если имеют место только исходящие соединения. NAT все сам сделает.
Не, ну может кому надо в такие места заходить, куда с "левых" IP не пускают. Такое встречается, хоть и не часто.
Здравствуйте, dmitry251, Вы писали:
D>спасибо, но... гм, это получается в перенаправлении порта я просто пишу любой порт например 11111 как внешний, и указываю внутренний локальный ip "сервера на windows" и внутренний порт который мне нужен — например 80. D>и теперь открывая [публичый ip]:11111 я должен увидеть стартовую страницу IIS так?
Теперь мысленно отсоединим от роутера провайдера и на роутер повесим 2 компьютера. Получится локальная сеть, без Интернета.
На первом компьютере развернем IIS. На 80 порту, естественно. Допустим, его IP 192.168.0.1
Второй компьютер делает на него запрос 192.168.0.1:80 и получает стартовую IIS.
Теперь восстанавливаем связь с провайдером. Пусть у роутера белый адрес a.b.c.d
Запрос из внешнего мира придет на a.b.c.d:80. А не на 11111, потому что никто в нормальных условиях запросы для HTTP по порту 11111 не делает, а делает по 80
Вот и надо перебросить 80 порт от роутера на 192.168.0.1 на порт IIS, то есть тоже на 80
D>такого не происходит =) tracert выдает только одну позицию pppoe...xxx сервер провайдера и больше ничего.
tracert — это ICMP протокол, для него нет порта вообще.
Здравствуйте, dmitry251, Вы писали:
D>>>такого не происходит =) tracert выдает только одну позицию pppoe...xxx сервер провайдера и больше ничего. D>>tracert откуда куда?
D>мммм. точно. поскольку все происходит у одного провайдера то одна строчка и должна быть.
Больше скажу — traceroute — он про пинги.
Проверять проброс портов рекомендую снаружи настраиваемой сети.
Например, выключив в смартфоне вайфай и с его броузера.
Здравствуйте, vsb, Вы писали:
vsb>Подозреваю, что порты обычно прокидывают для игр и тд, а не для веб-серверов, по крайней мере на домашних роутерах.
Тут дело не в том, для чего это делают, но сделать роутер, за которым невозможно иметь свой web-сервер, причем без серьезных причин (кто мешает повесить этот web-интерфейс хотя бы на 8080 ?) — это серьезная ошибка. Так и жди воплей на каком-нибудь форуме "не могу открыть мой web-сервер всему миру, который я намерен им осчастливить. А все этот чертов роутер XYZLink"
Здравствуйте, Pzz, Вы писали:
Pzz>Не, ну может кому надо в такие места заходить, куда с "левых" IP не пускают. Такое встречается, хоть и не часто.
Хм, не совсем понятно, почему белый адрес , данный мне провайдером не является "левым", а выданный мне по DHCP тем же провайдером, вдруг "левый". По-моему, они, как в старом анекдоте "из одной бочки", то есть пула IP этого провайдера, Вот только часть выдается по DHCP бесплатно, а часть дают на постоянное пользование и берут за это деньги.
D>спасибо, но... гм, это получается в перенаправлении порта я просто пишу любой порт например 11111 как внешний, и указываю внутренний локальный ip "сервера на windows" и внутренний порт который мне нужен — например 80. D>и теперь открывая [публичый ip]:11111 я должен увидеть стартовую страницу IIS так?
D>такого не происходит =) tracert выдает только одну позицию pppoe...xxx сервер провайдера и больше ничего.
если сервер находится за роутером, то сайт на iis обычно привязывают к верхнему порту типа http://localhost:8080/
далее идем в брэндмауер, и разрешаем исходящие на порт 8080.
потом идем в роутер, прокидываем внешний порт 80 на внутренний порт ip-server:8080, ip-server типа 192.168.0.5
потом из внешней сети, той которая за роутером проверяем доступность сайта. из локалки (с адресов 192.168.0.*)
сайт по внешнему ip-адресу не будет доступен.
если есть домен у внешнего ip, то можно во внутреннем днс-сервере настроить разрешение имени www.myserver.ru -> local ip server
или прописать на локальных машинах в файле windows/system32/drivers/etc/hosts
Здравствуйте, Pzz, Вы писали:
Pzz>Потому, что адрес, выданый тебе по DHCP, скорее всего находится в базе адресов, с которых пачками ходит спам и прочая гадость. А белый IP вряд ли.
"Белый" означает лишь то, что адрес не меняется со временем, и на него по сути бесконечный lease time (ну, до расторжения договора с провайдером). В остальном отличий нет — с белых адресов точно так же летит всякое. Как с умыслом от владельца адреса, так и по раздолбайству через дыры в безопасности (боты регулярно сканят сети и пытаются эксплуатировать известные уязвимости).
Pzz>Но эти базы муторно поддерживать, поэтому это редко делают. Но бывает.
Поддерживают — это ж деньги. Just business, nothing personal.
Здравствуйте, Pavel Dvorkin, Вы писали:
Pzz>>Не, ну может кому надо в такие места заходить, куда с "левых" IP не пускают. Такое встречается, хоть и не часто.
PD>Хм, не совсем понятно, почему белый адрес , данный мне провайдером не является "левым", а выданный мне по DHCP тем же провайдером, вдруг "левый". По-моему, они, как в старом анекдоте "из одной бочки", то есть пула IP этого провайдера, Вот только часть выдается по DHCP бесплатно, а часть дают на постоянное пользование и берут за это деньги.
Я больше скажу. Как человек, часто сидящий за впном через свой сервер, я наблюдаю все больше сайтов, которые закрывают доступ с IP-адресов, принадлежащих дата-центрам. Из последних примеров — авито.
Здравствуйте, dmitry251, Вы писали:
D>есть роутер. кроме этого ip-адреса ничего больше у него нет.
D>подскажите плз просто в общих в чертах, без конкретики, какая последовательность действий?
Ничего хорошего с таким пониманием вопроса не получится.
IMHO, Tailscale или Zerotier позволят решить проблему защищенного доступа безо всяких мучений. Бесплатно. И IP адрес можно сдать назад в магазин. Пускай лучше учатся как IPv6 делать а не IPv4 адреса продавать
Здравствуйте, dmitry251, Вы писали:
D>есть роутер. кроме этого ip-адреса ничего больше у него нет. D>подскажите плз просто в общих в чертах, без конкретики, какая последовательность действий?
Давай я лучше хоть немного объясню как это работает. У человека есть провайдер, он кидает ему витую пару, на конце которой RJ45.
В это время знакомый купил у провайдера статический ip-адрес естественно 4-ой версии.
Дальше есть выбор, или воткнуть кабель (витая пара+RJ45) в сервер, тогда при работе по протоколу IP не важно на какой порт заходишь, будешь попадать на этот компьютер. То есть можно сделать из устройства хост.
Что такое сокет и порт
Для того, чтобы понять, что такое порт, нужно понять что такое сокет.
1) Адрес хоста по IPv4 определяется как xxx.xxx.xxx.xxx
2) Адрес сокета по TCP/IP определяется как xxx.xxx.xxx.xxx:port
Если в браузере в адресной строке указан протокол http, но не указан порт, то это всегда не xxx.xxx.xxx.xxx, а xxx.xxx.xxx.xxx:80. Просто браузер это скрывает, как и для других протоколов совпадающих со стандартными значениями соответствия протоколов над TCP/IP и портов. Соответственно для других протоколов это другие числа портов. Но дело в том, что сервис, который находится по данному сокету может быть абсолютно любым.
Обрати внимание, что один протокол строится над другим, то есть тот же HTTP построен поверх TCP/IP, а TCP/IP построен поверх IPv4, а IPv4 поверх Ethernet или WLAN и так далее.
1) Прикладной (Application layer) HTTP, RTSP, FTP, DNS
2) Транспортный (Transport Layer) TCP, UDP, SCTP, DCCP
3) Сетевой (Межсетевой) (Network Layer) Для TCP/IP это IP
4) Уровень сетевого доступа (Канальный) (Link Layer) Ethernet, IEEE 802.11 WLAN, SLIP, Token Ring, ATM и MPLS, физическая среда и принципы кодирования информации, T1, E1
Приложения пытаются установить в TCP/IP соединение посредством сокетов, то есть программных разъёмов различающихся для хоста номером порта.
Например:
Программа на сервере слушает статический IPv4-адрес 95.96.97.98:80
<=>
Интернет
<=>
Клиент посылает запрос на связь с IPv4-адрес 95.96.97.98:80.
Но вот человек установил в эту цепочку маршрутизатор.
Программа на сервере слушает статический IPv4-адрес 192.168.1.2:80
<=> Роутер внутри сети 192.168.1.1 снаружи сети 95.96.97.98
<=>
Интернет
<=>
Клиент посылает запрос на связь с IPv4-адрес 95.96.97.98:80.
Перенаправление портов
Далее нужно настроить на маршрутизаторе (роутере) перенаправление портов. В настройках может быть как перенаправление всех портов по адресу с внешней сети 95.96.97.98 на внутренний адрес по сути локалки 192.168.1.2. Или поскольку у тебя всего лишь один внешний статический адрес 95.96.97.98, то можешь раскидать их по другим компьютерам.
Интернет Локалка
95.96.97.98:все <=> 192.168.1.2:все
или
95.96.97.98:22 <=> 192.168.1.2:22 (второй компьютер в сети, первый роутер)
95.96.97.98:80 <=> 192.168.1.2:80 (второй компьютер в сети, первый роутер)
95.96.97.98:8080 <=> 192.168.1.10:80 (десятый компьютер в сети, первый роутер)
Очевидное ограничение, что поскольку IPv4-адрес в интернете один, то порты сокетов повторятся не могут, если конечно не установишь ещё одно соединение с выделенным IPv4-адресом.
1) Статический (белый) IPv4-адрес значит он не меняется при переподключении, то есть в нашем случае всегда будет 95.96.97.98.
2) Динамический значит может изменяться как вздумается при переподключении.
3) А ещё хост может быть за NAT, но это не наш случай.
Собственно главная мысль всего написанного в сокетах, так как именно сокеты добавляют понятие портов. На прикладном уровне по тому же 80 порту может быть всё, что захочешь. Но когда установишь соединение по тому же TCP/IP он начнёт отправлять данные в поток, то есть для конечного потребителя они будут собираться последовательно.
В общем прикладной уровень это то, что сам программист решил сериализовать, на источнике при отправке и десериализовать на приёмнике при получении. По сути это тоже самое, как если бы программист дописывал последовательно данные в файл, а потом точно так же считывал последовательно данные из файла.
Конкретная инструкция перенаправления портов
А теперь инструкция для проброса портов. Заходишь в поисковик и набираешь "проброс портов <название роутера>", например, проброс портов keenetic. И далее пробрасываешь порты на сервер в локалке, что как я уже выше написал не нужно было бы делать, если подключить сервер напрямую без маршрутизатора (роутера).
Если ты понял про сокеты (разъёмы для программ) у которых есть номера называемые портами, то тогда поймёшь про перенаправление портов. Можешь представить, что это физические шнуры с номерами, которые ты соединяешь друг с другом. Понятно, что это не шнуры и не разъёмы, но видимо американцы назвав это так представляют всё таким образом.
А если не поймёшь про сокеты, тогда будешь плавать в теории подключения, что конечно, не помешает сделать проброс портов. Просто ты как программист не будешь понимать, что ты пробрасываешь, так как никогда не писал интернет сервера. Напиши какой-нибудь TCP/IP сервер или для лучшего понимания ещё и UDP/IP, и очень быстро поймёшь как надо пробрасывать порты и самое главное для чего.