Проброс портов в Ubuntu: как сделать

Настройка цифровой техники

Что такое проброс портов в Linux

Сначала нужно разобраться в сути явления проброса портов Linux. Эта техника необходима в том случае, когда запрашивающих портов гораздо больше, чем места на искомом устройстве. В этом случае для связи пользователя и сервиса нужна особая связь через «посредника».

В целом проброс портов debain или иными словами, настройка rinetd, осуществляется с помощью общей программы NAT.

Работа передачи данных достаточно проста и понятна: компьютер или ноутбук имеет свой уникальный адрес. Когда с помощью него нужно передать какие-то программы или документы, идет запрос к роутеру, а тот меняет адрес компьютера на уникальный адрес сервера. Таким образом, устанавливается связь пользователя с сервером. Обратный ответ получается аналогично через роутер. Чтобы можно было устанавливать свои адреса для роутера, было создано перенаправление портов Ubuntu.

Ubuntu port forwarding имеет несколько этапов работы:

  1. Переадресация трафика на ядерном уровне. Это происходит с помощью выражения echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward. Чтобы это состояние и возможные изменения смогли сохраниться после перезагрузки оборудования, нужно ввести команду sudo sysctl –w net.ipvip_forward=1.
  2. Настройка прохождения пакетов. Чтобы новые пакеты беспрепятственно приходили на определенный порт, следует ввести выражение sudo iptables -A FORWARD -i eth0 -o eth1 -p tcp —syn —dport 80 -m conntrack —ctstate NEW -j ACCEPT. Для разрешения прохода другого трафика нужно ввести команду sudo iptables -A FORWARD -i eth0 -o eth1 -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT. Чтобы процесс хорошо проходил в обоих направлениях, нужно ввести запись $ sudo iptables -A FORWARD -i eth1 -o eth0 -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT. По умолчанию поставить режим DROP: sudo iptables -P FORWARD DROP.
  3. Модификация пакетов. В этом случае создаются определенные правила работы системы с пакетами. Чтобы осуществлялось перенаправление документов только на один порт, нужна команда: sudo iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 80 -j DNAT —to-destination168.1.2. Можно настроить получение пакетов на маршрутизатор: sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp —dport 80 -d 192.168.1.2 -j SNAT —to-source 192.168.1.1. Для установки еще одного порта: sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp —dport 80 -d 192.168.1.2 -j SNAT —to-source 192.168.1.1:8080. Для указания возможного диапазона: sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp —dport 1000:2000 -d 192.168.1.2 -j SNAT —to-source 192.168.1.1
  4. Сохранение настроек. Это делается просто, одной записью: sudo service iptables-persistent save.

Технология Ubuntu port forwarding достаточна проста.

Совет! Начинающему пользователю для профилактики различных проблем лучше перед началом проброса портов проконсультироваться со специалистами сервисного центра.

Какие заклинания надо знать, что бы запустить VirtualBox Guest Additions, в данном случае, на Ubuntu Server?

  • 1 подписчик
  • 22 часа назад
  • 95 просмотров

