- Записки IT специалиста
- Настраиваем проброс портов в Windows при помощи командной строки и Portproxy
- Дополнительные материалы
- Проброс диапазона (пула) портов — потратил два часа времени, я в шоке!
- Пробросить порт
- Решение
- Проброс портов и настройка роутера для внешнего доступа
- Содержание
- Содержание
- Зачем открывать доступ извне?
- Цвета и формы IP-адресов
- Кто я, где я, какого я цвета?
- Что такое порты и зачем их бросать?
- Игровые порты: что, куда бросаем?
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Настраиваем проброс портов в Windows при помощи командной строки и Portproxy
Настраиваем проброс портов в Windows при помощи командной строки и Portproxy
Необходимость проброса портов весьма часто встающая перед системным администратором задача. Обычно для этой цели используют службы маршрутизации и удаленного доступа (RRAS), но в ряде случаев использование данного инструмента избыточно. В тоже время немногие знают о такой службе как Portproxy, которая управляется из командной строки при помощи команд Netsh. Тем не менее данная служба позволяет справиться с поставленной задачей проще, быстрее и удобнее, чем инструменты графического интерфейса.
Часто можно услышать совершенно неверное утверждение, что в части сетевых настроек операционные системы Windows значительно уступают своим конкурентам (Linux и BSD). Отчасти такие суждения опираются на опыт администрирования стандартных ролей полностью игнорируя возможности командной строки.
Начиная с Windows Server 2003 в состав системы был в введена команда Netsh, которая позволяет гибко управлять сетевыми настройками компьютера. Обзор всех возможностей этой утилиты займет не одну статью, поэтому мы остановимся на командах Netsh для интерфейса Portproxy, позволяющих непосредственно решить нашу задачу.
Данный набор команд позволяет перенаправлять приходящие пакеты с IPv4 и IPv6 портов на любые IPv4 и IPv6 порты компьютера назначения в любых комбинациях. Единственное ограничение — portproxy может работать только с протоколом TCP, но в большинстве случаев этого достаточно.
Для добавления перенаправления используется команда add v4tov4 (если требуется перенаправление с IPv4 в IPv6 используйте v4tov6 и т.д.), полный синтаксис будет такой:
- listenaddress — локальный адрес на котором принимаются соединения
- listenport — локальный порт на котором принимаются соединения
- connectaddress — удаленный или локальный адрес на который перенаправляются соединения
- connectport — удаленный или локальный порт на который перенаправляются соединения
Для изменения уже существующего правила используется команда set v4tov4, которая имеет идентичный синтаксис, listenaddress и listenport — являются обязательными параметрами. Из необязательных параметров можно указывать только тот, который нужно изменить.
Для удаления правил используйте delete v4tov6 с указанием входящих адреса и порта:
Для просмотра существующих правил введите:
Вместо all допустимо указывать v4tov4 или v6tov4 и т.п. для просмотра только соответствующих правил.
Для сброса всех существующих правил используйте:
Чтобы не быть голословными рассмотрим практический случай использования portproxy в одной довольно непростой ситуации.
У одного нашего клиента имеется две аффилированных (т.е. принадлежащих одному владельцу) организации, имеющие разный вид деятельности и между собой не взаимодействующие. Одна из них находится в городе и не испытывает проблем с внешними коммуникациями. Вторая в сельской местности где доступен только среднего качества интернет, а о выделенном IP-адресе не может быть и речи.
Поэтому, когда встал вопрос организации удаленного доступа к сети второй организации с административными и контрольными целями, то было принято решение использовать для этого ресурсы первой организации, при этом внутренние сети обоих компаний не должны видеть друг друга и вообще иметь какой-либо доступ к ресурсам другой организации.
Кроме того, выяснилось, что обе сети имеют одинаковый диапазон IP-адресов, что делало маршрутизацию между ними в принципе крайне затруднительной. По условиям задачи требовалось обеспечить доступ к RDP (порт 3389) сервера SRV-2-1 и SSH (порт 22) сервера SRV-2-2 второй организации, для этого выделялся сервер SRV-1-1 первой компании, при этом, как можно увидеть из схемы ниже, сервера обоих компаний также имеют одинаковые внутренние адреса.
Между серверами был поднят VPN-туннель, и они видят друг друга по адресам VPN-сети (10.8.0.0), а дальше на выручку приходит portproxy. Так как порты 3389 и 22 соответствующие нужным службам уже использовались для целей администрирования первой компании, то мы выбрали для служб второй компании внешние порты 3390 и 22222, которые были проброшены с внешнего интерфейса роутера первой компании на сервер SRV-1-1 штатным образом.
Теперь нам надо перенаправить все соединения на эти порты в сеть второй компании, но там нам доступен только SRV-2-1 по VPN-адресу, поэтому направим пакеты туда, для чего создадим два правила:
Первое правило отправит все пакеты пришедшие на порт 3390 с адресом 192.168.0.200 (внутренний адрес SRV-1-1) в VPN-туннель серверу SRV-2-1, а так как он уже является целевым для службы RDP, то сразу меняем порт назначения на 3389. Первая часть задачи выполнена.
Второе правило отправит к SRV-2-1 все пакеты с порта 22222 (SSH), теперь нам надо научить этот сервер как правильно доставить их адресату. Для этого добавим уже этому серверу следующее правило:
Согласно которому сервер SRV-2-1 в сети второй компании будет слушать порт 22222 на интерфейсе VPN-сети и передавать все полученные пакеты на порт 22 (SSH) сервера SRV-2-2.
Как видим мы весьма просто реализовали довольно сложную схему, так пакет к серверу SRV-2-2 проходит три промежуточных узла, но при этом мы не настраивали никакой маршрутизации и не устанавливали никакого дополнительного ПО и вообще обошлись минимальным вмешательством в инфраструктуру.
Дополнительные материалы
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Проброс диапазона (пула) портов — потратил два часа времени, я в шоке!
И так начну по порядку, а дело было так.
Один из давних клиентов, которому мы делали и обслуживаем видеонаблюдение, позвонил и сказал «Срочно сделайте нам VoIP телефонию в офис, т.к. мы теряем клиентов и пропускаем звонки». Ну думаю созрели, всего то прошло два года:)
Приступили к проекту, дошла очередь до настройки и поверки телефонии. Все прекрасно работает, но некоторые сотрудники компании работали удаленно и у них должны были работать телефоны на местах. Телефоны в свою очередь регистрируются на АТС, которая стоит в офисе. И вот тут появилась проблема, сигнализация полноценно работала только в одну сторону, а голоса вообще не было. Ну при таких симптомах все стандартно и понятно, нужно открыть и пробросить соответствующие порты на пограничном маршрутизаторе. Обычно всем своим клиентам мы рекомендуем и ставим cisco, это надежно, удобно и как не удивительно звучит, но не дорого. А главное работает вечно и как часы. Но этот клиент заупрямился и сказал, что денег лишних нет и что вот сейчас мы прекрасно живем на windows server и так и будем жить, т.е. учредители денег на cisco не дадут.
Нет так нет, будем делать как есть. Так как на этом сервере два года назад пробрасывали порты для видеорегистратора, то дорожка уже была протоптана. Для сигнализации нужно было пробросить всего один порт udp 5060, а вот для голоса нужно было пробросить диапазон udp 9000 – 20000 и тут все началось, начинаю создавать правило, а этот изумительный windows server 2012 не умеет пробрасывать диапазон портов, любой простой домашний роутер делает это, а виндоус сервер 2012 нет. Ну нас так просто не возьмешь и полез во всемирный разум за ответом.
Ответ не утешительный – виндоус пробрасывать диапазон портов не умеет и все с этим очень мучаются, кто софт ставит дополнительный для решения этой проблемы, кто железку меняет/устанавливает. Но эти два варианта не подходили и вот нашел!
Можно запустить из командной строки команду которая создаст последовательно порты.
1. открываем CMD от имени администратора
2. сохраняем существующую конфигурацию nat в файл введя вот такую команду netsh routing ip nat dump > c:\conf\nat.txt как видно конфигурация будет сохранена в файл nat.txt
3. вводим команду for /L %k in (9000,1,20000) do netsh routing ip nat add portmapping Ethernet udp 0.0.0.0 %k 192.168.1.112 %k где:
- — Ethernet — это внешний интерфейс;
- — (9000,1,20000) — пул портов с 9000 по 20000 и шагом 1;
- 192.168.1.112 — ip АТС до которой нужно пробросить порты;
- Все остальные параметры нам не интересны.
Сервер достаточно долго создает эти настройки и потом долго их загружает в маршрутизацию. Примерно 20 – 40 минут.
4. далее можно повторить пункт два, чтобы убедится, что все порты прописались.
Если нужно удалить сразу диапазон портов, то команда выглядит вот так for /L %k in (9000,1,20000) do netsh routing ip nat delete portmapping Ethernet udp 0.0.0.0 %k
После проверяем работоспособность удаленных телефонов и о чудо, все работает!
В этом месте обычно все улыбаются, шутят, радуются и хлопают!:)
Пробросить порт
Добрый день!
Уважаемые форумчане, тут появилась такая проблема:
Есть сервер (Windows Server 2007) нужно на нем запустить Virtualbox, в виртуалбоксе нужно запустить Ubuntu Server
Это все просто, но!
Немного не пойму: делаю проброс портов («netsh interface portproxy add v4tov4») при этом из самого сервера видно, что порты «прослушиваются» убунтой, но из глобальной сети (ака интернет) нет доступа к портам убунту.
Nat от сервера пробит по этим портам.
>netsh interface portproxy add v4tov4 192.168.137.2 192.168.0.17 TCP
global_port и local_port отличаются (в принципе могу прикрепить к другому порту демона. только зачем?)
Требуется получать ответ от убунту из интернета.
На удалленый комп пробросить тунель через ICMP
Есть микротик с выделеным внешним ip к которому подключен сервер (windows, linux). Надо на.
Возможно ли пробросить принтер в Windows7 виртуалку Hyper-V, и как это реализовать?
Всем доброго времени суток. Имеется задача: заставить принтер Canon LBP-1120 печатать. Имеется.
Не могу пробросить порт
Здравствуйте! На днях было переключение на кабельный интернет (IdNet — оптоволокно до свича в.
Пробросить порт на сервере
У меня есть TCP клиент на андроиде и TCP сервер на ноутбуке. Но андроид телефон с ноутбуком может.
А виндовый сервер напрямую смотрит в инет? — Да
..а не 192.168.137.2 — 192.168.137.2 это адрес виртуальной машины.
192.168.0.17 — адрес карты сервера, которая смотрит в интернет.
нужный порт виден из интернета. — проверял
Загвоздка как раз в том, что нельзя достучаться до виртуалки извне (из интернета)
P.S. вроде как по логике должно работать. ан нет
«Красные» пути просматриваются.
порты все открыты.
на winServer фаерволл отключен
Решение
т.е. неверно настроено проксирование запроса?
Хм. попробую, спасибо )
Добавлено через 18 минут
Увы и ах, .
Придется «раскошелиться» на новый сервер )
Всем спасибо. Возможно, проблема в разных сетевых картах. хотя странно все это. Должно работать
да сам, если честно, не совсем понимаю.
проблема в том, что порт (в частности 5656) прослушивается с win’сервера, а из сети говорят, что порт закрыт.
если что-либо (например Apache) прикрутить к этому порту (опять же на WinServ), то все ок, порт открыт, ответ есть.
если же этот самый апач (для примера) запустить уже на Ubuntu и на WinServer настроить проксирование, то интернет сообщает нам, что наш порт закрыт.
Может я ошибся в команде?
netsh interface portproxy add v4tov4 5656 192.168.137.2 5656 192.168.0.17 TCP
где:
192.168.137.2 — адрес Ubuntu
192.168.0.17 — адрес WinServer
P.S. проброс портов (NAT) на виртуалбоксе не требуется. Сеть там через виртуальную карту
Добавлено через 8 минут
ладно, не буду ломать спину серверу ) приобрету еще один.
как раз перераспределю нагрузку 🙂
Всем спасибо.
Прошу закрыть тему.
Проброс портов и настройка роутера для внешнего доступа
Содержание
Содержание
Домашний роутер обычно не дает возможности добраться из внешнего Интернета до компьютеров во внутренней сети. Это правильно — хакерские атаки рассчитаны на известные уязвимости компьютера, так что роутер является дополнительным препятствием. Однако бывают случаи, когда доступ к роутеру и его локальным ресурсам из «внешнего мира» становится необходим. О том, в каких случаях бывает нужен доступ извне, и как его безопасно настроить — эта статья.
Зачем открывать доступ извне?
Доступ «снаружи» нужен не только в экзотических случаях вроде открытия игрового сервера или запуска сайта на домашнем компьютере. Гораздо чаще приходится «открывать порт» для многопользовательской игры, а это — как раз предоставление внешнему пользователю (серверу игры) доступа к внутренней сети (порт компьютера). Если необходимо удаленно подключиться и настроить компьютер или роутер, скачать файл-другой из домашней сети, находясь в командировке, или посмотреть видео с подключенных к домашней сети 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.
В следующей таблице приведены некоторые игры и используемые ими порты на ПК: