В этой статье поговорим о пробросе портов или IP Forwarding, используя ОС Astra Linux и утилиту iptables.

Начальные данные

У нас имеется компьютер под управлением Astra Linux с двумя сетевыми интерфейсами. Также в сети есть ещё одна машина с одним сетевым интерфейсом, которой выход в Интернет недоступен.

Требуется пробросить tcp порт (2222) с белого ip-адреса расположенного на ПК подключенного к Интернету, на серый ip-адрес Локальной сети порт (22).

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

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

В принципе все довольно просто, необходимо добавить всего несколько правил в таблицу маршрутизации iptables. Но для начала нам нужно включить форвардинг пакетов на ПК подключенного к Интернету. Для этого открываем терминал (ctrl+t) и вводим следующие команды:

sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo sysctl -p

Для того чтобы каждый раз не вводить команды, отредактируем файл /etc/sysctl.conf

sudo nano /etc/sysctl.conf

Ищем там строку #net.ipv4.ip_forward=1, и убираем знак комментария.

net.ipv4.ip_forward=1

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

ifconfig -a

Из вывода нас интересует интерфейсов eth0 с ip-адресом 80.81.82.83 и eth1 — 10.0.7.1. Первый интерфейс подключен к всемирной паутине, а второй к локальной сети.

Настройка port forwarding в Astra Linux

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

sudo iptables -A FORWARD -i eth0 -o eth1 -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 — внешний порт для подключения.
  • tcp — может принимать значения tcp или udp в зависимости от того какой порт вам необходимо прикинуть.

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

Как посмотреть правила 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

Вот и все, на этом проброс портов в Astra Linux с помощью iptables завершено.

[endtxt]

RSS

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

5 1 голос
Рейтинг статьи
0
Можете поделится своими мыслями.x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять