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

Система Убунту является самой оптимальной ОС для работы не только крупных производств, но и частных отдельных лиц. Однако если с одного гаджета работает несколько человек, это может стать причиной многих проблем, связанных с работой Линукс. Для решения этой проблемы есть такое явление, как проброс портов в 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

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll Up