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

Содержание
  1. Проброс и перенаправление портов в iptables
  2. Проброс портов
  3. Рассмотрим пример
  4. Перенаправление портов
  5. Проброс портов iptables в Linux
  6. Как работает NAT?
  7. Проброс портов в iptables
  8. Настройка прохождения пакетов
  9. Модификация пакетов в iptables
  10. Сохранение настроек iptables
  11. Выводы
  12. Настройка iptables от простого к сложному. Часть 3
  13. Маскарадинг (или маскирование)
  14. Перенаправление пакетов на другой порт
  15. Форвардинг портов на другую машину
  16. Таблица форвардинга
  17. Разница между DROP и REJECT
  18. Про SSH port forwarding в Linux
  19. ЧТО ТАКОЕ ПЕРЕБРОС ПОРТА SSH?
  20. ДЛЯ ЧЕГО НУЖЕН ПЕРЕБРОС ПОРТА SSH?
  21. СКОЛЬКО СЕССИЙ МОЖНО УСТАНАВЛИВАТЬ?
  22. ПЕРЕБРОС ЛОКАЛЬНОГО ПОРТА
  23. ТЕСТИРОВАНИЕ РАБОТЫ ПЕРЕАДРЕСОВАННОГО ПОРТА
  24. СОЗДАНИЕ ПОСТОЯННОГО ТУННЕЛЯ (AUTOSSH)
  25. ПЕРЕБРОС УДАЛЁННОГО ПОРТА
  26. ДИНАМИЧЕСКАЯ ПЕРЕАДРЕСАЦИЯ ПОРТОВ
  27. МНОЖЕСТВЕННАЯ ПЕРЕАДРЕСАЦИЯ
  28. ПРОСМОТР СПИСКА ТУННЕЛЕЙ
  29. ОГРАНИЧЕНИЕ ПЕРЕАДРЕСАЦИИ ПОРТОВ
  30. УМЕНЬШЕНИЕ ЗАДЕРЖКИ
  31. Как выполнить проброс портов в Ubuntu Server
  32. Средствами маршрутизатора
  33. С использованием hamachi
  34. С использованием squid
  35. Заключение
  36. Проброс портов в Ubuntu: как сделать
  37. Что такое проброс портов в Linux
  38. С помощью маршрутизатора
  39. С помощью установки Hamachi в Ubuntu
  40. С помощью Squid
  41. С помощью Iptables
  42. Распространенные ошибки

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

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

Проброс трафика за NAT или проброс трафика на другой сервер

Чаще всего проброс трафика используется, если мы находимся в локальной сети и от внешнего мира отделены шлюзом. Для того, чтобы открыть доступ для локальных служб (ssh, web, ftp), нам необходимо пробросить порты. Поскольку в качестве шлюза мы будем использовать сервер на Linux, то осуществлять данные действия будем с помощью iptables.

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

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

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

На шлюз приходит пакет, который мы должны перенаправить на нужный сервер в локальной сети перед принятием решения о маршрутизации, то есть – в цепочке 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.1.50

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

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

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

Перенаправление портов

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

Пусть $FAKE_PORT – обманный порт на внешнем интерфейсе шлюза, подключившись к которому мы должны попасть на адрес $LAN_IP и порт $SRV_PORT.

Набор правил для iptables будет отличаться несущественно, поэтому приведу сразу пример итогового скрипта для ленивых.

EXT_IP=”xxx.xxx.xxx.xxx” INT_IP=”xxx.xxx.xxx.xxx” EXT_IF=eth0 INT_IF=eth1 FAKE_PORT=$1 LAN_IP=$2 SRV_PORT=$3 iptables -t nat -A PREROUTING -d $EXT_IP -p tcp -m tcp –dport $FAKE_PORT -j DNAT –to-destination $LAN_IP:$SRV_PORTiptables -t nat -A POSTROUTING -d $LAN_IP -p tcp -m tcp –dport $SRV_PORT -j SNAT –to-source $INT_IPiptables -t nat -A OUTPUT -d $EXT_IP -p tcp -m tcp –dport $SRV_PORT -j DNAT –to-destination $LAN_IPiptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP -p tcp -m tcp –dport $SRV_PORT -j ACCEPT

Источник: https://bogachev.biz/2016/01/13/probros-i-perenapravlenie-portov-v-iptables/

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

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

