Домашний роутер обычно не дает возможности добраться из внешнего Интернета до компьютеров во внутренней сети. Это правильно — хакерские атаки рассчитаны на известные уязвимости компьютера, так что роутер является дополнительным препятствием. Однако бывают случаи, когда доступ к роутеру и его локальным ресурсам из «внешнего мира» становится необходим. О том, в каких случаях бывает нужен доступ извне, и как его безопасно настроить — эта статья.
Зачем открывать доступ извне?
Доступ «снаружи» нужен не только в экзотических случаях вроде открытия игрового сервера или запуска сайта на домашнем компьютере. Гораздо чаще приходится «открывать порт» для многопользовательской игры, а это — как раз предоставление внешнему пользователю (серверу игры) доступа к внутренней сети (порт компьютера). Если необходимо удаленно подключиться и настроить компьютер или роутер, скачать файл-другой из домашней сети, находясь в командировке, или посмотреть видео с подключенных к домашней сети IP-камер — нужно настроить доступ.
Цвета и формы IP-адресов
Прежде чем разбираться, как открыть доступ к своим ресурсам, следует понять, как вообще происходит соединение в сети Интернет. В качестве простой аналогии можно сравнить IP-адрес с почтовым адресом. Вы можете послать письмо на определенный адрес, задать в нем какой-то вопрос и вам придет ответ на обратный адрес. Так работает браузер, так вы посещаете те или иные сайты.
Но люди общаются словами, а компьютеры привыкли к цифрам. Поэтому любой запрос к сайту сначала обрабатывается DNS-сервером, который выдает настоящий IP-адрес.
Допустим теперь, что кто-то хочет написать письмо вам. Причем не в ответ, а самостоятельно. Не проблема, если у вас статический белый адрес — при подключении сегодня, завтра, через месяц и год он не поменяется. Кто угодно, откуда угодно, зная этот адрес, может написать вам письмо и получите его именно вы. Это как почтовый адрес родового поместья или фамильного дома, откуда вы не уедете. Получить такой адрес у провайдера можно только за отдельную и регулярную плату. Но и с удаленным доступом проблем меньше — достаточно запомнить выданный IP.
Обычно провайдер выдает белый динамический адрес — какой-нибудь из незанятых. Это похоже на ежедневный заезд в гостиницу, когда номер вам выдается случайно. Здесь с письмом будут проблемы: получить его можете вы или другой постоялец — гарантий нет. В таком случае выручит DDNS — динамический DNS.
Самый печальный, но весьма распространенный в последнее время вариант — серый динамический адрес: вы живете в общежитии и делите один-единственный почтовый адрес с еще сотней (а то и тысячей) жильцов. Сами вы письма писать еще можете, и до адресата они дойдут. А вот письмо, написанное на ваш почтовый адрес, попадет коменданту общежития (провайдеру), и, скорее всего, не пойдет дальше мусорной корзины.
Сам по себе «серый» адрес проблемой не является — в конце концов, у всех подключенных к вашему роутеру устройств адрес именно что «серый» — и это не мешает им пользоваться Интернетом. Проблема в том, что когда вам нужно чуть больше, чем просто доступ к Интернету, то настройки своего роутера вы поменять можете, а вот настройки роутера провайдера — нет. В случае с серым динамическим адресом спасет только VPN.
Кто я, где я, какого я цвета?
С терминологией разобрались, осталось понять, какой именно адрес у вас. У большинства провайдеров фиксированный адрес стоит денег, так что если у вас не подключена услуга «статический IP-адрес», то он наверняка динамический. А вот белый он или серый гусь — это нужно проверить. Для начала надо узнать внешний IP-адрес роутера в его веб-интерфейсе и сравнить с тем адресом, под которым вас «видят» в Интернете.
В админ-панели роутера свой IP можно найти на вкладках «Информация о системе», «Статистика», «Карта сети», «Состояние» и т. п. Где-то там нужно искать WAN IP.
Если адрес начинается с «10.», или с «192.168.», то он определенно «серый» — большинство способов открытия доступа работать не будет и остается только VPN.
Если же адрес выглядит по-другому, надо посмотреть на него «снаружи» с помощью одного из сервисов, показывающих ваш IP-адрес, например, http://myip.ru/.
Если адрес, показанный на сайте, совпадает с тем, что вы увидели в веб-интерфейсе, то у вас честный «белый» адрес и доступ из «большого мира» не вызовет особых затруднений — остается только настроить «пробросы» на роутере и подключить DDNS.
Что такое порты и зачем их бросать?
Порт — это пронумерованное виртуальное «устройство», предназначенное для передачи данных по сети. Каждая сетевая программа использует для установления связи отдельный порт или группу портов. К примеру, браузеры используют TCP-порт 80 для незашифрованного трафика (http) и 443 для зашифрованного (https).
Проброс порта — это специальное правило в роутере, которое разрешает все обращения извне к определенному порту и передает эти обращения на конкретное устройство во внутренней сети.
Необходимость «проброса» портов обычно возникает при желании сыграть по сети в какую-нибудь игру с компьютера, подключенного к роутеру. Впрочем, это не единственная причина — «проброс» потребуется при любой необходимости получить «извне» доступ к какому-нибудь конкретному устройству в вашей локальной сети.
Разрешать к компьютеру вообще все подключения, то есть пробрасывать на него весь диапазон портов — плохая идея, это небезопасно. Поэтому роутеры просто игнорируют обращения к любым портам «извне». А «пробросы» — специальные исключения, маршруты трафика с конкретных портов на конкретные порты определенных устройств.
Игровые порты: что, куда бросаем?
Какой порт открыть — зависит от конкретного программного обеспечения. Некоторые программы требуют проброса нескольких портов, другим — достаточно одного.
У разных игр требования тоже отличаются — в одни можно играть даже с «серого» адреса, другие без проброса портов потеряют часть своих возможностей (например, вы не будете слышать голоса союзников в кооперативной игре), третьи вообще откажутся работать.
Например, чтобы сыграть по сети в «Destiny 2», нужно пробросить UDP-порт 3074 до вашей «плойки», или UDP-порт 1200 на Xbox. А вот до ПК потребуется пробросить уже два UDP-порта: 3074 и 3097.
В следующей таблице приведены некоторые игры и используемые ими порты на ПК:
Fortnite |
Overwatch |
PUBG |
Tekken 7 |
WoT |
TCP: 5222, 5795:5847 |
TCP: 80, 1119, 3724, 6113 |
TCP: 27015:27030, 27036:27037 |
TCP: 27015:27030, 27036:27037 |
TCP: 80, 443, 5222, 5223, 6881, 6900:6905, 50010:50014 |
UDP: 5222, 5795:5847 |
UDP: 5060, 5062, 6250, 3478:3479, 12000:64000 |
UDP: 4380, 27000:27031, 27036 |
UDP: 4380, 27000:27031, 27036 |
UDP: 53, 1900, 3432, 3478, 3479, 5060, 5062, 6881, 12000:29999, 30443, 32800:32900 |
Настраиваем проброс портов
Пробросы настраиваются в админ-панели роутера на вкладке «Виртуальные серверы», «NAT», «Переадресация портов», «Трансляция сетевых адресов» и т. п. Они могут быть вложенными во вкладки «Интернет», «Переадресация», «Брандмауэр» или «Безопасность». Все зависит от марки и модели роутера.
Вам нужно определить, какие порты и какой протокол (UDP или TCP) использует программа, для которой вы настраиваете правило. Также следует задать статический IP-адрес для устройства, на которое пробрасывается порт — это делается в настройках DHCP и подробно разбиралось в статье про родительский контроль. Все эти данные следует ввести в соответствующие поля.
Некоторые роутеры позволяют задать также и внешний IP-адрес (или диапазон адресов). Так что если вы знаете IP-адрес, с которого будет идти обращение к вашему устройству (например, адрес игрового сервера), то его следует также ввести на странице — это повысит безопасность соединения.
Теперь все обращения с адреса 132.12.23.122 к порту 3074 вашего роутера он автоматически «перебросит» к вашей приставке PlayStation.
Больше пробросов для разных задач!
Аналогично производится настройка для других программ — и это могут быть не только игры:
-
задав порт и настроив удаленное управление для uTorrent, можно управлять его загрузками из любой точки мира с помощью браузера;
-
проброс портов часто требуется для специализированных программ удаленного управления компьютером; более простые, «гражданские» программы могут работать без этого — подробнее о них можно прочитать в этой статье;
-
для запуска на домашнем компьютере ftp-сервера потребуется открыть и пробросить управляющий порт 21 и отдельный диапазон портов для передачи данных;
-
пробросив порт 554 на домашнюю IP-камеру, которая умеет передавать видео по протоколу RTSP, можно будет подключиться к ней любым видеоплеером с поддержкой RTSP, вроде VLC;
-
проброс порта 3389 позволит задействовать службу RDP (Remote Desktop Protocol) в Windows для получения удаленного доступа к рабочему столу компьютера.
DDNS — зачем нужен и как настроить
Если IP-адрес постоянный, то его можно запомнить. Но если он меняется, запоминать его тяжело. Для решения этой проблемы предназначены службы динамического DNS. Вам будет достаточно запомнить определенное доменное имя.
Сервисы DDNS бывают платные и бесплатные, с разным набором возможностей и характеристик. Но пользоваться лучше теми, которые предусмотрел производитель роутера — когда внешний IP-адрес роутера поменяется, они с DDNS сами договорятся, без вашей помощи. Найдите вкладку «DDNS» или «Динамический DNS» в веб-интерфейсе вашего роутера. В пункте «сервис-провайдер» или «DDNS-сервис» вам будет предложен список из нескольких сервисов, можете выбрать любой. Многие производители роутеров имеют собственные DDNS-сервисы — довольно ограниченные в настройках, зато бесплатные. Это DLinkDDNS.com для роутеров D-Link, KeenDNS для роутеров Zyxel, «Облако ТР-Link» для роутеров TP-Link и т. п.
Определившись с будущим сервисом DDNS, нужно зайти на его сайт и создать аккаунт. Бесплатные DDNS-сервисы производителей роутеров могут потребовать ввести серийный номер устройства или как-то иначе подтвердить, что вы работаете с роутером их производства — у каждого производителя по-разному.
Далее вам предложат задать доменное имя для своего домашнего сервера — обычно это домен третьего уровня (то есть vash_vybor.DDNS-service.com). После этого уже можно вернуться в веб-интерфейс и настроить привязку созданного аккаунта к своему роутеру.
Удаленное управление роутером
Во всех прочих руководствах рекомендуется запрещать удаленное управление роутером. Но здесь желательно его разрешить — будет крайне обидно, если вы, например, при пробросе портов упустили какую-то мелочь и не можете из-за этого «достучаться» до сети, будучи в командировке или в отпуске. Удаленное управление роутером позволит внести необходимые исправления и получить доступ.
Разрешите «Удаленный доступ» в веб-интерфейсе и задайте правила удаленного доступа. Так, если вам известен постоянный IP-адрес компьютера, с которого вы будете производить настройку, его следует задать — это увеличит безопасность вашей сети.
Если же вы хотите получить возможность доступа к роутеру с любого устройства, подключенного к Интернету, это тоже можно сделать, но обязательно задайте сложный пароль на доступ к веб-интерфейсу — иначе ваша локальная сеть станет «легкой добычей» для хакеров.
VPN как крайний выход
Если провайдер выдает «серый» адрес и никак не желает давать «белый», даже за деньги, придется использовать VPN.
Обычно VPN-сервисы предоставляют выход в сеть через сервер в любой точке мира — Private Internet Access, TorGuard, CyberGhost VPN, Game Freedom и т. п. Бесплатных среди них нет, но для удаленного доступа к своему компьютеру или командных игр вам «внешний» сервер и не нужен. Достаточно создать «виртуальную сеть» из своего домашнего компьютера и, например, рабочего. Или ноутбука для поездок, с которого вы ходите получать доступ к домашней сети. Или всех компьютеров ваших игровых друзей. Достаточно выбрать какую-нибудь из бесплатных VPN-утилит, например, Hamachi, Remobo, NeoRouter и т. д. И запустить ее на всех компьютерах, которые нужно объединить.
Прелесть в том, что это можно сделать без настройки роутера, с самого «серого» адреса и под самым «злобным» файрволом. Можно соединить в сеть и больше двух компьютеров, хотя в бесплатных версиях их количество ограничено.
Кроме того, в Интернете существует множество открытых (без пароля) VPN, созданных специально для игр — вам остается только найти VPN вашей любимой игры, подключиться к ней с помощью одной из вышеупомянутых утилит — и играть. Чуть сложнее дело обстоит с играми, в которых требуется подключение к игровому серверу.
Существуют VPN-сети с запущенными серверами популярных игр, но пользователей на них в разы меньше, чем на открытых серверах. Кроме того, такие сервера есть не для всех игр. Сыграть в World of Tanks или World of Warcraft с помощью таких утилит не получится, придется раскошеливаться на полноценный VPN-сервис. Но об этом — в следующий раз.
#1
Отправлено 16 апреля 2016 — 20:35
- Профессионал
-
Привет. В этом уроке расскажу, как запустить сервер с компьютера, если у вас стоит маршрутизатор TP-LINK.
[!] Если у вас были закрыты порты до подключения маршрутизатора, то этот урок вам не поможет!
[!] IP не должен быть динамическим!
- Заходим в панель управления TP-LINK
Откройте браузер и в адресной строке напишите tplinklogin.net. В окне входа в систему введите имя пользователя и пароль (по умолчанию имя пользователя и пароль admin). - Бронированием внутренний IP под нужный компьютер
Для чего это нужно. Внутренний IP первого подключенного устройства имеет такую форуму: 192.168.0.101, в моем случае так. Последние цифры будут увеличиваться от количества подключенных устройств. Именно для этого мы будем бронировать 192.168.0.101 под основной IP сервера. Ведь в другом случае этот адрес может занять другое устройство.Сперва заходим в Network -> MAC Clone и копируем MAC адрес вашего компьютера (Your PC’s MAC Address).
После этого переходим в DHCP -> Address Reservation и нажимаем «Add new…». В первую форму добавляем Mac адрес вашего компьютера, во вторую зарезервированный IP адрес, в нашем случае это 192.168.0.101, и ставим статус: Enabled.
Теперь при любом раскладе у этого компьютера будет внутренний IP 192.168.0.101. - Создание виртуального сервера
Виртуальный сервер эмулирует работу отдельного физического сервера. На одной машине может быть запущено множество виртуальных серверов. Чтобы его создать, заходим в Forwarding -> Virtual Servers и нажимаем «Add new…».Параметры:
- Service Port: 7777
- Internal Port: 7777
- IP Address: 192.168.0.101
- Protocol: UDP
- Status: Enabled
- Перезагружаем маршрутизатор
Внизу страницы tplinklogin.net нажмите Refresh. - Открываем порт 7777
Порты будем открывать через брандмауэр. Заходим в Панель управления -> Брандмауэр Windows -> Дополнительные параметры -> Правила для входящих подключений и нажимаем «Создать правило».Параметры:
- Тип правила: Для порта
- Протокол: UDP
- Номер порта: 7777
- Название правила: SA-MP Server
На этом все. Теперь ваш сервер будет виден всем. IP адрес можно будет узнать на 2ip.
P.S. Возможно есть удобней способы. И если какой-то пункт упустил, пишите.
Автор: m1n1vv
Сообщение отредактировал m1n1vv: 15 января 2017 — 22:33
14
#2
Отправлено 16 апреля 2016 — 23:49
- Эксперт
-
Чувак, плюсик тебе, у самого TL Link
Сегодня не смогу — завтра дам
Благо сейчас хостинг есть, для тестов с друзьяшками его использую, но темка полезная
0
#3
Отправлено 17 апреля 2016 — 16:26
- Знаток
-
У меня гребанный ASUS RT-N10U и у мене не получается вывести сервер в общий доступ
0
#4
Отправлено 22 апреля 2016 — 08:27
- Прохожий
-
0
#5
Отправлено 22 апреля 2016 — 11:19
- Эксперт
-
Красава
У меня huawei но урок полезен
0
#6
Отправлено 24 апреля 2016 — 07:24
- Прохожий
-
0
#7
Отправлено 24 апреля 2016 — 16:34
- Профессионал
-
Rydassus (24 апреля 2016 — 07:24) писал:
До подключения маршрутизатора TP-LINK порты были открыты?
0
#8
Отправлено 26 апреля 2016 — 00:04
- Прохожий
-
0
#9
Отправлено 07 мая 2016 — 17:35
- Эксперт
-
Хостинг мой кончился, воспользовался этой темой, все работает
Спасибо!
P.S: перезагрузи картинки, или удали вообще, без них понятно)
0
#10
Отправлено 08 мая 2016 — 19:48
- Прохожий
-
Прям от души ))) у меня не TPlink а все таки ASUS но он был сломлен ))) в принципе я сделал это все ранее но … у меня стояло по TCP
0
- ← Предыдущая тема
- Уроки
- Следующая тема →
- Вы не можете создать новую тему
- Вы не можете ответить в тему
1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей
Время на прочтение
5 мин
Количество просмотров 66K
Disclaimer
Я не являюсь сетевым инженером, я просто студент, который решил записать свои действия, чтобы поделиться со знакомыми и не забыть, что я вообще делал. Буду очень рад если меня поправят в комментариях. Этот конспект написан по другим статьям с различных ресурсов, прошу поддержать авторов тех гайдов, у них некоторые моменты расписаны более подробно и возможно вам подойдет именно их статья.
Буду стараться писать очень подробно, чтобы человек, знающий столько сколько я в начале своего пути, все понял.
Вступление
Мне очень давно хотелось поднять видимый извне сервер в своей домашней локальной сети, чтобы использовать его для pet проектов или же возможно для сайта-визитки.
Возникает вопрос: почему не использовать для этого самую простую VPS и не тратить мощности своего компьютера? Ответ очень прост: статический белый ip у меня уже был и давно, а в качестве сервера я решил использовать не основной пк а старый ноутбук. Поэтому дополнительных затрат не предвиделось.
Что мы имеем?
Для справки, на момент написания публикации (2021) стоимость минимальной VPS на доверенном ресурсе — 400 руб. , стоимость белого ip у моего провайдера — 179 руб.
-
Ноутбук (intel core i5 M 560 2,67 GHz, 4/60Gb) с установленной Ubuntu Server 20.04.3 (для создания установочной флешки советую использовать rufus (win) или balenaEtcher (os x)
-
роутер провайдера с подключенным пакетом «статический ip адрес»
-
второй компьютер для тестов (все что делается через браузер можно, конечно, сделать и на телефоне, вопрос удобства)
-
хорошая музыка чтобы процесс не был скучным
Какая цель?
Сделать python3 flask (взял для простоты) сервер доступный из вне.
Установка постоянного локального адреса на сервер
Приступим. Во-первых установим постоянный ip для нашего сервера в локальной сети. По идее изначально используется DHCP (протокол, по которому каждое устройство в сети получает относительно случайный ip адрес, а нам нужен постоянный для сервера, чтобы роутер всегда знал куда отправлять внешние запросы)
-
Смотрим интерфейс, который мы используем, с помощью
ifconfig
-
В зависимости от того какой тип соединения мы используем (кабель или wi-fi) выбираем файл в катологе
/etc/netplan
И настраиваем его примерно так:
network: ethernets: ethx: dhcp4: no dhcp6: no addresses: [192.168.1.200/24, ] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.1, ] version: 2
ethx
— название нашего устройства по которому идет подключениеЗдесь важно понимать что означают строки:
-
addresses
(6) — адрес нашего сервера в локальной сети, как раз то что мы делаем постоянным/24
означает маску сети (255.255.255.0), в данной ситуации первые 3 числа должны совпадать с локальным адресом роутера, а последнее число произольно. Я выбрал адрес 192.168.1.200 -
gateway4
— шлюз нашей сети, то есть роутер. Его адрес 192.168.1.1, обычно он общий для всех роутеров одного провайдера, так что погуглите (иногда его адрес указывается там же где и пароль от wi-fi) -
в строке
nameservers: addresses
(9) указываем тот же адрес что и вgateway4
(простите, но я беспонятия что это) -
dhcp4: no
иdhcp6: no
указывают, что мы не будем использовать протокол DHCP
-
На этом этапе возможно потребуется проверка:
-
На сервере:
sudo tcpdump -i ethx icmp and icmp[icmptype]=icmp-echo
Чтобы следить за тем кто нас пингует.
-
И пингуем его с другого пк внутри локальной сети по адресу
192.168.1.200
.
Также строит проверить есть ли доступ к интернету у нашего ноутбука-сервера: используем команду ping
с доменом google.com
.
Все это подробно описано в этой статье для Ubuntu, для других дистрибутивов гуглите «Установка статического ip <название дистрибутива>».
Все работает? Идем дальше!
Рассказываем роутеру про сервер
Теперь наш сервер знает, что мы имеем дело с постоянным ip и не используем протокол DHCP. Самое время рассказать роутеру, что внешние запросы нужно отправлять на сервер. Чтобы получить доступ к настройкам роутера вбиваем в поисковую строку его ip адрес.
Есть два варианта:
-
Установить DMZ зону внутри настроек роутера и указать туда локальный адрес нашего сервера. Этим действием мы делаем наш сервер публичным и теперь любой может попробовать подключиться к нему.
-
Пробросить порты нужных нам ресурсов через роутер на сервер (перенаправление портов). Не забудьте порт SSH (22) и flask (5000)
Попробуйте пингануть его из внешней сети.
Все норм? Теперь наш сервер виден из вне, самое время подумать о безопасности.
Защита сервера
Я буду настраивать SSH
, Firewall
и fail2ban
по вот этому очень хорошему гайду. (еще раз, моя цель не скопипастить все что я нашел, а собрать все в одно место, чтобы не забыть) Я делаю все для Ubuntu Server, но в том гайде есть для CentOS и Red Hat.
Во-первых сделаем еще одного пользователя помимо root (1), зададим ему пароль (2) и разрешим использовать root привелегии через sudo (3):
useradd [options] <username>
passwd <username>
usermod -aG sudo <username>
SSH
Настраивайте по инструкции в статье упомянутой выше. Там мне совсем нечего добавить, кроме подроностей о public и private ключах:
-
ssh-keygen -t rsa
генерирует 2 ключа открытый (тот что имеет .pub
) и приватный который (не имеет такого расширения) -
Открытый ключ отправляется на сервер в файл
authorized_keys
в папке/.ssh
в домашней директории пользователя (/home/username/.shh/authorized_key
)Для этого можно использовать команду:
cat ~/.ssh/id_rsa.pub | ssh root@ip-адрес-сервера 'cat >> ~/.ssh/authorized_keys'
-
Закрытый ключ используется для аутентификации, скопируйте его куда-нибудь чтобы не потерять
Использовать ключ для входа можно командой:
ssh -i <путь к ключу> <имя пользователя>@<адрес сервера>
Важно отключить аутентификацию по паролю иначе мы все это делали зря.
Firewall
Используя проброс портов мы разрешаем доступ к нашему серверу лишь посредством подключений к определенным портам, но DMZ зона допускает почти все типы запросов. Используя DMZ зону нам строит поднять FireWall на сервере, который как раз и ограничит количество портов которые могут принимать внешние запросы.
Разрешим использование SSH (1) и порта 5000 (2) в ufw (Firewall), и запустим Firewall (3):
sudo ufw allow ssh
sudo ufw allow 5000/tcp
sudo ufw enable
Подняв FireWall важно не забыть разрешить доступ к порту SSH (22) и порту Flask (5000) (ну или другого ПО, которое мы собираемся использовать). Я забыл и долго не понимал, почему мой сервер не отвечает.
На сайте хорошо разобраны команды для управления Firewall-ом.
Fail2ban
Fail2ban ограничивает количество попыток подключения, это сильно усложнит подбор аутентификационных данных SSH.
Для начала установим его (1) и запустим (2, 3):
sudo apt install fail2ban
systemctl start fail2ban
systemctl enable fail2ban
Теперь можем настроить его, используя эти конфигурационные файлы:/etc/fail2ban/fail2ban.conf
и /etc/fail2ban/jail.conf
. Во втором находятся ограничения на количество подключений за определенный промежуток времени и время бана.
Теперь сделаем проверку более сложного уровня
-
Установим flask и python3:
sudo apt install python3 sudo apt install pip pip install flask
-
Скопируем код тестового сервера с сайта в файл
server.py
:from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Hello, World!</p>"
Находясь в директории с этим файлом, запустим сервер:
export FLASK_APP=server.py flask run -h <локальный адрес нашего сервера> -p 5000
Сервер запущен и теперь мы можем попробовать подключиться к нему с внешнего устройства прямо через строку в браузере, вводя внешний адрес нашего роутера, к примеру:
94.123.45.70:5000/
Если все работает мы должны увидеть строку «Hello, World!». Не заработало? Пройдитесь по моим заметкам в этом гайде еще раз.
Источники
-
Как веб-сервер на своём компьютере сделать доступным для других
-
https://1cloud.ru/help/security/ispolzovanie-utility-ufw-na-inux
-
https://flask.palletsprojects.com/en/2.0.x/quickstart/
-
https://firstvds.ru/technology/dobavit-ssh-klyuch
-
https://habr.com/ru/company/vdsina/blog/521388/
-
https://adminguide.ru/2018/09/24/ubuntu-server-18-04-установка-статического-ip/
-
Виртуальные серверы: если вы создаёте сервер в локальной сети и хотите сделать его доступным в интернете, реализовать эту услугу и предоставить её пользователям сможет виртуальный сервер. В то же время виртуальный сервер позволяет сохранять безопасность локальной сети, поскольку прочие службы будут по-прежнему невидимы из интернета.
Виртуальный сервер может быть использован для настройки публичных служб в вашей локальной сети, таких как HTTP, FTP, DNS, POP3/SMTP и Telnet. В разных службах используются разные служебные порты. Порт 80 используется службой HTTP, порт 21 — в FTP, порт 25 — в SMTP и порт 110 — в POP3. Перед настройкой проверьте номер служебного порта.
Пример настройки
Например, персональный веб-сайт был создан на моем домашнем ПК (IP-адрес: 192.168.0.100). Я хочу, чтобы мои друзья могли посещать мой сайт через интернет.
ПК подключен к маршрутизатору с WAN IP-адресом 218.18.232.154.
Маршрутизатор LAN WAN: 218.18.232.154
Назначьте статический IP-адрес компьютеру, например 192.168.0.100
Выполните следующие действия:
Примечание: Настройка производится на примере модели Archer C9.
Шаг 1
Войдите в веб-интерфейс Archer C9. Прочитайте статью Как войти в веб-интерфейс Wi—Fi роутера, для получения инструкции о том, как зайти в веб-интерфейс маршрутизатора.
Шаг 2
Нажмите Advanced (Дополнительные настройки) вверху справа, затем в левой части выберете NAT Forwarding (NAT переадресация) -> Virtual Servers (Виртуальные серверы) -> Add (Добавить).
Шаг 3
Нажмите View Existing Services (Просмотр существующих сервисов) и выберите HTTP External port (внешний порт), internal port (внутренний порт) и protocol (протокол) заполнятся автоматически. Введите адрес компьютера 192.168.0.100 в поле Internal IP (внутренний IP-адрес).
Нажмите ОК, чтобы сохранить настройки.
Советы:
1. Рекомендуется сохранить настройки по умолчанию для внутреннего порта и протокола, если вы не знаете, какой порт и протокол использовать.
2. Если служба, которую вы хотите указать, не прописана в Service Type (списке сервисов), то вы можете ввести соответствующие параметры вручную. Необходимо проверить номер порта, который необходим службе.
3. Вы можете добавить несколько правил виртуального сервера, если хотите предоставить несколько сервисов в маршрутизаторе. Пожалуйста, помните, что внешние порты не должны повторяться (дублироваться).
Шаг 4:
Для посещения вашего веб-сайта пользователи в интернете могут входить по адресу http:// WAN IP (в этом примере: http:// 218.18.232.154).
Примечание: Ваши настройки не вступят в силу, если функция NAT отключена. Перейдите на страницу Advanced (Дополнительные настройки) > System Tools (Системные инструменты)> System Parameters (Параметры системы) чтобы включить NAT.
Рекомендации:
1. WAN IP-адрес должен быть публичным (белым/внешним). Если WAN IP назначается динамически интернет-провайдером, рекомендуется зарегистрировать и использовать доменное имя для WAN IP (см. настройка учетной записи службы DDNS). В дальнейшем вы сможете набрать в адресной строке http:// имя домена, чтобы посетить веб-сайт.
Для справки:
Как настроить DDNS (DynDNS) для Wi-Fi роутеров (новый синий пользовательский интерфейс)
Как настроить DDNS (NO-IP) для Wi-Fi роутеров (новый синий пользовательский интерфейс)
Если вы не уверены в том, как настроить static IP (статический IP) на устройстве, вы можете настроить Address Reservation (резервирование адреса) по инструкции Как настроить резервирование адресов на Wi-Fi роутерах TP-Link (новый синий пользовательский интерфейс), так что один и тот же IP адрес всегда будет присвоен вашему устройству.
2. Если вы изменили внешний порт со значения по умолчанию, вы должны использовать http:// WAN IP: Внешний порт или http:// имя домена: Внешний порт для посещения веб-сайта.
3. Убедитесь, что сервер доступен из внутренней сети. Вы можете проверить, получаете ли вы доступ к этому серверу внутри локальной сети. Если вы не можете получить доступ к серверу в локальной сети, проверьте настройки своего сервера.
Узнайте больше о каждой функции и настройки, перейдите в раздел ЗАГРУЗКИ на вашем веб-сайте, чтобы загрузить руководство по вашему продукту.
Был ли этот FAQ полезен?
Ваш отзыв поможет нам улучшить работу сайта.
Что вам не понравилось в этой статье?
- Недоволен продуктом
- Слишком сложно
- Неверный заголовок
- Не относится к моей проблеме
- Слишком туманное объяснение
- Другое
Как мы можем это улучшить?
Спасибо
Спасибо за обращение
Нажмите здесь, чтобы связаться с технической поддержкой TP-Link.
На чтение 10 мин Просмотров 5.1к.
Максим aka WisH
Высшее образование по специальности «Информационные системы». Опыт работы системным администратором — 5 лет.
Задать вопрос
Проброс портов потребуется вам дома, если нужно получить доступ к какому-то домашнему оборудованию из интернета. Маршрутизатор не позволяет делать такие вещи напрямую, это служит дополнительной защитой от атак из глобальной сети. Иногда требуется дать подключение из внешней сети к внутреннему устройству. Тогда и пригодится перенаправление портов.
Содержание
- Зачем нужен проброс портов
- Что необходимо для выполнения перенаправления
- Ручной проброс через кабинет роутера
- Как пробросить порты с помощью
- Windows
- iptables в Линукс
- SSH-туннеля
- Заключение
Зачем нужен проброс портов
Домашние устройства находятся в локальной сети. Для доступа к интернету они используют маршрутизатор. Через него проходят данные от каждого домашнего устройства и отправляются в интернет. После получения ответа он сам раздает нужные данные обратно. Получается такая ситуация, что домашние девайсы видят интернет и могут получать из него данные, а из интернета виден только маршрутизатор.
Он выполняет роль сетевого шлюза, который защищает локальную сеть от проникновения. Поэтому и ценятся устройства, имеющие встроенные системы защиты, с их помощью внутренняя сеть остается в большей безопасности. Если вы не знаете, кто шлет сигналы в интернет, то и подобрать ключи к нему не сможете или это будет трудно.
Есть вещи, которые почти бесполезны при использовании в локальной сети. Это камеры видеонаблюдения или FTP-сервера. Доступ к камерам нужен всегда, чтобы в любой момент можно было посмотреть, что происходит дома или на другой территории. FTP для домашнего использования заводить смысла нет, есть способы организовать обмен данными проще. Так что для его использования тоже потребуется подключение из интернета.
Чтобы подключаться к таким девайсам используют переадресацию. На маршрутизатор приходит пакет с указанием номера порта, а тот его переадресуют напрямую камере или серверу. Получается, что человек из интернета общается сразу с устройством, минуя роутер. Такой способ позволяет получать данные напрямую, но при его перехвате, проникнуть в сеть становится проще.
Подключение устройств для прямого обмена данными с интернетом повышает опасность для домашней сети, но иногда другого выбора нет.
Что необходимо для выполнения перенаправления
Для начала вам нужен белый IP-адрес. Белый – это значит статический адрес. Обычно при каждом подключении провайдер выдает вам адрес из своего пула свободных IP. Каждый раз он оказывается разным, а для подключения его нужно знать. Чтобы избежать проблем с подключением, обратитесь к провайдеру и попросите, чтобы он дал вам статический адрес.
Услуга по предоставлению постоянного адреса платная, но сумма в месяц получается небольшая. Так что заплатите, если такая услуга предоставляется. Подключение такой услуги несет и угрозу, потому что вы всегда доступны по этому адресу. Это упрощает попытки подключение к вашему оборудованию злоумышленников.
Если провайдер не оказывает услуг по покупке белых адресов, то посмотрите в параметры роутера. Некоторые из них умеют работать в dynDNS, который можно использовать вместо адреса. Если на роутере такой настройки нет, то воспользуйтесь одним из сервисов, которые предоставляют услуги по использованию имени. После подключения к такому сервису, к роутеру можно обращаться по имени, а не по адресу.
Теперь на том оборудовании, которое «смотрит» в интернет настраивается переадресация портов. Прописываете, что данные, пришедшие на такой-то порт направляются такому-то устройству. Здесь тоже можно указать порт, на который они пойдут, если это важно. Теперь все полученные пакеты в неизменном виде отправятся вашему домашнему девайсу. Если порт не указывать, то все пакеты идут маршрутизатору, а оттуда распределяются стандартным порядком.
Ручной проброс через кабинет роутера
Проще всего перенаправить пакеты через настройку роутера. У них обычно есть встроенные параметры, которые называются «переадресация», «проброс портов», «port forwarding», «виртуальные порты» или каким-то похожим образом. Если название не очевидно, то лучше найти инструкцию для своей модели.
На Dlink можно сделать через мастер настройки виртуального сервера. На главном экране нажмите на него, откроется еще одно окно, в котором выберите внутренний IP, на который будут передавать пакеты.
Или можно настроить стандартный проброс, для этого зайдите в расширенные настройки, потом «Виртуальные серверы» в разделе «Межсетевой экран». В открывшемся коне нажмите на «Добавить».
Здесь заполните данные для установки соединения. Главное – это поставить значения во внешнем и внутреннем порте, чтобы маршрутизатор понимал, откуда и куда переправлять данные. Тут же можно указать и внешние с внутренними адресами.
Как пробросить порты с помощью
Бывает и так, что внешним устройством в сети является компьютер или специально созданный для этого сервер. Это не значит, что вам придется обязательно ставить роутер или настраивать все заново, большинство систем позволяет пробросить порты. Здесь покажем несколько примеров того, какие параметры нужно устанавливать, чтобы все заработало.
Если у вас более экзотические варианты и указанные способы вам не подходят, то придется смотреть инструкции конкретно под вашу версию операционной системы. Хотя что-то более сложное обычно носит специализированный характер и на домашних компьютерах не стоит.
Windows
Откройте меню пуска и наберите там «cmd», по найденной программе щелкните правой кнопкой мыши и выберите в появившемся меню «Запуск от имени администратора». В открытой командной строке введите следующую команду:
netsh interface portproxy add v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=nnn connectaddress=xxx.xxx.xxx.xxx connectport=nnn
В команде нужно установить эти данные:
- listenaddress – это тот адрес, с которого будут передавать пакеты.
- listenport – порт на адресе, принимающем пакеты, который будет прослушиваться для получения информации.
- connectaddress — удаленный или локальный адрес на который перенаправляются соединения.
- connectport — удаленный или локальный порт на который перенаправляются соединения.
Чтобы посмотреть все созданные правила введите netsh interface portproxy show all, после этого списком отобразятся все доступные перенаправления. Для удаления используйте netsh interface portproxy delete v4tov4, только впишите тут те адреса, которые были прописаны в начальной команде.
Эти способы работают и в Windows 10, и в других системах, начиная с Windows Server 2003, в котором и добавили возможность использования этих команд. Во всем, что было до него так сделать не получится. Вот только такими системами лучше не пользоваться, потому что их поддержка давно отменена, так что там нет обновлений и устранения угроз безопасности.
iptables в Линукс
В линуксе действовать будем с помощью таблиц маршрутизации iptables. Действовать будем с помощью команд, хотя в некоторых системах, таких как Linux Ubuntu есть и графическая оболочка, через которую можно провести такие операции.
Сначала включаем возможность пробрасывать порты в принципе. Для этого вводим команду:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Теперь открываем /etc/sysctl.conf и ищем там строку #net.ipv4.ip_forward=1, удаляем с неё значок комментария, чтобы она стала снова активна. Теперь пишем команду:
sudo iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
Вместо enp0s3 подставляем название вашего внешнего интерфейса, вместо enp0s8 ставим название внутреннего интерфейса. Вся этак команда разрешает проброс портов и передачу данных из внешней сети во внутреннюю.
Теперь пишем сами правила для перенаправления:
- sudo iptables -t nat -A PREROUTING -p tcp -d адрес внешнего интерфейса —dport внешний порт -j DNAT —to-destination внутренний адрес:внутренний порт
- sudo iptables -t nat -A POSTROUTING -p tcp —sport внутренний порт —dst внутренний адрес -j SNAT —to-source внешний адрес:внешний порт
В тех местах, где написан курсив, вам нужно проставить свои значения. Первая команда будет отправлять все поступившие на определенный порт внешнего интерфейса данные на определенный порт по внутреннему адресу. Вторая команда делает обратную операцию, отправляет данные с определенного порта устройства внутренней на определенный порт внешней сети.
Теперь нужно создать файл, в который запишем наши новые правила, на случай, если они слетят. Выполняем команду:
- sudo nano /etc/nat
Вписываем в файл наши созданные правила. - sudo iptables -t nat -A PREROUTING -p tcp -d адрес внешнего интерфейса —dport внешний порт -j DNAT —to-destination внутренний адрес:внутренний порт
- sudo iptables -t nat -A POSTROUTING -p tcp —sport внутренний порт —dst внутренний адрес -j SNAT —to-source внешний адрес:внешний порт
- sudo nano /etc/network/interfaces
Открываем файл интерфейсов. - Дописываем в конце строчку pre-up /etc/nat. Это позволит подгружать файл с командами после каждой перезагрузки системы.
Если вдруг захотите посмотреть все действующие правила, то введите в консоли sudo iptables -L -t nat. Отобразятся все действующие правила.
SSH-туннеля
SSH-туннели используются для безопасного внешнего доступа и передачи данных из интернета во внутреннюю сеть. Чем-то их действие похоже на организацию VPN-сервера и передачу данных внутри этой приватной сети.
Только если впн бывает еще и общим, то про SSH этого не скажешь. Такие туннели организуют для безопасной связи со своей локальной сетью или каким-то устройством в нем. Если у вас уже организован доступ к какому-то оборудованию внутри сети, то можно будет пробросить порт через него, чтобы получить нужный доступ.
SSH-туннели используют для безопасно передачи данных и подключению к свое оборудованию, но не к каждому девайсу так удобно подключаться.
Проблема возникает такая же, как и в случае с роутерами. Если у вас построен полноценный туннель, то он может быть организован на Линуксе, виндовсе или используя какую-то операционную систему с вашего маршрутизатора. При этом настройка параметров и ограничений тоже лежит на вас.
Команда для проброски портов выглядит так на большинстве устройств:
$ ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66
Теперь доступ к устройству можно получить по адресу http://localhost:2222 или командой $ ssh -p2222 localhost. Все это делается через ваш хост 99.88.77.66 к которому уже построен и настроен туннель, так что само его построение не рассматриваем.
Заключение
Проброс портов требуется в нескольких случаях, но всегда нужен для получения доступа к какой-то информации. Проводить его стоит с осторожностью, также хорошо, если вы сможете как-то дополнительно защитить оборудования, к которому теперь подключаетесь из сети. Сам белый адрес увеличивает шансы на взлом оборудования, а если иметь еще и незащищенное соединение через один из портов, то шансы увеличиваются.
Проблемы возникнут и при параноидальной настройке фаерволлов и антивирусов на компьютере или маршрутизаторе. Лучше заранее создайте исключения для каждого проброшенного порта и будущего соединения. Если этого не сделать, то в случайный момент времени антивирус может зарезать это соединение. Фаерволл-то его сразу не пропустит, если оно ему не нравится. А вот комплексные решения могут подложить свинью в самый неожиданный момент.