ответ
1

  • linux
    • Linux

    • +4 ещё

    Простой

  • Как выполнить проброс портов в Ubuntu Server

    Термин «проброс портов» активно используют в своей терминологии профессионалы, а для новичков подобный жаргон часто остаётся непонятным. Это технология, которая позволяет работать с компьютером в локальной сети из интернета.

    При этом в локальной сети может находиться маршрутизатор, который использует преобразование сетевых адресов. Таким образом, происходит перенаправление трафика с определённых портов по внешнему адресу на определённый адрес ПК во внутренней сети.

    С Ubuntu проброс портов достаточно несложен в исполнении.

    Как сделать проброс портов в ubuntu server

    Проброс портов может понадобиться при организации пиринговой сети.

    Подход проброса портов часто используется, когда нужно организовать на локальном компьютере сервер с доступом из любой точки мира, создать пиринговую сеть, или же использовать такое соединение для игр с большим количеством реальных игроков. Мы рассмотрим несколько основных способов реализации такой функции.

    Средствами маршрутизатора

    На некоторых маршрутизаторах есть возможность быстро включить поддержку проброса. Допустим, на устройствах D-Link она носит название «виртуальный сервер». Как правило, такая настройка выполняется через web-оболочку.

    1. Откройте браузер. В адресной строке наберите 192.168.0.1.
    2. Введите имя пользователя и пароль.
    3. Если на вашем маршрутизаторе есть Мастер настройки, запустите его и выберите задачу «Настройка виртуального сервера». Или же попробуйте найти такую функцию в разделах настроек «Межсетевой экран (Брандмауэр, firewall).
    4. В появившихся окнах задайте все необходимые параметры сервера. Как правило, это:
      • Интерфейс. Здесь нужно выбрать соединение для связи между компьютерами.
      • Внутренний IP. Это адрес сервера в местной сети.
      • Внешний (удалённый) IP. Адрес сервера, с которого будет осуществляться доступ.
      • Имя настройки. Имя для набора параметров.
    5. Сохраните введённые настройки.

    Как сделать проброс портов в ubuntu server

    Такой подход позволяет создать перенаправление средствами роутера. Он применим к любой операционной системе, в том числе, к Убунту Сервер.

    С использованием hamachi

    Этот способ ориентирован именно на Ubuntu, где проброс портов будет выполняться с помощью Hamachi. Хамачи позволяет построить VPN. Другими словами — это программа для работы с виртуальными частными сетями.

    Допустим, в разных сетях существует группа удалённых друг от друга ПК, а связь в сети выполняется через VPN Hamachi. Сама программа должна быть установлена на сервере. После этого можно настраивать проброс портов.

    Идея в том, что ПК из других локальных сетей будут обращаться напрямую только к серверу. Он, в свою очередь, будет перенаправлять их на нужный ПК внутри сети, на котором будет находиться необходимый порт.

     Для выполнения инструкций потребуется компьютер с установленной Ubuntu Server.

    Установка Хамачи. Для начала, загрузите пакет с официального сайта:

    wget https://secure.logmein.com/labs/logmein-hamachi_2.1.0.119-1_amd64.deb

    Инсталлируйте нужный пакет:

    sudo apt-get install lsb

    Теперь проведите сборку пакета, который был загружен:

    dpkg -i logmein-hamachi_2.1.0.119-1_amd64.deb

    Можно запустить соответствующую службу, а также саму программу:

    service logmein-hamachi starthamachi login

    Как сделать проброс портов в ubuntu server

    Присвойте личному компьютеру имя в Хамачи. После этого подключитесь к нужной сети:

    hamachi set-nick $NAME.hamachi join $NAME_NETWORK

    Введите все нужные данные для доступа к сети.

    Теперь рассмотрим, как на базе созданного подключения прокинуть порт. Воспользуемся утилитой Rinetd. Для начала нужно загрузить саму утилиту:

    sudo apt-get install rinetd

    Теперь в файлы конфигурации потребуется внести изменения:

    nano /etc/rinetd.conf

    Сам файл, открываем при помощи редактора nano. В конце документа нужно добавить строчку:

    (IP-интерфейса сервера) (прослушиваемый порт) (адрес внешнего ПК) (порт внешнего ПК)

    Вставлять значения нужно без скобок, с пробелами. Для каждого подключения нужно добавить свою строку, по порядку. Теперь нужно выполнить перезапуск службы:

    service rinetd restart

    Теперь потребуется отключить межсетевой экран:

    sudo ufw disable

    Вот и всё. В завершение процесса нужно перезагрузить сервер, после чего можно проверить подключения. Проброшенный трафик можно будет контролировать при помощи дополнительных утилит.

    Не добавляется проект. Почему?

    • 1 подписчик
    • час назад
    • 29 просмотров

    ответа
    2

  • linux
    • Linux

    • +2 ещё

    Простой

  • WiFi адаптеры, поддерживающие RPi 4 и Linux(Debian)?

    • 1 подписчик
    • вчера
    • 73 просмотра

    ответов
    0

  • linux
    • Linux

    Простой

  • Почему на Линуксе нету Directx и программы работают медленнее?

    • 1 подписчик
    • вчера
    • 234 просмотра

    ответа
    4

  • Показать ещёЗагружается…
  • Вакансии с Хабр Карьеры

    Системный администратор Linux

    СберЛогистика
    •Москва
    от 80 000 ₽

    Инженер linux/ системный администратор linux

    Southbridge

    от 100 000 ₽

    DevOps Engineer

    Битворкс
    •Томск
    от 170 000 до 200 000 ₽
    Ещё вакансии

    Заказы с Хабр Фриланса

    Натянуть HTML-шаблон на движок Monstra CMS

    28 авг. 2021, в 21:54
    1500 руб./за проект

    Требуется поставить на все изображения WORDPRESS товары, водяной знак

    28 авг. 2021, в 21:33
    500 руб./за проект

    Сделать функционал реферальной программы (php)

    28 авг. 2021, в 21:30
    1000 руб./в час
    Ещё заказы

    Минуточку внимания

    Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями Зарегистрироваться
    Самое интересное за 24 часа

    • Надо ли пересобирать ядро на VDS для повышения производительности?

      • 1 подписчик
      • 1 ответ
    • Мобильный all-in-one pc или планшет 17″+?

      • 3 подписчика
      • 1 ответ
    • Как использовать ES6 Proxy с TypeScript?

      • 2 подписчика
      • 2 ответа
    • LiteSpeed Cache как настроить?

      • 2 подписчика
      • 0 ответов
    • Поможет ли суррогатный ключ увеличить скорость вставки в таблицу?

      • 4 подписчика
      • 2 ответа
    • Скачать компьютерную Флэш игру на свой сайт?

      • 3 подписчика
      • 4 ответа
    • Как встроить embedded webserver в .NET Winforms приложение?

      • 3 подписчика
      • 0 ответов
    • Зачем в HTTPS нужен SSL сертефикат?

      • 2 подписчика
      • 2 ответа
    • Куда поместить логику проверки данных перед записью?

      • 2 подписчика
      • 1 ответ
    • Как предотвратить утечку памяти в событиях node.js?

      • 2 подписчика
      • 0 ответов
    • © Habr
    • О сервисе
    • Обратная связь
    • Блог

    Проброс и перенаправление портов средствами iptables

    01.10.09 04:27 / Обновлено 04.08.14 07:51 | Версия для печати Linux

    Допустим, мы находимся в локальной сети и от внешнего мира отделены шлюзом под управлением Linux.
    В этой же локальной сети находятся сервера, которые должны предоставлять услуги внешнему миру. Например, web-сервер, ftp, почтовый сервер или все вместе одновременно.

    Понятно, что доступ извне должен осуществляться через внешний адрес шлюза. И в зависимости от типа входящего соединения (которое определяется портом, например 80 — веб сервер, 21 — FTP), шлюз должен перенаправлять его на соответствующий сервер локальной сети.

    Это и есть проброс портов.
    Рассмотрим, как реализовать его средствами iptables.

    Вначале договоримся о сокращениях и умолчаниях:

    $EXT_IP — внешний, реальный IP-адрес шлюза
    $INT_IP — внутренний IP-адрес шлюза, в локальной сети
    $LAN_IP — внутренний IP-адрес сервера, предоставляющего службы внешнему миру
    $SRV_PORT — порт службы. Для веб-сервера равен 80, для SMTP — 25 и т.д.
    eth0 — внешний интерфейс шлюза. Именно ему присвоен сетевой адрес $EXT_IP
    eth1 — внутренний интерфейс шлюза, с адресом $INT_IP

    А для облегчения понимания, в таких блоках будем рассматривать конкретную ситуацию:
    1.2.3.4 — внешний адрес шлюза
    192.168.0.1 — внутренний адрес шлюза
    В локальной сети работает веб-сервер (порт 80) для сайта webname.dom
    192.168.0.22 — внутренний адрес веб-сервера

    Проброс портов

    Итак, пакет пришёл на шлюз. Мы должны перенаправить его на нужный сервер локальной сети перед принятием решения о маршрутизации, то есть — в цепочке PREROUTING таблицы nat.

    iptables -t nat -A PREROUTING —dst $EXT_IP -p tcp —dport $SRV_PORT -j DNAT —to-destination $LAN_IP

    iptables -t nat -A PREROUTING —dst 1.2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22

    Читай: если входящий пакет пришёл извне на шлюз (1.2.3.4), но предназначен веб-серверу (порт 80), то адрес назначения подменяется на локальный адрес 192.168.0.22. И впоследствии маршрутизатор передаст пакет в локальную сеть.

    Дальше принимается решение о маршрутизации. В результате пакет пойдёт по цепочке FORWARD таблицы filter, поэтому в неё надо добавить разрешающее правило. Оно может выглядеть, например, так:

    iptables -I FORWARD 1 -i eth0 -o eth1 -d $LAN_IP -p tcp -m tcp —dport $SRV_PORT -j ACCEPT

    iptables -I FORWARD 1 -i eth0 -o eth1 -d 192.168.0.22 -p tcp -m tcp —dport 80 -j ACCEPT

    Пропустить пакет, который пришёл на внешний интерфейс, уходит с внутреннего интерфейса и предназначен веб-серверу (192.168.0.22:80) локальной сети.

    С одной стороны, этих двух правил уже достаточно для того, чтобы любые клиенты за пределами локальной сети успешно подключались к внутреннему серверу. С другой — а что будет, если попытается подключиться клиент из локальной сети? Подключение просто не состоится: стороны не поймут друг друга.

    Допустим, 192.168.0.333 — ip-адрес клиента внутри локальной сети.

    1. сотрудник вводит в адресную строку браузера адрес webname.dom
    2. компьютер обращается к DNS и разрешает имя webname.dom в адрес 1.2.3.4
    3. маршрутизатор понимает, что это внешний адрес и отправляет пакет на шлюз
    4. шлюз, в соответствии с нашим правилом, подменяет в пакете адрес 1.2.3.4 на 192.168.0.22, после чего отправляет пакет серверу
    5. веб-сервер видит, что клиент находится в этой же локальной сети (обратный адрес пакета — 192.168.0.333) и пытается передать данные напрямую клиенту, в обход шлюза
    6. клиент игнорирует ответ, потому что он приходит не с 1.2.3.4, а с 192.168.0.22
    7. клиент и сервер ждут, ведут себя как «две целки на морозе», связи и обмена данными нет

    Есть два способа избежать подобной ситуации.

    Первый — чётко разграничивать обращения к серверу изнутри и извне.

    Создать в локальном DNS-сервере A-запись для webname.dom, указывающую на 192.168.0.22.

    Второй — с помощью того же iptables заменить обратный адрес пакета.
    Правило должно быть добавлено после принятия решения о маршрутизации и перед непосредственной отсылкой пакета. То есть — в цепочке POSTROUTING таблицы nat.

    iptables -t nat -A POSTROUTING —dst $LAN_IP -p tcp —dport $SRV_PORT -j SNAT —to-source $INT_IP

    iptables -t nat -A POSTROUTING —dst 192.168.0.22 -p tcp —dport 80 -j SNAT —to-source 192.168.0.1

    Если пакет предназначен веб-серверу, то обратный адрес клиента заменяется на внутренний адрес шлюза.
    Этим мы гарантируем, что ответный пакет тоже пойдёт через шлюз.

    Надо дополнительно отметить, что это правило важно только для внутренних клиентов. Ответ внешним клиентам пойдёт через шлюз в любом случае.

    Но, пока что, для нормальной работы этого недостаточно. Предположим, что в качестве клиента выступает сам шлюз.
    В соответствии с нашими предыдущими правилами он будет гонять трафик от себя к себе же и представлять исходящие пакеты транзитными. Так и с ума сойти недолго. Исправляем это:

    iptables -t nat -A OUTPUT —dst $EXT_IP -p tcp —dport $SRV_PORT -j DNAT —to-destination $LAN_IP

    iptables -t nat -A OUTPUT —dst 1.2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22

    Вот теперь — всё. Получившийся результат можно оформить в виде скрипта, чтобы не делать каждый раз всё вручную.

    Кстати.
    Если подключение к сети интернет осуществляется, например, через pppoe, то внешним интерфейсом будет pppN, он и должен быть вписан в правила iptables. Потому что в этом случае интерфейс eth0 будет использоваться только для установки связи с pppoe-сервером.

    script.sh

    #!/bin/bash
    EXT_IP=»xxx.xxx.xxx.xxx» # Он всё равно чаще всего один и тот же.
    INT_IP=»xxx.xxx.xxx.xxx» # См. выше.
    EXT_IF=eth0 # Внешний и внутренний интерфейсы.
    INT_IF=eth1 # Для шлюза они вряд ли изменятся, поэтому можно прописать вручную.
    LAN_IP=$1 # Локальный адрес сервера передаём скрипту первым параметром,
    SRV_PORT=$2 # а тип сервера, в смысле какой порт (или набор портов) открывать — вторым

    # Здесь желательно сделать проверку ввода данных, потому что операции достаточно серьёзные.

    iptables -t nat -A PREROUTING —dst $EXT_IP -p tcp —dport $SRV_PORT -j DNAT —to-destination $LAN_IP
    iptables -t nat -A POSTROUTING —dst $LAN_IP -p tcp —dport $SRV_PORT -j SNAT —to-source $INT_IP
    iptables -t nat -A OUTPUT —dst $EXT_IP -p tcp —dport $SRV_PORT -j DNAT —to-destination $LAN_IP
    iptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP -p tcp -m tcp —dport $SRV_PORT -j ACCEPT

    Теперь, чтобы обеспечить доступ извне к локальному FTP по адресу 192.168.0.56, достаточно набрать в консоли от имени суперпользователя:

    ./script.sh 192.168.0.56 20,21

    Экономия времени и сил налицо.

    Форвардинг портов на другую машину

    По сути форвардинг портов на другую машину не отличается от форварда портов в пределах одной машины, но по существу это не одно и то же, поскольку пакеты будут передаваться не в пределах одной машины, как в случае с loopback-интерфейсом, когда фактически пакеты транслируются в пределах сетевого стека. Обычно форвардинг портов производится с определенного порта внешнего интерфейса на определенный порт машины во внутренней сети, поэтому между сетевыми интерфейсами должен быть настроен форвардинг. Например, проброс порта 3389 для работы удаленного рабочего стола (RDP) с внешнего сетевого интерфейса (192.168.100.25) на порт 3389 на одну из машин во внутренней сети (192.168.0.15):

    iptables -t nat -A PREROUTING -d 192.168.100.25/32 -p tcp -m tcp —dport 3389 -j DNAT —to-destination 192.168.0.15:3389
    iptables -t nat -A POSTROUTING -s 192.168.0.15/32 -p tcp -m tcp —dport 3389 -j SNAT —to-source 192.168.100.25

    Таблица форвардинга

    При настройке iptables мы уже использовали таблицу форвардинга, но единственное, что мы делали — это очищали правила командой

    iptables -F FORWARD

    В этой таблице не рекомендуется фильтровать трафик, рекомендуется ее использовать только для перенаправления трафика. Фильтрацию необходимо выполнять либо до форвардинга, либо уже после. В таблице FORWARD вы определяете, куда должны форвардиться пакеты, а куда нет. Например:
    — разрешить форвардинг между eth0 и eth1
    — разрешить форвардинг между eth0 и eth2
    — запретить форвардинг между eth1 и eth2
    Правила в таком случае могут выглядеть так:

    iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
    iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    iptables -A FORWARD -i eth0 -o eth2 -j ACCEPT
    iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
    iptables -A FORWARD -i eth1 -o eth2 -j DROP
    iptables -A FORWARD -i eth2 -o eth1 -j DROP

    либо еще короче:

    iptables -A FORWARD -i eth1 -o eth2 -j DROP
    iptables -A FORWARD -i eth2 -o eth1 -j DROP

    Как посмотреть правила iptables

    Посмотреть текущие правила iptables можно с помощью команды:

    sudo iptables -L -t nat

    Пример:

    Chain PREROUTING (policy ACCEPT)
    target prot opt source destination
    DNAT tcp — anywhere 80.81.82.83 tcp dpt:2222 to:10.0.7.2:22
    Chain POSTROUTING (policy ACCEPT)
    SNAT tcp — 10.0.7.2 anywhere tcp spt:ssh to:80.81.82.83:2222

    Вот и все, на этом рассмотрение проброса портов в операционных системах под управлением Linux с помощью iptables завершено.

    Если есть вопросы, то пишем в комментариях.

    С использованием Hamachi

    Этот способ ориентирован именно на Ubuntu, где проброс портов будет выполняться с помощью Hamachi. Хамачи позволяет построить VPN. Другими словами — это программа для работы с виртуальными частными сетями.

    Допустим, в разных сетях существует группа удалённых друг от друга ПК, а связь в сети выполняется через VPN Hamachi. Сама программа должна быть установлена на сервере. После этого можно настраивать проброс портов. Идея в том, что ПК из других локальных сетей будут обращаться напрямую только к серверу. Он, в свою очередь, будет перенаправлять их на нужный ПК внутри сети, на котором будет находиться необходимый порт. Для выполнения инструкций потребуется компьютер с установленной Ubuntu Server.

    Установка Хамачи. Для начала, загрузите пакет с официального сайта:

    wget https://secure.logmein.com/labs/logmein-hamachi_2.1.0.119-1_amd64.deb

    Инсталлируйте нужный пакет:

    sudo apt-get install lsb

    Теперь проведите сборку пакета, который был загружен:

    dpkg -i logmein-hamachi_2.1.0.119-1_amd64.deb

    Можно запустить соответствующую службу, а также саму программу:

    service logmein-hamachi start
    hamachi login

    Применение программы Хамачи
    Применение программы Хамачи

    Присвойте личному компьютеру имя в Хамачи. После этого подключитесь к нужной сети:

    hamachi set-nick $NAME.
    hamachi join $NAME_NETWORK

    Введите все нужные данные для доступа к сети.

    Теперь рассмотрим, как на базе созданного подключения прокинуть порт. Воспользуемся утилитой Rinetd. Для начала нужно загрузить саму утилиту:

    sudo apt-get install rinetd

    Теперь в файлы конфигурации потребуется внести изменения:

    nano /etc/rinetd.conf

    Сам файл, открываем при помощи редактора nano. В конце документа нужно добавить строчку:

    (IP-интерфейса сервера) (прослушиваемый порт) (адрес внешнего ПК) (порт внешнего ПК)

    Вставлять значения нужно без скобок, с пробелами. Для каждого подключения нужно добавить свою строку, по порядку. Теперь нужно выполнить перезапуск службы:

    service rinetd restart

    Теперь потребуется отключить межсетевой экран:

    sudo ufw disable

    Вот и всё. В завершение процесса нужно перезагрузить сервер, после чего можно проверить подключения. Проброшенный трафик можно будет контролировать при помощи дополнительных утилит.

    Надо ли пересобирать ядро на VDS для повышения производительности?

    • 1 подписчик
    • 3 часа назад
    • 85 просмотров

    ответ
    1

  • linux
    • Linux

    • +4 ещё

    Средний

  • Как отключить debug-threads при запуске виртуальных машин?

    • 1 подписчик
    • вчера
    • 42 просмотра

    ответов
    0

  • linux
    • Linux

    Простой

  • Centos 8 openvpn, почему тормозит сеть интервалами?

    • 1 подписчик
    • 18 часов назад
    • 50 просмотров

    ответов
    0

  • linux
    • Linux

    • +2 ещё

    Средний

  • 1- Проблема с Ubuntu

    При входе в систему Linux (включая Ubuntu) с user, который не является «root», вы не можете запустить приложение с портом (port) <1024. Только "root" имеет привилегию ( privilege) для запуска таких приложений.
    Так что, если вы вошли в систему с другим user «root», то вы не можете запустить веб-приложенин с портом 80 или 443. Ваш адрес веб-сайта не является дружественным, так как это будет большее количество портов (port number) на пути. Например:

    • http://yoursite.com:8080  (Недружественный адрес)
    • http://yoursite.com          (Дружественный адрес).

    В этом случае, вы должны запустить веб-приложение на порту (port)> = 1024, например 8080. Пользователь имеет доступ к вашему веб-сайту через порт 80, и он будет перенаправлен на порт 8080. Такое перенаправление осуществляется операционной систеой, как на рисунке ниже:

    Для перенаправления необходимо конфигурировать IPTables.

    2- Конфигурация iptables

    Прежде всего, необходимо проверить работающие приложения и порт (port), который оно использует.

    netstat -ntl

    Tomcat работает на порте 8080:

    Затем выполните следующую команду для перенаправления (redirect) порта 80 на порт 8080.

    sudo iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-port 8080

    Выполните следующую команду, чтобы убедиться, что перенаправление работает исправно.

    sudo iptables -t nat -L


    Далее необходимо сохранить информацию о конфигурации выше, чтобы убедиться, что он имеет эффект после перезагрузки операционной системы.

    sudo sh -c «iptables-save > /etc/iptables.rules»

    sudo apt-get install iptables-persistent







    Примечание: Если вы хотите удалить конфигурацию перенаправления 80 до 8080, которое сделали до этого, выполните следующую команду:

    sudo iptables -t nat -D PREROUTING -p tcp —dport 80 -j REDIRECT —to-port 8080

    Проверить:

    View more Tutorials:

    • Pуководства Ubuntu

    Maybe you are interested

    Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.

    Pуководства Ubuntu

    1.  

      Как использовать файл «hosts»?

    2.  

      Передача файлов между компьютерами с помощью Cyberduck в Mac OS

    3.  

      Программное обеспечение создает заметки Windows на Desktop для Ubuntu

    4.  

      Установите Ubuntu Desktop в VmWare

    5.  

      Установите программное обеспечение раздела жесткого диска GParted в Ubuntu

    6.  

      Создайте Launcher (Shortcut) для программы в Ubuntu

    7.  

      Установите Ubuntu Server в VmWare

    8.  

      Установка GUI и VNC на Ubuntu Server

    9.  

      Установите GUI и Remote Desktop для Ubuntu Server

    10.  

      Установите OpenSSH Server в Ubuntu

    11.  

      Установите браузер Firefox в Ubuntu

    12.  

      Перенаправить порт 80, 443 в Ubuntu с помощью iptables

    13.  

      Используйте WinSCP для передачи файлов между компьютерами

    14.  

      Использование Top Command — Task Manager для Ubuntu

    15.  

      Проверьте скорость интернета с помощью speedtest-cli на Ubuntu

    16.  

      Установите Winrar на Ubuntu

    17.  

      Установите xChm Viewer для чтения файла CHM в Ubuntu

    18.  

      Установите TeamViewer в Ubuntu

    19.  

      Peek: Программа обеспечения, записывающая экран для создания Gif для Ubuntu

    Проблема с Lutis. Как это можно решить?

    • 1 подписчик
    • вчера
    • 48 просмотров

    ответа
    2

  • linux
    • Linux

    • +1 ещё

    Простой

  • Перенаправление пакетов на другой порт

    Перенаправление портов можно использовать для самых разных задач. Например, перенаправление пользователей из разных сетей на разные экземпляры веб-сервера, перенаправление порта на другой, если изменился порт какого-то сервиса, настройка прозрачного проксирования и так далее. Общая идея в том, что пакеты с определенного порта перенаправляются на другой порт на том же сетевом интерфейсе той же самой машины, либо на loopback’е.
    Для перенаправления порта, например, 80, с внешнего интерфейса на порт 80 на loopback-интерфейсе мы можем использовать правило

    iptables -t nat -A PREROUTING -d 192.168.0.1/32 -p tcp -m tcp —dport 80 -j DNAT —to-destination 127.0.0.1:80

    Это правило позволит перенаправить пакеты на loopback, изменив назначение пакета путем трансляции адреса (Destination NAT), и после этого можно будет их отфильтровать в цепочке, которая будет задана для loopback-интерфейса. Естественно, нужно будет сделать и обратную трансляцию:

    iptables -t nat -A POSTROUTING -s 127.0.0.1/32 -p tcp -m tcp —dport 80 -j SNAT —to-source 192.168.0.1

    Таким образом, происходит обратный процесс, при этом изменяется Source NAT, то есть, транслируется адрес источника соединения.

    Создание хранилища файлов для api(.net) или microservice в докере?

    • 1 подписчик
    • 4 часа назад
    • 22 просмотра

    ответ
    1

  • ubuntu
    • Ubuntu

    Простой

  • Как подключаться к sftp без private key?

    • 1 подписчик
    • 4 часа назад
    • 30 просмотров

    ответа
    2

  • linux
    • Linux

    • +3 ещё

    Простой

  • Перенаправление портов в Ubuntu — графический интерфейс

    Самый простой способ перенаправить порт через брандмауэр в Ubuntu — использовать графический интерфейс. Графический интерфейс брандмауэра Ubuntu действует как посредник для командной строки. По сути, это дает приятный интерфейс для приложения командной строки.

    Чтобы взаимодействовать с брандмауэром Ubuntu через графический интерфейс, вам необходимо установить приложение GUFW в вашей системе, если вы еще этого не сделали. Чтобы установить GUFW на ваш компьютер с Ubuntu, начните с открытия окна терминала.

    Вы можете открыть окно терминала, нажав Ctrl + Alt + T на клавиатуре. Или, в качестве альтернативы, вы можете найти «Терминал» в меню приложения Ubuntu. Когда окно терминала открыто и готово к использованию, используйте команду apt install, чтобы получить GUFW.

    sudo apt install gufw

    Если вам не нравится использовать терминал для установки приложений, не волнуйтесь! Вы можете установить его с помощью программного обеспечения Ubuntu. Для начала откройте приложение «Ubuntu Software». Когда он откроется, найдите значок поиска и щелкните по нему мышью.

    Проверь это —   Как перейти на Fedora 31

    В поле поиска введите «GUFW» и нажмите клавишу Enter. Нажав Enter, вам будут представлены результаты поиска. Просмотрите результаты для «Конфигурация брандмауэра» и щелкните по нему.

    Нажав на «Конфигурация брандмауэра», вы перейдете на страницу приложения Ubuntu Software. Нажмите кнопку «УСТАНОВИТЬ», чтобы загрузить и установить программное обеспечение на свой компьютер.

    Настройка проброса портов в GUFW

    Теперь, когда приложение GUFW установлено на вашем ПК с Ubuntu, вы можете использовать его для перенаправления портов за пределы брандмауэра. Для этого следуйте пошаговым инструкциям ниже.

    Шаг 1. Откройте GUFW, выполнив поиск «Конфигурация брандмауэра» в меню приложения Ubuntu. Когда он откроется, найдите ползунок «Статус». Щелкните его, чтобы включить защиту, если она еще не включена.

    Шаг 2: Найдите кнопку «Правила» в GUFW и щелкните по ней, чтобы получить доступ к области правил. Отсюда выберите значок «+». Щелкнув этот значок, вы откроете окно «Добавить правило брандмауэра».

    Проверь это —   Как получить виртуальную кнопку Home на iPhone X

    Шаг 3: В новом окне правила найдите вкладку «Простое» и щелкните по ней. На вкладке найдите «Направление» и измените его на «Выход». Установив его на «out», вы разрешаете Ubuntu «переадресовывать» в Интернет.

    Шаг 4: Найдите поле «Порт» и щелкните по нему мышью. Оттуда найдите поле «Порт или служба» и введите порт. Когда вы закончите записывать номер порта, нажмите кнопку «Добавить», чтобы добавить новое правило.

    После того, как вы добавите номер порта, брандмауэр должен немедленно пропустить его. Однако, если это не происходит мгновенно, не стесняйтесь перезагрузить компьютер, чтобы решить проблему.

    Перенаправление портов в Ubuntu — интерфейс командной строки

    В дополнение к перенаправлению портов с помощью графического интерфейса пользователя также можно перенаправить порт в брандмауэре Ubuntu с помощью интерфейса командной строки (также известного как терминал). Для этого сначала убедитесь, что в вашей системе включен брандмауэр UFW.

    Чтобы убедиться, что у вас включен брандмауэр UFW, откройте окно терминала. Вы можете открыть окно терминала, нажав Ctrl + Alt + T на клавиатуре или выполнив поиск «терминал» в меню приложения.

    Проверь это —   Как запретить Strava опубликовать ваш домашний адрес

    В открытом окне терминала используйте команду sudo ufw enable, чтобы включить брандмауэр, если он по какой-то причине отключен. Если ваш UFW уже включен, не беспокойтесь. Вы можете пропустить этот шаг.

    Убедившись, что межсетевой экран UFW работает, используйте команду ufw allow для переадресации портов. Например, если вы размещаете сервер OpenSSH на своем ПК с Ubuntu, вам нужно будет открыть порт 22 для Интернета. Для этого вы можете ввести команду ниже.

    sudo ufw allow 22/tcp

    Или, если вам нужно разрешить подключения через порт 32400 к Интернету через UDP, вы можете вместо этого выполнить следующую команду.

    sudo ufw allow 32400/udp

    После того, как вы добавили свои порты в брандмауэр Ubuntu, вы можете проверить его статус, чтобы увидеть, выполняются ли введенные вами разрешающие команды с помощью команды ufw status.

    sudo ufw status

    Предположим, у вас возникли проблемы с переадресацией портов в Ubuntu, а команды ufw allow не работают. В этом случае вы можете полностью отключить брандмауэр, открыв доступ ко всем портам в Интернет с помощью команды ufw disable.

    sudo ufw disable

    от sasza

    Похожая запись

    Вы пропустили

    Linux

    Как играть в Deadcore в Linux

    Авг 26, 2021 sasza Linux

    Как использовать приложение для снимков экрана Shutter в Linux

    Авг 26, 2021 sasza Linux

    Как смотреть Netflix на рабочем столе Linux с Electronplayer

    Авг 26, 2021 sasza Linux

    Настройка port forwarding на Linux

    Итак, приступим. Для выполнения поставленной задачи, перенаправление порта 2222 на порт 22 другой машины, необходимо добавить следующие правила iptables:

    sudo iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT

    Это правило разрешает прохождение входящих пакетов внутрь сети.

    Теперь опишем форвардинг (forwarding) пакетов:

    sudo iptables -t nat -A PREROUTING -p tcp -d 80.81.82.83 —dport 2222 -j DNAT —to-destination 10.0.7.2:22
    sudo iptables -t nat -A POSTROUTING -p tcp —sport 22 —dst 10.0.7.2 -j SNAT —to-source 80.81.82.83:2222

    • Первая строка подменяет IP адрес приемника (белый IP) на внутренний (серый IP)
    • Вторая адрес отправителя (серый IP) на внешний (белый IP).
    • 10.0.7.2 — IP адрес машины в локальной сети, на который перенаправляет трафик.
    • 80.81.82.83 — внешний IP адрес нашего сервера.
    • 22 — внутренний порт локальной машины
    • 2222 — внешний порт для подключения.

    Перенаправления всего трафика

    Если есть необходимость проброса всего трафика, то выполним следующее правило.

    iptables -t nat -A PREROUTING -p tcp -d 80.81.82.83 -j DNAT —to-destination 10.0.7.2
    iptables -t nat -A POSTROUTING -p tcp —dst 10.0.7.2 -j SNAT —to-source 80.81.82.83

    Для сохранения наших правил необходимо создать файл и подгружать его при каждой перезагрузки системы, иначе правила iptables которые мы написали слетять. Для этого набираем в терминале следующее:

    sudo nano /etc/nat

    содержимое файла по первому примеру:

    #!/bin/sh
    # Перенаправляем ssh с 2222 на 22 IP-10.0.7.2
    iptables -t nat -A PREROUTING -p tcp -d 80.81.82.83 —dport 2222 -j DNAT —to-destination 10.0.7.2:22
    iptables -t nat -A POSTROUTING -p tcp -dst 10.0.7.2 —sport 22 -j SNAT —to-source 80.81.82.83:2222

    Далее открываем файл interfaces

    sudo nano /etc/network/interfaces

    И добавляем в конце следующую строчку:

    pre-up /etc/nat

    Данное выражение подгрузить правила iptables после перезагрузки системы.

    Как сделать проброс портов в Ubuntu

    Проброс портов в Ubuntu server может происходить разными путями. Причем у каждого метода есть своя специфическая методика.

    С помощью маршрутизатора

    Пусть есть конкретная ситуация:

    $EXT_IP – внешний, реальный IP-адрес шлюза

    $INT_IP – внутренний IP-адрес шлюза, в локальной сети

    $LAN_IP – внутренний IP-адрес сервера, предоставляющего службы внешнему миру

    $SRV_PORT – порт службы. Для веб-сервера равен 80, для SMTP – 25 и т. д.

    eth0- внешний интерфейс шлюза. Именно ему присвоен сетевой адрес $EXT_IP

    eth1 – внутренний интерфейс шлюза, с адресом $INT_IP

    А для облегчения понимания, в таких блоках рассмотрены конкретные ситуации:

    1.2.3.4 – внешний адрес шлюза

    192.168.0.1 – внутренний адрес шлюза

    В локальной сети работает веб-сервер (порт 80) для сайта webname.dom

    192.168.0.22 – внутренний адрес веб-сервера

    Тогда методика проведения проброса портов будет выглядеть следующим образом:

    1. Маршрутизация: установка параметров маршрутизатора iptables -t nat -A PREROUTING —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22 и установка процесса iptables -I FORWARD 1 -i eth0 -o eth1 -d 192.168.0.22 -p tcp -m tcp —dport 80 -j ACCEPT.
    2. Для разрешения доступа других пользователей с другими адресами: iptables -t nat -A POSTROUTING —dst168.0.22 -p tcp —dport 80 -j SNAT —to-source 192.168.0.1.
    3. Для предотвращения переадресации к маршрутизатору: iptables -t nat -A OUTPUT —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22.

    Для автоматического запуска изучаемого процесса можно создать скрипт.

    И дальнейшее обращение к пробросу будет выполняться пользователем записью в командной строке: ./script.sh 192.168.0.56 20,21.

    С помощью установки Hamachi в Ubuntu

    Технология немного отличается от предыдущего варианта:

    1. Скачивание, загрузка и «сборка» необходимого пакета программы: wgethttps://secure.logmein.com/labs/logmein-hamachi_2.1.0.119-1_amd64.deb; sudo apt-get install lsb; dpkg -i logmein-hamachi_2.1.0.119-1_amd64.deb.
    2. Запуск программы, наименование гаджета и подключение к сети: service logmein-hamachi start hamachi login; hamachi set-nick $NAME; hamachi join $NAME_NETWORK.
    3. Выбор необходимой сети: hamachi list.
    4. Далее следует изменить настройки: sudo apt-get install rinetd; nano /etc/rinetd.conf; IP_in port_in IP_out port_out.
    5. Перезапустить службу: service rinetd restart.
    6. Выключить менеджер задач: sudo ufw disable.

    Осталось только перезагрузить систему.

    С помощью Squid

    Он используется для контроля слишком большого трафика.

    Алгоритм также прост:

    1. Установка: sudo apt-get install squid3.
    2. Настройка: /etc/squid/squid.conf.

    Затем действия идут такие же, как и в предыдущем варианте.

    С помощью Iptables

    Такая программа аналогична первому варианту. Собственно алгоритм будет такой же:

    1. Маршрутизация: установка параметров маршрутизатора iptables -t nat -A PREROUTING —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22 и установка процесса iptables -I FORWARD 1 -i eth0 -o eth1 -d 192.168.0.22 -p tcp -m tcp —dport 80 -j ACCEPT.
    2. Для разрешения доступа других пользователей с другими адресами: iptables -t nat -A POSTROUTING —dst168.0.22 -p tcp —dport 80 -j SNAT —to-source 192.168.0.1.
    3. Для предотвращения переадресации к маршрутизатору: iptables -t nat -A OUTPUT —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22.

    Для автоматического запуска изучаемого процесса можно создать скрипт.

    И дальнейшее обращение к пробросу будет делаться пользователем записью в командной строке: ./script.sh 192.168.0.56 20,21.

    Алгоритм проброса портов в iptables.

    В принципе все довольно просто, необходимо добавить всего два правила в таблицу маршрутизации iptables. Но для начала нам нужно включить форвардинг пакетов на нашем сервере:

    sudo echo 1 > /proc/sys/net/ipv4/ip_forward

    Для автоматического включения открываем файл /etc/sysctl.conf и ищем там строку #net.ipv4.ip_forward=1, убираем знак комментария.

    sudo nano /etc/sysctl.confnet.ipv4.ip_forward=1

    Источники

    • https://iwsm.ru/operatsionnye-sistemy/linux/probros-portov-v-linux
    • https://qna.habr.com/q/633404
    • https://ipt-miit.ru/prochee/kak-sdelat-probros-portov-v-ubuntu-server.html
    • http://www.it-simple.ru/?p=2250
    • https://mnorin.com/nastrojka-iptables-routing-chast-3.html
    • https://obu4alka.ru/probros-portov-port-forwarding-v-linux-ispolzuya-iptables.html
    • https://nastroyvse.ru/opersys/lix/kak-sdelat-probros-portov-ubuntu-server.html
    • https://betacode.net/11363/redirect-port-80-443-on-ubuntu-using-iptables
    • https://toadmin.ru/%D0%BA%D0%B0%D0%BA-%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D0%BE%D1%80%D1%82-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D0%B1%D1%80%D0%B0%D0%BD%D0%B4%D0%BC%D0%B0/

    [свернуть]