С увеличением количества компьютеров, необходимое количество IP адресов увеличивалось и диапазона IPv4 начало не хватать. Тогда была разработана технология NAT, которая позволяет нескольким компьютерам объединяться в локальную сеть и быть доступными из внешней сети по IP адресу маршрутизатора.

Когда пакет приходит на маршрутизатор, выполняется выяснение какому устройству он был адресован и замена ip адресата на нужный. Кроме переопределения IP получателя и отправителя, NAT может изменять порты.

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

В этой статье мы рассмотрим как выполняется проброс портов iptables в Linux.

Как работает NAT?

Чтобы иметь возможность общаться с другими компьютерами в сети компьютер должен иметь уникальный ip адрес. Но поскольку количество адресов уменьшалось нужно было придумать технологию, которая позволяла бы давать один адрес нескольким машинам. И была придумана технология NAT или Network Address Translation.

Все работает очень просто. Компьютер имеет свой адрес в локальной сети, он не виден из интернета.

Когда ему нужно отправить пакет, он отправляет его роутеру, затем роутер подменяет адрес отправителя на свой и передает пакет дальше к цели.

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

Недостаток в том, что инициировать подключение извне нельзя, потому что маршрутизатор просто еще не знает к кому обращаются. Тут на помощь приходит проброс портов.

Мы можем сказать роутеру: при поступлении пакетов на порт 80 перенаправлять их на порт 80 компьютера 192.168.1.2. Теперь адрес отправителя и порт будет заменяться на указанный нами и пакет будет передан туда, куда нужно.

Если на маршрутизаторе установлен Linux, то все это можно настроить с помощью iptables.

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

Первое что нужно сделать, это включить переадресацию трафика на уровне ядра, если это еще не сделано. Для этого выполните:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Чтобы настройка сохранялась после перезагрузки используйте такую команду:

sudo sysctl -w net.ipv4.ip_forward=1

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

Настройка прохождения пакетов

Сначала мы рассмотрим как разрешить прохождение пакетов через маршрутизатор. Для этого в брандмауэре есть цепочка FORWARD. По умолчанию для всех пакетов применяется правило DROP, которое означает что все нужно отбросить. Сначала разрешим инициализацию новых соединений, проходящих от eth0 до eth1. Они имеют тип contrack и представлены пакетом SYN:

sudo iptables -A FORWARD -i eth0 -o eth1 -p tcp –syn –dport 80 -m conntrack –ctstate NEW -j ACCEPT

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

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

Это еще не проброс портов, мы только разрешили определенному трафику, а именно на порт 80, проходить через маршрутизатор на другие машины локальной сети. Теперь настроим правила, которые будут отвечать за перенаправление трафика.

Модификация пакетов в iptables

Далее мы настроим правила, которые будут указывать как и куда нужно перенаправить пакеты, приходящие на порт 80. Сейчас маршрутизатор может их пропускать в сеть, но он еще не знает куда. Для этого нам нужно будет настроить две вещи – модификацию адреса назначения (Destination) DNAT и модификацию адреса отправителя (Source) SNAT.

Правила DNAT настраиваются в цепочке PREROUTING, в таблице NAT. Эта операция изменяет адрес назначения пакета чтобы он достиг нужной нам цели, когда проходит между сетями. Клиенты будут отправлять пакеты нашему маршрутизатору, и им не нужно знать топологию внутренней сети. Пакет автоматически будет приходить нашему веб-серверу (192.168.1.2).

С помощью этого правила мы перенаправляем все пакеты, пришедшие на порт 80, к 192.168.1.2 опять же на порт 80:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.2

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

Так как клиент ожидает получить ответ от маршрутизатора, то нормального TCP соединения не получиться. Чтобы решить эту проблему нужно модифицировать адрес источника и заменить его на адрес маршрутизатора 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, то нужно указать его после ip адреса:

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

Также может понадобиться выполнить проброс диапазона портов iptables, для этого просто укажите диапазон, например, 1000:2000:

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

После добавления этого правила можете проверять работу перенаправление портов iptables будет выполняться и все будет отправляться так, как нужно.

Сохранение настроек iptables

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

sudo service iptables-persistent save

Готово. Теперь проброс портов iptables ubuntu будет работать так, как нужно.

Выводы

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

На завершение, видео о том, что такое NAT:

Источник: https://losst.ru/probros-portov-iptables-v-linux

Настройка iptables от простого к сложному. Часть 3

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

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

Маскарадинг (или маскирование)

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

