- Настройка проброса сетевых портов (порт форвардинга) в Windows
- Как включить перенаправления портов в Windows 10 с помощью netsh portproxy?
- Управление правилами проброса портов в Windows
- Настройка перенаправления портов в Hyper-V Server
- Что такое редирект и как его настроить
- Что такое редирект и когда он нужен
- Какие бывают редиректы
- Как настроить редирект
- Перенос сайта с одного домена на другой
- Перенос с помощью сервиса «Перенаправление домена»
- Организация перенаправления на безопасный протокол HTTPS
- Перенос сайта с домена без префикса www на домен с www
- Перенос одной страницы на другую временно или постоянно
Настройка проброса сетевых портов (порт форвардинга) в Windows
Во всех версиях Windows вы можете настроить перенаправление/проброс сетевых портов (порт форвардинг) без использования сторонних инструментов. С помощью правила форвардинга вы можете перенаправить входящее TCP соединение (IPv4 или IPv6) с локального TCP порта на любой другой номер порта или даже на порт удаленного компьютера. Причем не обязательно, чтобы в Windows был сервис, слушающий данный TCP порт. Перенаправление портов в Windows чаще всего используется для обхода файерволов или чтобы спрятать внутренний сервер или службу от внешней сети (NAT/PAT).
В Linux перенаправление портов настраивается довольно просто с помощью iptables. На серверных системах Windows Server для настройки перенаправления портов, как правило используется служба маршрутизации и удаленного доступа (RRAS). Однако есть более простой способ настройки проброса портов, который одинаково хорошо работает в любой версии Windows.
Как включить перенаправления портов в Windows 10 с помощью netsh portproxy?
Настройка перенаправления портов в Windows выполняется из командой строки через режим Portproxy команды Netsh. Синтаксис команды следующий:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
где,
- listenaddress – локальный IP адрес, на котором ожидается соединение (полезно, если у вас несколько сетевых карт или несколько IP адресов на одном интерфейсе);
- listenport – номер локального TCP порта, подключение к которому будет перенаправляться (на этом порту ожидается входящее соединение);
- connectaddress – локальный или удаленный IP-адрес или DNS-имя, на который нужно перенаправить сетевое подключение;
- connectport – номер TCP порта, на который нужно перенаправить трафик с порта listenport.
Допустим наша задача, заставить службу RDP отвечать на нестандартном порту, например 3340 (этот порт, конечно, можно изменить в настройках самой службы, но мы используем именно RDP для упрощения демонстрации техники перенаправления и проброса портов). Для этого нам нужно перенаправить входящий трафик на TCP порт 3340 на другой локальный порт – 3389 (это номер стандартного порта RDP).
netstat -na|find «3340»
Либо вы можете проверить что порт не слушается локально с помощью PowerShell командлета Test-NetConnection:
Test-NetConnection -ComputerName localhost -Port 3340
Чтобы создать правило перенаправления порта, запустите командную строку с правами администратора и выполните команду:
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.10.1.110 connectport=3389 connectaddress=10.10.1.110
Где 10.10.1.110 – текущий IP адрес данного компьютера
Теперь с помощью утилиты netstat проверьте, что в Windows теперь слушается локальный порт 3340:
netstat -ano | findstr :3340
А на сетевом интерфейсе, для которого создается правило перенаправления портов должна быть включена поддержка IPv6.
Это обязательные условия для корректной работы порт-форвардинга. Без службы IP Helper и без включенной поддержки IPv6 механизм перенаправления не работает.
В Windows Server 2003 / XP для работы перенаправления дополнительно нужно включить параметр реестра IPEnableRouter = 1 в ветке HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters.
Вы можете определить процесс, который слушает указанный локальный порт с помощью его PID (в нашем примере PID – 636):
tasklist | findstr 636
Теперь попробуем подключиться на данный порт с удаленного компьютера при помощи любого RDP клиента. В качестве rdp-порта нужно указать 3340 (номер порта указывается после двоеточия после адреса rdp-сервера), например, 10.10.1.110:3340
RDP подключение должно успешно установиться.
Если нужно перенаправить входящее TCP соединение на удаленный компьютер, используете такую команду:
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.1.100
Это правило перенаправит весь входящий RDP трафик (с локального порта TCP 3389) с этого компьютера на удаленный компьютер с IP-адресом 192.168.1.100.
Управление правилами проброса портов в Windows
netsh advfirewall firewall add rule name=”RDP_3340” protocol=TCP dir=in localip=10.10.1.110 localport=3340 action=allow
Или с помощью командлета PowerShell New-NetFirewallRule:
New-NetFirewallRule -DisplayName «RDP_3340» -Direction Inbound -Protocol TCP –LocalPort 3340 -Action Allow
При создании входящего правила файервола через графический интерфейс для порта 3340 не нужно ассоциировать никакую программу, т.к. данный порт слушается исключительно сетевым драйвером.
Можно создать любое количество правил перенаправления локальных портов Windows. Все правила netsh interface portproxy являются постоянными и сохраняются в системе после перезагрузки Windows.
Чтобы вывести на экран список всех активных правил перенаправления TCP портов в Windows, выполните команду:
netsh interface portproxy show all
В нашем случае присутствует только одно правило форвардинга с локального порта 3340 на 3389:
Чтобы удалить все имеющиеся правила перенаправления и полностью очистить таблицу с правилами порт-форвардинга:
netsh interface portproxy reset
Для настройки перенаправления UDP трафика можно использовать Windows Server с ролью RRAS и NAT. Вы можете настроить перенаправление портов между интерфейсами компьютера с помощью графической оснастки (rrasmgmt.msc) или командой:
netsh routing ip nat add portmapping Ethernet udp 0.0.0.0 53 192.168.1.54 53
Еще одной неявной возможностью portproxy является возможность создать видимость локальной работы любого удаленного сетевого сервиса.
Например, создадим такое перенаправление с локального порта 8888 на удаленный адрес 213.180.204.3:
netsh interface portproxy add v4tov4 listenport=8888 connectport=80 connectaddress= 213.180.204.3 protocol=tcp
Теперь, если в браузере перейди по адресу http://localhost:8888/ , откроется стартовая страница Yandex. Т.е. несмотря на то, что браузер обращается к локальному компьютеру, в нем открывается страница с внешнего веб-сервера.
Перенаправление портов также можно использовать, чтобы пробросить порт с внешнего IP адреса сетевой карты на порт виртуальной машины, запущенной на этом же компьютере. В Hyper-V такой проброс порта можно настроить на виртуальном коммутатор (см. ниже).
Windows не умеет пробрасывать диапазон TCP портов. Если вам нужно пробросить несколько портов, придется вручную создавать несколько правил перенаправления. Проще всего сформировать список команд netsh interface portproxy add с разными портами в блокноте и затем вставить в командную строку для выполнения.
Настройка перенаправления портов в Hyper-V Server
При использовании на вашем компьютере роли Hyper-V (может быть установлена как на Windows 10, так и на Windows Server или в виде бесплатного Windows Hyper-V Server), вы можете настроит проброс портов DNAT с помощью PowerShell. Допустим, вы хотите перенаправить все https запросы, которые получает ваш хост Hyper-V на IP адрес запущенной на хосте виртуальной машины. Для этого используется команды Hyper-V StaticMapping.
Сначала нужно создать виртуальный коммутатор с NAT:
New-VMSwitch -Name «NAT» -SwitchType NAT -NATSubnetAddress 192.168.0.0/24
Затем нужно подключить нужную ВМ в указанный коммутатор и включить правило трансляции адресов для всех виртуальных машин, подключенных через данный виртуальный коммутатор Hyper-V:
New-NetNat -Name Web_NAT -InternalIPInterfaceAddressPrefix 192.168.0.0/24
Add-NetNatStaticMapping -ExternalIPAddress «0.0.0.0/24» -ExternalPort 443 -Protocol TCP -InternalIPAddress «192.168.0.2» -InternalPort 443 -NatName Web_NAT
После выполнения этих команд весь HTTPS трафик, который приходит на 443 порт гипервизора будет переправлен на серый IP адрес виртуальной машины.
Что такое редирект и как его настроить
Владельцы интернет-ресурсов часто сталкиваются с тем, что им нужно изменить доменное имя сайта. Например, из-за ренейминга или чтобы перейти на безопасный протокол соединения. Чтобы предстоящие изменения не повлияли на ваш бизнес и пользовательский опыт клиентов, используйте редирект.
В этой статье разбираемся, в каких случаях он нужен и как его настроить.
Что такое редирект и когда он нужен
Редирект — это перенаправление пользователя с одного URL на другой. Это нужно, чтобы человек не потерял вас, если вы измените адрес сайта или страницы. Кликая на старую ссылку, пользователь незаметно для себя окажется по новому нужному адресу. Например, если вы перейдёте по ссылке http://nic.ru/, автоматически попадёте на сайт с безопасным профилем https://nic.ru/.
Неактуальный сайт или страницу программисты называют донором, а ту, на которую перенаправляют, — акцептором. В нашем случае http://nic.ru/ — сайт-донор, а https://nic.ru/ — сайт-акцептор.
В каких случаях нужен редирект
- Для адаптации. Самый популярный редирект — перенаправление пользователя с десктопной версии сайта на мобильную.
- При ренейминге. В случаях, когда вы изменили название бренда и перешли на сайт с новым доменным именем.
- При переходе на безопасный протокол соединения. Чтобы обезопасить себя и своих клиентов, меняете протокол http на https.
- Для перенаправления с неактуальных страниц/сайтов. Например, товара больше нет в продаже или вы больше не оказываете какую-то услугу и хотите перенаправить пользователя на страницу с похожим товаром или услугой.
- При сайтах или страницах-дублях. Схожий контент на нескольких ресурсах ухудшает ранжирование, а если сайты или страницы идентичны, поисковые системы вовсе исключат эти страницы из поиска. Чтобы не создавать дубли и не рисковать ранжированием, настраивают постоянный или временный редирект.
- При частых запросах с www, если ваш сайт без www. На вас могут сослаться и так, и так, но для поисковых систем это разные сайты, поэтому настраиваете редирект на один из вариантов.
- При переходе на новый движок сайта. У каждой CMS свои правила генерации URL. Если адрес не будет совпадать со старым, без редиректа не обойтись — иначе клиенты не смогут вас найти.
Это не все возможные поводы для редиректа. Они возникают в зависимости от того, какие проблемы нужно решить перенаправлением.
Какие бывают редиректы
Есть четыре основных вида редиректа — 301, 302, 303, 307. Поисковые системы сами определяют его по коду состояния http.
301 — постоянный редирект
Он означает, что ресурс навсегда перемещён на новый адрес. Сайт-донор пропадает из поиска, авторитет и показатели посещаемости передаются сайту-акцептору, который и будет индексироваться.
302 — временный редирект со статусом «Найдено»
Поисковые системы расценивают страницу как временно несуществующую и перенаправляют пользователя на нужную. Все настройки и показатели останутся по старому адресу, индексироваться новый сайт тоже не будет. Такое перенаправление пригодится, например, когда нужно будет обновить сайт.
303 и 307 — аналоги 302 редиректа
303 редирект обозначает «смотрите другой ресурс», его применяют, когда вы не перенесли контент на другой адрес, но у вас есть подходящий под перенаправление другой сайт или страница. Для этого редиректа браузер использует метод GET.
Статус 307 редиректа — временное перенаправление. То есть запрашиваемая страница в данный момент находится по другому адресу. В отличие от 302 изначальная версия ресурса сохранит свои позиции.
Вам не обязательно запоминать, какой редирект что обозначает. Эти цифры при настройке вам не пригодятся. Достаточно понимать, какое решение подойдёт именно в вашей ситуации — временное или постоянное — и написать код, подходящий под нужный редирект.
Как настроить редирект
Настроить редирект можно несколькими способами: изменяя код в файле .htaccess, через админку сайта или в специальных сервисах. Важно: работа с файлом .htaccess возможна при использовании на хостинге веб-сервера Apache.
Для работы в .htaccess нужно установить FTP-клиент (например, filezilla.ru или totalcommander.ru) и уметь работать с кодом, поэтому такой способ сложнее. Обычно его выбирают, когда нужно перенести домен и сделать это бесплатно. Более лёгкий способ — купить доступ к сервису. Тогда знания кода не нужны.
Если нужно сделать перенаправление со страницы, подойдёт более простой вариант переноса — через админку сайта.
В этой статье рассмотрим эти способы на примере самых распространённых причин для редиректа.
Перенос сайта с одного домена на другой
Этот тип перенаправления можно сделать с помощью FTP-клиента. Этот вариант подойдёт тем, кто умеет работать с кодом или готов этому научиться.
Если язык программирования не для вас, перенести домен можно без знаний кода. У RU-CENTER есть специальный сервис «Перенаправление домена».
Перенос с помощью FTP-клиента
Откройте FTP-клиент и найдите файл .htaccess в корневом каталоге вашего сайта. Уточнить путь к корневому каталогу вы можете у вашего хостинг-провайдера. Если в корневом каталоге сайта нет файла .htaccess, создайте новый файл с таким именем (точка в начале имени обязательна).
Чтобы изменить файл, нажмите на него правой кнопкой мыши и кликните «Редактировать» (в используемом вами FTP-клиенте может быть другой способ начала редактирования файла, но обычно названия пунктов меню очень похожи). Он автоматически загрузится к вам на компьютер и откроется в редакторе.
Мы не рекомендуем использовать для редактирования .htaccess редакторы, встроенные в ОС Windows, в частности, «Блокнот». Если в файле содержатся кириллические символы и вы будете сохранять файл в кодировке UTF-8, такие редакторы могут автоматически добавлять в начало файла byte-order-marker (BOM), который может некорректно интерпретироваться веб-сервером. Для редактирования .htaccess лучше использовать специализированные редакторы, например, Notepad++.
Дальше находим в файле .htaccess элемент кода:
RewriteEngine On
RewriteBase /
Если такой записи нет, вставляем её сами в конец файла. Сразу после неё вставляем код с нужным условием:
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
где old-site\.ru — сайт-донор, а http://www.site.ru — сайт-акцептор.
Важно: В имени домена дефисы и точки необходимо экранировать, добавляя перед ними символ «\». Если речь идёт о домене, например, с кириллическими символами, то его нужно указывать в виде Punycode (xn--…), также включая символ «\».
Как только вы сохраните файл в редакторе, FTP-клиент напомнит вам загрузить обновлённый .htaccess обратно. Просто нажмите на кнопку «Да», и клиент загрузит файл автоматически.
Напоминание загрузить обновлённый .htaccess в FTP-клиенте FileZilla
Перенос с помощью сервиса «Перенаправление домена»
Если настройка через FTP-клиента кажется вам сложной, можно выбрать вариант проще — приобрести доступ к сервису «Перенаправление домена» у RU-CENTER. Чтобы в нём работать, не нужно разбираться в коде. Сможете сделать редирект для домена, всех его поддоменов, а также настроить до десяти индивидуальных правил перенаправления для конкретных поддоменов.
Организация перенаправления на безопасный протокол HTTPS
Ещё один популярный вариант редиректа — перенос сайта на безопасный протокол соединения с http на https. Мы расскажем об одном способе настройки этого вида редиректа, он подходит для хостинга RU-CENTER. Но, алгоритм обеспечения работы по HTTPS может отличаться на разных хостингах, поэтому точный способ такого перенаправления стоит уточнить у вашего хостинг-провайдера.
Откройте FTP-клиент и найдите файл .htaccess в корневом каталоге сайта (уточнить имя корневого каталога вы можете у вашего хостинг-провайдера). Если файла с таким именем нет в корневом каталоге, создайте новый файл с именем .htaccess.
Находим в файле .htaccess элемент кода:
RewriteEngine On
RewriteBase /
Если такой записи нет, вставляем её сами в конец файла. Сразу после неё вставляем код с нужным условием:
RewriteCond %
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
где https://domain.ru — ваш сайт.
Перенос сайта с домена без префикса www на домен с www
Откройте FTP-клиент и найдите файл .htaccess в корневом каталоге сайта (уточнить имя корневого каталога вы можете у вашего хостинг-провайдера). Если файла с таким именем нет в корневом каталоге, создайте новый файл с именем .htaccess.
Находим в файле .htaccess элемент кода:
RewriteEngine On
RewriteBase /
Если такой записи нет, вставляем её сами в конец файла. Сразу после неё вставляем код с нужным условием:
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
где site.ru — страница-донор, а http://www.site.ru — страница-акцептор.
Перенос одной страницы на другую временно или постоянно
Перенаправить отдельную страницу можно в админке сайта. Это значительно упрощает задачу тем, кому нужен именно этот тип редиректа, а разбираться в коде не хочется.
Объясняем, как это сделать, на примере сайта на WordPress.
Заходим в админку сайта, находим в списке возможностей вкладку «Инструменты», в ней выбираем «Перенаправления» и кликаем на кнопку «Добавить новое».
Путь получается следующий: админка сайта → Инструменты → Перенаправления → Добавить новое.
Чтобы добавить перенаправление, заполните поля:
Исходный URL — в нём напишите относительный путь, то есть адрес страницы без указания домена, только то, что прописано после слеша.
Параметры запроса — выберите из выпадающего списка нужное условие. В нашем случае — «Точное совпадение всех параметров в любом порядке».
Целевой URL-адрес — полный адрес, куда вы планируете перенести контент.
Когда мы сохранили перенаправление, получился такой редирект:
где /baza-znanij/slovar — страница-донор,
Не откладывайте настройку редиректа. Есть как минимум три причины, чтобы перенаправить нужные страницы сразу же, как возникла потребность:
- Редиректы сохраняют качество ранжирования, а значит и обеспечивают трафик. Это легально: настройка перенаправлений не нарушает требования поисковых роботов.
- Редиректы не ухудшают пользовательский опыт — на перенаправление пользователя с одного адреса на другой уходит меньше секунды.
- Редиректы полезны для SEO-оптимизации. Сайты с одинаковым контентом хуже ранжируются, а редиректы помогают сосредоточить трафик на одном ресурсе и не потерять позиции в поиске.