Таким образом, несколько машин из внутренней сети могут обращаться к внешней сети, а извне это будет выглядеть так, как будто обращения идут от той самой машины, являющейся шлюзом. Маскарадинг связан в первую очередь с NAT (Network Address Translation), пакеты при трансляции адресов маскируются, чтобы ответ вернулся именно к источнику запроса.

Например, у нас есть некоторая локальная сеть с адресами 192.168.0.0/24, в этой сети есть шлюз с адресом 192.168.0.1, имеющий два сетевых интерфейса, eth0 и eth1. eth0 — внешний, подключенный к провайдеру, например, с адресом 192.168.100.25, eth1 — внутренний, подключенный к локальной сети, тот самый, на котором адрес 192.168.0.1.

Необходимо обеспечить работу всех клиентов из локальной сети в сети Интернет таким образом, чтобы это было для них прозрачно.

В таком случае в первую очередь необходимо включить форвардинг пакетов между сетевыми интерфейсами шлюза, чтобы пропускать трафик из внутренней сети наружу. Есть два варианта, как это можно сделать. Первый — раскомментировать в файле /etc/sysctl.conf строчку

net.ipv4.ip_forward=1

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

echo “1” >/proc/sys/net/ipv4/ip_forward

Этот способ заработает без перезагрузки. Можно использовать оба, а можно в скрипте, например, использовать при загрузке правил iptables только второй.
После этого мы можем задать правило для адресной трансляции:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j MASQUERADE

Это правило после обработки пакетов осуществит маскирование, если пакеты из внутренней сети направлены куда-то в другую подсеть. Если нам нужно маскировать пакеты для конкретной подсети, к примеру, из одной локальной подсети (192.168.2.0/24) в другую (192.168.0.0/24), то мы можем создать следующее правило:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.0/24 -j MASQUERADE

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

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

Общая идея в том, что пакеты с определенного порта перенаправляются на другой порт на том же сетевом интерфейсе той же самой машины, либо на 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, то есть, транслируется адрес источника соединения.

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

По сути форвардинг портов на другую машину не отличается от форварда портов в пределах одной машины, но по существу это не одно и то же, поскольку пакеты будут передаваться не в пределах одной машины, как в случае с 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

Разница между DROP и REJECT

При сбросе пакетов используют обычно две цели — DROP и REJECT, при этом нужно понимать, почему вы используете именно этот вариант.

Основное различие состоит в том, что при использовании DROP не будет отправлен ICMP-ответ, по которому можно будет определить, что в соединении отказано. Оно просто не пройдет. Когда вы используете REJECT, то вы явно получите ответ, что в соединении отказано.

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

[wysija_form id=»2″]

Источник: https://mnorin.com/nastrojka-iptables-routing-chast-3.html

Про SSH port forwarding в Linux

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

SSH туннели один из самых часто используемых методов связи среди системных и сетевых администраторов. В данном руководстве расскажем о такой функции как переброс порта SSH. Это используется для безопасной передачи данных между двумя и более системами.

ЧТО ТАКОЕ ПЕРЕБРОС ПОРТА SSH?

Коротко, переброс порта SSH даёт возможность создавать туннель между несколькими системами, а затем настроить эти системы так, чтобы трафик они гнали через этот туннель. Именно по такой логике работает VPN или SOCKS Proxy.

Есть несколько разных методов переброса: переброс локального порта, переброс удалённого порта или динамический переброс. Для начала дадим пояснение каждому из них.

  • Локальный переброс порта позволяет получать доступ ко внешним ресурсам из локальной сети и работать в удаленной системе, как если бы они находились в одной локальной сети. По такому принципу работает Remote Access VPN.
  • Переброс удаленного порта дает возможность удалённой системе получать доступ к вашей локальной сети.
  • Динамический переброс создает SOCKS прокси сервер. После этого настраиваем приложения так, чтобы они использовали это туннель для передачи данных. Чаще всего такой переброс используется для доступа к ресурсам, который по той или иной причине заблокированы для данной страны.

ДЛЯ ЧЕГО НУЖЕН ПЕРЕБРОС ПОРТА SSH?

Допустим у вас есть какое-то приложение, которые передаёт данные в открытом виде или через нешифрованный протокол. Ввиду того, что SSH создает шифрованное соединение, то вы с легкостью можете настроить программу так, чтобы трафик её шёл через этот туннель.

Он так же часто используется для доступа к внутренним ресурсам извне. Приблизительно это напоминает Site-to-Site VPN, где нужно указывать какой именно трафик нужно заворачивать в туннель.

СКОЛЬКО СЕССИЙ МОЖНО УСТАНАВЛИВАТЬ?

Теоретически, можно создавать столько сессий, сколько нам захочется. В сети используется 65 535 различных портов, и мы можем перебрасывать любой из этих портов.

Но при перебросе порта нужно учитывать, что некоторые из них зарезервированы за конкретными сервисами. Например, HTTP использует 80 порт. Значит, переброс на порт 80 возможен только если нужно переадресовать веб трафик.

Порт, который перебрасывается на локальном хосте может не совпадать с портом удаленной системы. Мы легко можем перебросить локальный порт 8080 на порт 80 на удаленной машине. Иными словами, если мы напишем IP адрес нашей машины и порт 8080, то запрос пойдет на 80 порт удалённой системы.

Если вам не критично какой порт использовать на своем хосте, лучше выбрать что-то из диапазона 2000-10000, так как все порты ниже 2000 зарезервированы.

ПЕРЕБРОС ЛОКАЛЬНОГО ПОРТА

Локальная пересылка представляет собой переброс порта из клиентской системы на сервер. Он позволяет настроить порт в системе таким образом, чтобы все соединения на этот порт проходили через туннель SSH.

Для переадресации локального порта используется ключ L. Общий синтаксис команды таков:

$ ssh -L local_port:remote_ip:remote_port user@hostname.com
$ ssh -L 8080:www.example1.com:80 example2.comПереброс локального порта

Данной командой мы говорим системе, что все запросы на 8080 порт example1.com переадресовывать на example2.com. Это часто используется когда нужно организовать доступ извне на внутренний ресурсы компании.

ТЕСТИРОВАНИЕ РАБОТЫ ПЕРЕАДРЕСОВАННОГО ПОРТА

Чтобы проверить, работает ли переадресация должным образом можно воспользоваться утилитой netcat. На машине, где была запущена команда переадресации нужно ввести команду netcat в следующем виде:

$ nc -v remote_ip port_numberТестирование работы переадресованного порта

Если переадресация работает и трафик проходит, то утилита вернёт “Успех!”. В противном случае выдаст ошибку об истечении времени ожидания.

Если что-то не работает, нужно убедиться, что подключение к удаленному порту по SSH работает корректно и запросы не блокируются межсетевым экраном.

СОЗДАНИЕ ПОСТОЯННОГО ТУННЕЛЯ (AUTOSSH)

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

По умолчанию, Autossh не установлен. Чтобы установить эту утилиту введем команду ниже.

$ sudo apt-get install autossh

Синтаксис утилиты autossh почти похож на синтаксис ssh:

$ autossh -L 80:example1.com:80 example2.comСоздание постоянного туннеля (Autossh)

ПЕРЕБРОС УДАЛЁННОГО ПОРТА

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

$ ssh -R 8080:localhost:80 geek@geeks.com

А общий синтаксис команды выглядит так:

$ ssh -R remote_port:local_ip:local_port user@hostname.com

ДИНАМИЧЕСКАЯ ПЕРЕАДРЕСАЦИЯ ПОРТОВ

Динамическая переадресация портов позволит ssh функционировать как прокси-сервер. Вместо переброса трафика на специфический порт, здесь трафик будет идти через на диапазон портов.

Если вы когда-нибудь пользовались прокси сервером для посещения заблокированного сайта или просмотра контента, недоступного в вашем регионе, вероятнее всего вы пользовались SOCKS сервером.

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

$ ssh -D local_port user@hostname.com

Таким образом, если нужно весь трафик идущий на порт 1234 направить на SSH сервер, нужно ввести команду:

$ ssh -D 1234 geek@geeks.com

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

пропускать трафик через туннель

МНОЖЕСТВЕННАЯ ПЕРЕАДРЕСАЦИЯ

Иногда приходится перебрасывать несколько внутренних портов на несколько внешних. Допустим у нас на одном и том же сервере крутятся и веб сервер и oracale. В таком случае мы можем указать несколько условий переадресации ставя перед каждым из них ключ L для локальной переадресации и R для внешней.

$ ssh -L local_port_1:remote_ip:remote_port_1 -L local_port_2:remote_ip:remote_port2 user@hostname.com$ ssh -L 8080:192.168.1.1:80 -L 4430:192.168.1.1:1521 user@hostname.com

$ ssh -R remote_port1:local_ip:local_port1 remote_port2:local_ip:local_port2 user@hostname.com

ПРОСМОТР СПИСКА ТУННЕЛЕЙ

Чтобы просмотреть сколько SSH туннелей активны на данный момент можно прибегнуть к помощи команды lsof:

$ lsof -i | egrep '\'Просмотр списка туннелей

Как видим, на нашей системе сейчас активно три подключения. Чтобы вместо имени хоста показать IP адрес к команде нужно добавить ключ n.

$ lsof -i -n | egrep '\'показать IP адрес к команде

ОГРАНИЧЕНИЕ ПЕРЕАДРЕСАЦИИ ПОРТОВ

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

$ sudo vi /etc/ssh/sshd_config

Здесь есть несколько опций, позволяющих ограничивать создание SSH туннелей.

PermitOpen позволяет прописать адреса, для которых можно включить переадресацию портов. Тут можно указать конкретный IP адреса или название хоста:

PermitOpen host:portPermitOpen IPv4_addr:port

PermitOpen [IPv6_addr]:port

AllowTCPForwarding данная опция включает или отключает переадресацию портов для SSH. Так же можно указать какой тип переадресации допускается на этом хосте.

AllowTCPForwarding yes #default setting
AllowTCPForwarding no #prevent all SSH port forwarding
AllowTCPForwarding local #allow only local SSH port forwarding
AllowTCPForwarding remote #allow only remote SSH port forwarding

Для подробной информации можно вызвать руководство по файлу sshd_config:

$ man sshd_config

УМЕНЬШЕНИЕ ЗАДЕРЖКИ

Проблема с переадресацией портов на SSH это возможность увеличения задержки. При работе с текстовой информацией э то не критично. Проблема даёт о себе знать если по сети идёт много трафика, а SSH сервер настрое как SOCKS сервер, то есть на нём настроена динамический переброс портов.

Это происходит по той причине, что SSH туннели по сути это TCP туннель поверх TCP. Это не очень эффективный метод передачи данных.

Для решения проблемы можно настроить VPN, но если по какой-то причине предпочитаете SSH туннели, то существует программа sshuttle, которая устраняет проблему. На Ubuntu или других дистрибутивах семейства Debian программу можно установить командой

$ sudo apt-get install sshuttle

Если же программы нет в репозиториях дистрибутива, то можно взять ее с GitHub:

$ git clone https://github.com/sshuttle/sshuttle.git$ cd sshuttle

$ ./setup.py install

Настройка туннеля в sshuttle отличается от SSH. Чтобы завернуть весь трафик в туннель нужно ввести следующую команду:

$ sudo sshuttle -r user@remote_ip -x remote_ip 0/0 vvУменьшение задержки SSH туннеля

Прервать соединение можно комбинацией клавиш Ctrl+C. Чтобы запустить sshuttle как демон, нужно добавить ключ D.

Чтобы убедиться что туннель поднят и в глобальной сети показывается другой IP, в терминале можно ввести команду:

$ curl ipinfo.ioПроверка туннеля

Или же просто открыть любой другой сайт, который покажет белый IP и местоположение.

Источник: https://zen.yandex.ru/media/merion_networks/pro-ssh-port-forwarding-v-linux-5e54fb908c0a1879703f41a4

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

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

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

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

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

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

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

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

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

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

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

С использованием 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

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

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

Squid — это прокси-сервер для Ubuntu. Мы уже рассматривали, как прокинуть порт на Ubuntu Сервер, Squid — также хороший инструмент для этого. Он поможет, когда необходим максимальный контроль сетевого трафика. Squid можно установить по команде:

sudo apt-get install squid3

Настройка программы выполняется правкой директив, расположенных в файле:

/etc/squid/squid.conf

О других особенностях использования Squid вы сможете узнать на официальном сайте.

Заключение

Источник: https://nastroyvse.ru/opersys/lix/kak-sdelat-probros-portov-ubuntu-server.html

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

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

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

Для решения этой проблемы есть такое явление, как проброс портов в Ubuntu. Этот процесс имеет свои преимущества и недостатки. Также для него характерны некоторые специфические нюансы и методики решения проблем у новичков в области IT-технологии.

Что такое проброс портов в 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 достаточна проста.

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

Проброс портов в 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.

Распространенные ошибки

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

Внимание! Другие же проблемы связаны, как правило, с самим сервером. В этом случае нужно обратиться за помощью к специалисту.

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

Источник: https://iwsm.ru/operatsionnye-sistemy/linux/probros-portov-v-linux

Лайфхаки
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: