Linux проброс портов: Как пробросить порт в Linux

Содержание

Как пробросить порт в Linux

В этой статье поговорим о том, как можно перенаправить трафик с IP адреса (белого) на другой IP адрес (серый) использую утилиту iptables.

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

У нас имеется компьютер под управлением linux, выступающий в роли маршрутизатора с одним внешним интерфейсом enp0s3 для доступа в Интернет (80.81.82.83) и внутренним enp0s8 интерфейсом Локальной сети (10.0.7.1). Требуется пробросить tcp порт (2121) с белого ip-адреса на серый ip-адрес Локальной сети порт (21).

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

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

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

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

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

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1

Настройка 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 адрес нашего сервера.

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

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 после перезагрузки системы.

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

Как перенаправлять порты через шлюз Linux с помощью Iptables

Большое количество компьютеров в сети постепенно начало становиться проблемой, ведь в IPv4 встроена поддержка относительно ограниченного количества хостов. Обойти лимиты получилось при помощи технологии NAT, позволяющей объединять любые офисные сети таким образом, чтобы внутри они работали «как обычно», а для внешних клиентов были доступны по одному IP-адресу (обычно установленному для сетевого устройства, роутера или маршрутизатора).

Оборудование считывает из пакета данных информацию о локальной машине, для которой адресованы переданные блоки, и подменяет IP на реальный. Те же операции доступны и для портов – NAT меняет их значение, эта процедура получила название «проброс портов». Ее используют при необходимости получения внешнего трафика в частную сеть. На базе платформы Linux управление технологией осуществляется утилитой IPTables.

Принцип работы NAT

Первое и наиболее важное условие для функционирования любой системы – уникальный IP-адрес у каждого компьютера, объединенного в сеть. Но резкий рост количества объединяемых хостов привел к тому, что номеров стало не хватать. И пришлось продумывать варианты, как временно объединить несколько машин под одним адресом – это и стало толчком к появлению технологии Network Address Translation (NAT), так называемому форвардингу портов.

Система функционирует довольно просто. Фактически компьютеры не видны извне, хотя имеют уникальные IP-адреса. Их фильтрует маршрутизатор, который и занимается подменой. Например, локальная машина отправила пакет на внешний ресурс. Тот сначала попадает в память сетевого устройства, которое подменяет адрес отправителя на собственный и отправляет данные дальше. В памяти роутера сохраняется информация, откуда пришел пакет и куда отправлять ответ.

Единственный минус такого подхода заключается в невозможности инициации подключения к ПК напрямую извне. Ведь в таком случае маршрутизатор не знает, какой именно компьютер нужен, и соединение отсекается. Хотя при помощи утилиты IPTables можно настроить NAT, если роутер работает под управлением операционки Debian 10.

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

Первым шагом активируем режим переадресации трафика, которая будет работать на уровне ядра (возможно, это уже сделано, но лучше убедиться):

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

Важно обеспечить сохранение настройки после перезапуска сетевого оборудования:

sudo sysctl -w net. ipv4.ip_forward=1

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

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

В начале процедуры требуется включить режим пропуска пакетов сквозь сетевое устройство. В утилите IPTables для этого используют цепочку FORWARD. Настройки по умолчанию предполагают отклонение всех поступающих на маршрутизатор пакетов данных (срабатывает правило DROP). Поэтому нужно разрешить инициализировать новые коннекты, поступающие от eth0 до eth2. Они получают назначение типа conntrack с представлением в виде пакета SYN:

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

Внесение правила ACCEPT необходимо для разрешения текущего соединения. Оно имеет действие только на первый поступающий пакет, а ведь еще предстоит давать ответ и отправлять «обратные» пакеты. Поэтому включим возможность коннекта в обе стороны через порт 80, в этом нам помогут правила ESTABLIHED и RELATED:

sudo iptables -A FORWARD -i eth0 -o eth2 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i eth2 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

sudo iptables -P FORWARD DROP

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

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

Чтобы сделать это, укажем маршрутизатору, как модифицировать адрес компьютера, для которого предназначены пакеты (Destination) DNAT и адрес отправляющей машины (Source) SNAT. Первые будем настраивать в цепочке PREROUTING в таблице NAT. Процедура изменит адрес на нужный для достижения требуемой цели при прохождении информации между разными сетями. Пакеты же исходящего направления будут автоматом направляться на веб-сервер с IP 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

Половина требуемого сделана. Теперь в пакет будет включен изначальный адрес рабочего места, а это означает, что на него уже можно отправлять ответные пакеты. Но локальная машина ожидает их от маршрутизатора, а не от внешнего ресурса, поэтому придется решить еще одну проблему – сетевое оборудование должно менять входящий IP на внутренний, принадлежащий конкретному компьютеру (в нашем случае 192. 168.1.1).

sudo iptables -t nat -A POSTROUTING -o eth2 -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 eth2 -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 eth2 -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

Выводы

Мы разобрались, как работает проброс портов в Debian. Процедура предполагает настройку обоих направлений передачи данных. Тогда система поймет, откуда пришел пакет и куда возвращать ответ, если тот поступит на маршрутизатор. В качестве тренировки можно настроить подобный коннект с удаленным сервером, арендованным у провайдера cloud.timeweb.com.

Как перенаправлять порты с помощью Iptables в Linux

Введение

Переадресация портов — это метод NAT, который позволяет прокси-брандмауэрам перенаправлять запросы связи с одного IP-адреса и порта на другой. В системах Linux перенаправление портов часто настраивается с помощью Iptables, утилиты для настройки правил фильтрации IP-пакетов.

Из этого туториала вы узнаете, как перенаправлять порты с помощью Iptables.

Предпосылки

  • Две системы Linux с доступом в Интернет и подключенные к одной частной сети.
  • Права администратора в обеих системах.

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

В разделах ниже описана процедура настройки простого брандмауэра на основе Iptables, который контролирует сетевой трафик, входящий и исходящий от веб-сервера.

Шаг 1. Настройка веб-сервера

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

Сбор сведений о сетевом интерфейсе веб-сервера

Откройте терминал на веб-сервере и выполните следующие действия:

1. Введите следующую команду, чтобы получить список доступных подключений IPv4

 ip -4 addr show scope global 

Выходные данные команды ip перечисляют доступные сетевые интерфейсы и назначенные IP-адреса.

Выходные данные показывают частные ( bond0.10 ) и общедоступные ( bond0.3 ) сетевые интерфейсы и IP-адреса системы.

3. Запишите имена интерфейсов и соответствующие им IP-адреса.

Настройка Nginx

Выполните следующие действия на своем веб-сервере, чтобы установить и настроить Nginx:

1. Обновите информацию о репозитории на веб-сервере с помощью диспетчера пакетов вашего дистрибутива Linux. В учебнике используется APT.

 sudo apt update 

2. Установите пакет веб-сервера Nginx.

 sudo apt install nginx 

Введите Y , нажмите Введите и дождитесь завершения установки.

3. Используйте текстовый редактор, такой как Nano или Vim, чтобы открыть файл конфигурации для блока сервера Nginx по умолчанию.

 sudo nano /etc/nginx/sites-enabled/default 

4. Найдите в файле раздел server . Содержимое должно напоминать пример ниже:

 сервер {
    слушать 80 default_server;
    слушать [::]:80 default_server ipv6only=on; 

5. Добавьте частный IP-адрес сервера перед номером порта в первой строке раздела.

 слушать [веб-сервер-частный-ip]:80 default_server; 

Удалите вторую строку , так как она относится к адресу IPv6, не рассматриваемому в этом руководстве. В следующем примере показан раздел server после редактирования.

Сохраните файл и выйдите.

6. Проверьте синтаксис конфигурации Nginx, введя:

 sudo nginx -t 

Nginx отображает синтаксические ошибки, если они есть. Если ошибок нет, Nginx отображает следующий вывод:

7. Перезапустите Nginx, чтобы применить новую конфигурацию.

 sudo systemctl перезапустить nginx 
Проверка конфигурации веб-сервера

Подтвердите, что сервер Nginx работает должным образом, с помощью команды curl. Запустите эту команду с другого компьютера в той же частной сети:

 curl [web-server-private-ip] 

Вывод показывает HTML-данные страницы приветствия Nginx.

Чтобы подтвердить, что веб-сервер не принимает общедоступные сетевые подключения, используйте curl с общедоступным IP-адресом сервера.

 curl [web-server-public-ip] 

Nginx отказывается от соединения, так как он настроен на прием запросов только из частной сети.

Шаг 2. Настройка брандмауэра

После настройки веб-сервера создайте прокси-брандмауэр на другом компьютере. В приведенном ниже примере показано, как настроить брандмауэр с основными правилами Iptables.

Сбор сведений о сетевом интерфейсе брандмауэра

На другой машине, которая будет действовать как брандмауэр:

1. Просмотрите доступные сетевые интерфейсы IPv4 с помощью этой команды:

 ip -4 addr show scope global 

2. Определите и запишите общедоступные и частные сетевые интерфейсы и соответствующие IP-адреса. В нашем случае публичный интерфейс — bond0.2 с IP 131.153. 158 , а приватный интерфейс — bond0.10 с IP 10.3.0.11 .

Установить пакет постоянного брандмауэра

1. Обновите информацию о репозитории в системе брандмауэра.

 sudo apt update 

2. Установите пакет iptables-persistent .

 sudo apt install iptables-persistent 

Введите Y и нажмите Введите , чтобы начать установку.

3. При появлении запроса выберите Да , чтобы сохранить текущие правила iptables.

Настройка основных правил IPv4

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

1. Откройте файл rules.v4 в текстовом редакторе, чтобы добавить правила.

 sudo nano /etc/iptables/rules.v4 

2. Ниже приведен пример конфигурации с объяснением каждого раздела в комментариях.

 *фильтр
# Отбрасывать входящие и пересылаемые пакеты; разрешить исходящие пакеты
:ВХОД ПАДЕНИЕ [0:0]
:ВПЕРЕД КАПИТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
# Пользовательские правила для конкретных протоколов
:УДП - [0:0]
# Напишите здесь правила UDP
:TCP - [0:0]
# Напишите здесь правила TCP
:ICMP - [0:0]
# Напишите здесь правила ICMP
# Принимать трафик SSH TCP
-A TCP -p TCP --dport 22 -j ПРИНЯТЬ
# Политика принятия
-A ВХОД -m conntrack --ctstate УСТАНОВЛЕНО,СВЯЗАННО -j ПРИНЯТЬ
-A ВВОД -i lo -j ПРИНЯТЬ
# Отбросить пакет, если он недействителен
-A INPUT -m conntrack --ctstate INVALID -j DROP
# Передача трафика в цепочки, зависящие от протокола
# Разрешить только новые TCP-соединения, установленные с новыми SYN-пакетами
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP
# Отклонить все, что достигло этой точки
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
# Зафиксировать изменения
СОВЕРШИТЬ
*сырой
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
СОВЕРШИТЬ
*натуральный
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]
:ВВОД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
:ОТПРАВКА ПРИНЯТИЯ [0:0]
СОВЕРШИТЬ
*безопасность
:ВВОД ПРИНЯТЬ [0:0]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
СОВЕРШИТЬ
* калечить
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]
:ВВОД ПРИНЯТЬ [0:0]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
:ОТПРАВКА ПРИНЯТИЯ [0:0]
СОВЕРШИТЬ 

Сохраните файл и выйдите.

3. Проверьте синтаксис файла rules.v4 , введя:

 sudo iptables-restore -t /etc/iptables/rules.v4 

Если синтаксических ошибок нет, команда не возвращает вывод .

4. Примените конфигурацию брандмауэра с помощью следующей команды:

 sudo service netfilter-persistent reload 

5. Распечатайте текущие активные правила, чтобы подтвердить успешное применение изменений.

 sudo iptables -S 

Вывод показывает правила, настроенные в файле rules.v4 .

Настройка основных правил IPv6

В Iptables есть сопутствующий инструмент Ip6tables для настройки правил пакетов IPv6. Поскольку в этом руководстве рассматривается только создание брандмауэра IPv4 с помощью Iptables, в следующем разделе показано, как заблокировать весь трафик через IPv6.

1. Откройте файл rules.v6 в текстовом редакторе.

 sudo nano /etc/iptables/rules. v6 

2. Дайте Ip6tables команду разорвать все подключения.

 *фильтр
:ВХОД ПАДЕНИЕ [0:0]
:ВПЕРЕД КАПИТЬ [0:0]
:ПАДЕНИЕ НА ВЫХОДЕ [0:0]
СОВЕРШИТЬ
*сырой
:ПРЕДВАРИТЕЛЬНЫЙ СБРОС [0:0]
:ПАДЕНИЕ НА ВЫХОДЕ [0:0]
СОВЕРШИТЬ
*натуральный
:ПРЕДВАРИТЕЛЬНЫЙ СБРОС [0:0]
:ВХОД ПАДЕНИЕ [0:0]
:ПАДЕНИЕ НА ВЫХОДЕ [0:0]
:ПОСТРОЕНИЕ КАПЛИ [0:0]
СОВЕРШИТЬ
*безопасность
:ВХОД ПАДЕНИЕ [0:0]
:ВПЕРЕД КАПИТЬ [0:0]
:ПАДЕНИЕ НА ВЫХОДЕ [0:0]
СОВЕРШИТЬ
* калечить
:ПРЕДВАРИТЕЛЬНЫЙ СБРОС [0:0]
:ВХОД ПАДЕНИЕ [0:0]
:ВПЕРЕД КАПИТЬ [0:0]
:ПАДЕНИЕ НА ВЫХОДЕ [0:0]
:ПОСТРОЕНИЕ КАПЛИ [0:0]
СОВЕРШИТЬ
 

Сохраните файл и выйдите.

3. Проверьте синтаксис конфигурации.

 sudo ip6tables-restore -t /etc/iptables/rules.v6 

4. Примените новые правила IPv6.

 sudo service netfilter-persistent reload 

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

 sudo ip6tables -S 

Шаг 3.

Настройка переадресации портов

После настройки веб-сервера и прокси-брандмауэра вы можете создать определенные правила переадресации, которые будут:

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

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

 эхо 1 | sudo tee /proc/sys/net/ipv4/ip_forward 

Следуйте приведенной ниже процедуре, чтобы включить переадресацию пакетов на постоянной основе.

1. Откройте файл sysctl.conf в текстовом редакторе.

 sudo nano /etc/sysctl.conf 

2. Найдите строку, показанную ниже:

 # net. ipv4.ip_forward=1 

3. Раскомментируйте строку, удалив начальный символ # .

Сохраните файл и выйдите.

4. Загрузите новую конфигурацию файла с помощью sysctl :

 sudo sysctl -p 

5. Примените все системные изменения.

 sudo sysctl --system 

Пересылка пакетов теперь работает в системе.

Укажите правила переадресации

Укажите правила переадресации, добавив их в файл rules.v4 . В качестве альтернативы используйте командную строку и следующий синтаксис:

 sudo iptables [rule] 

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

1. Разрешить установку подключений через публичный интерфейс к порту 80 и перенаправить их на приватный интерфейс:

 sudo iptables -A FORWARD -i [публичный-интерфейс брандмауэра] -o [частный-интерфейс брандмауэра ] -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT 

С параметрами из нашего примера правило выглядит так:

 sudo iptables -A FORWARD -i bond0. 2 -o bond0.10 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ПРИНЯТЬ 

Примечание : Ввод команд Iptables через командную строку не приводит к выводу.

2. Разрешить пакетному трафику, помеченному как УСТАНОВЛЕННЫЙ и СВЯЗАННЫЙ, проходить от общедоступного к частному интерфейсу.

 sudo iptables -A FORWARD -i [общедоступный-интерфейс брандмауэра] -o [частный-интерфейс брандмауэра] -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT 

Например:

 sudo iptables -A FORWARD - i bond0.2 -o bond0.10 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 

3. Разрешить возврат одного и того же трафика с частного на общедоступный интерфейс.

 sudo iptables -A FORWARD -i [частный-интерфейс брандмауэра] -o [общедоступный-интерфейс брандмауэра] -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 

Используя параметры примера:

 sudo iptables -A FORWARD -i bond0.10 -o bond0.2 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
Предоставить правила NAT

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

1. Изменить адрес назначения пакета, т. е. изменить его с общедоступного интерфейса брандмауэра на частный интерфейс веб-сервера.

 sudo iptables -t nat -A PREROUTING -i [брандмауэр-общедоступный-интерфейс] -p tcp --dport 80 -j DNAT --to-destination [веб-сервер-частный-ip] 

Вот что Команда выглядит так, как будто используется пример данных веб-сервера из статьи.

 sudo iptables -t nat -A PREROUTING -i bond0.2 -p tcp --dport 80 -j DNAT --to-destination 10.3.0.12 

2. Измените исходный адрес пакета на частный IP-адрес брандмауэра. Таким образом, веб-сервер отправляет пакет брандмауэру, который пересылает его источнику.

 sudo iptables -t nat -A POSTROUTING -o [брандмауэр-частный-интерфейс] -p tcp --dport 80 -d [веб-сервер-частный-ip] -j SNAT --to-source [брандмауэр-частный- ip] 

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

 sudo iptables -t nat -A POSTROUTING -o bond0. 10 -p tcp --dport 80 -d 10.3.0.12 -j SNAT --to-source 10.3 0,11 

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

 sudo service netfilter-persistent save 
Проверка конфигурации брандмауэра

Чтобы проверить окончательную конфигурацию брандмауэра, используйте curl на другом компьютере, чтобы отправить запрос на общедоступный IP-адрес прокси-брандмауэра.

 curl [firewall-public-ip] 

Вывод показывает, что брандмауэр успешно перенаправил страницу Nginx, обслуживаемую веб-сервером.

Заключение

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

Если вы используете Ubuntu, вам может быть интересно узнать, как настроить брандмауэр с UFW, удобным интерфейсом Iptables.

A Практическое руководство • CloudSigma

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

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

В этом руководстве мы покажем вам, как перенаправить порты с помощью iptables в Linux.

Предварительные условия

Для выполнения этого руководства вам потребуется:

  • Ubuntu установлена ​​в вашей системе.
  • Два хоста Ubuntu 20.04 в одном центре обработки данных с включенной частной сетью.
  • Учетная запись пользователя без полномочий root настроена с привилегиями sudo на каждой машине.
Host Details

Во-первых, нам нужно узнать подробности интерфейсов и адреса рабочих серверов. Проверим сетевые интерфейсы нашей системы:

ip -4 addr показать глобальную область

IP-адрес -4 показать глобальную область

Вы увидите вывод:

Пример вывода

2: eth0: mtu 1500 qdisc pfifo_fast состояние UP группа по умолчанию qlen 1000
инет 198.51.100.45/18 brd 45.55.191.255 глобальный охват eth0
valid_lft навсегда

3: eth2: mtu 1500 qdisc pfifo_fast состояние UP группа по умолчанию qlen 1000
инет 192.168.1.5/16 brd 10.132.255.255 глобальный охват eth2
valid_lft навсегда предпочтительнее_lft навсегда

1

2

3

4

5

6

7

8

9

Выбор Вывода выборки

2: ETH0: <вещательная, многоадресная, UP, Lower_up> MTU 1500 QDISC PFIFO_FAST CATER UP GROUP QLEN 1000

INET 198,51. 100.45/18 BRD 45.55.191.255. Preferred_lft навсегда

 

3: eth2: <вещание, многоадресная, UP, Lower_up> MTU 1500 QDISC PFIFO_FAST State UP Группа по умолчанию QLEN 1000

INET 192.168.1.5/16 BRD 10.132.255.255 Scope Global Eth2

Valid_lft Forever_lft Forever_lft Forever Forever Forever_lft Forever Forever_lft Forever Forever

592592592592599259925925992599259925992599259925

Valiet_lft Forever_lft_lft Forever_lft_lft Forever.

Здесь выделенный вывод показывает два интерфейса, первый
eth0 присваивается адресу
192.51.100.45, а второй
eth2 назначен на адрес
192.168.1.5. Из этих двух интерфейсов один является общедоступным, а другой — частным. Мы запустим команду, чтобы различить их, и выясним общедоступный интерфейс, подключенный к вашему шлюзу по умолчанию. Чтобы отличить, введите:

показать IP-маршрут | grep по умолчанию =

ip маршрут показать | grep по умолчанию =

Вы увидите вывод:

Выход:

показать IP-маршрут | grep по умолчанию

Вывод:

 

ip route show | grep по умолчанию

Фиктивные данные для учебного руководства

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

Подробная информация о сети веб-сервера:

  • Общедоступный IP-адрес:
    203.0.113.2

  • Частный IP-адрес:
    192.0.2.2

  • Общий интерфейс:
    eth0

  • Частный интерфейс:
    эт2

Сведения о сети брандмауэра:

  • Общедоступный IP-адрес:
    203.0.113.15

  • Частный IP-адрес:
    192.0.2.15

  • Общий интерфейс:
    eth0

  • Частный интерфейс:
    эт2

Настройка веб-сервера

Давайте начнем с нашего хоста веб-сервера. Сначала войдите под своим
пользователь sudo.

Установка Nginx

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

Затем обновите локальный кэш пакетов и используйте apt для загрузки и установки Nginx:

sudo apt-получить обновление

sudo apt-получить обновление

sudo apt-get установить nginx

sudo apt-get установить nginx

Добавить ограничения

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

Чтобы добавить ограничения, откройте файл конфигурации блока сервера по умолчанию.
/etc/nginx/sites-enabled/default в любом текстовом редакторе по вашему выбору (здесь мы используем текстовый редактор nano) и введите:

sudo nano /etc/nginx/sites-enabled/по умолчанию

sudo nano /etc/nginx/sites-enabled/по умолчанию

В выводе вы увидите, что директива listen появляется дважды:

В этом руководстве мы используем первую директиву для демонстрации переадресации IPv4. Второй, настроенный для IPv6, можно удалить. Добавьте частный IP-адрес вашего веб-сервера с двоеточием перед цифрой 80, чтобы Nginx получал информацию только из частного интерфейса. Далее редактируем директиву:

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

судо нгинкс -т

судо нгинкс -т

Если вы не видите ошибок, перезапустите Nginx и включите новую конфигурацию:

перезапуск службы sudo nginx

перезапуск службы sudo nginx

Проверка ограничения сети

Давайте проверим уровень доступа, который у нас есть к нашему веб-серверу. Попробуйте получить доступ к веб-серверу, используя приватный интерфейс, используя
команда curl:

curl —connect-timeout 5 192. 0.2.2

curl —connect-timeout 5 192.0.2.2

Вы увидите вывод:

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

curl —connect-timeout 5 203.0.113.2

curl —connect-timeout 5 203.0.113.2

curl: (7) Не удалось подключиться к порту 203.0.113.2 80: в соединении отказано

curl: (7) Не удалось подключиться к порту 203.0.113.2 80: Отказ в подключении

Это именно то, что мы ожидали.

Настройте брандмауэр для переадресации порта 80

Давайте продолжим нашу работу с реализацией переадресации портов на нашем компьютере с брандмауэром.

Включить переадресацию в ядре

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

Чтобы включить переадресацию трафика на уровне ядра, введите:

эхо 1 | судо тройник /proc/sys/net/ipv4/ip_forward

эхо 1 | судо тройник /proc/sys/net/ipv4/ip_forward

Чтобы включить переадресацию портов на постоянной основе, отредактируйте
файл /etc/sysctl.conf. Откройте файл с
привилегии sudo и введите:

судо нано /etc/sysctl.conf

судо нано /etc/sysctl.conf

Внутри найдите и раскомментируйте строку, которая выглядит следующим образом:

/etc/sysctl.conf

net.ipv4.ip_forward=1

net. ipv4.ip_forward=1

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

судо sysctl-p

sysctl-p

sudo sysctl —система

sudo sysctl —система

Базовая настройка брандмауэра

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

  • Установлено
    iptables-постоянный
  • Сохранен набор правил по умолчанию в
    /etc/iptables/rules.v4
  • Всесторонние знания о добавлении и изменении правил с помощью
    команда iptables

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

Добавление правил переадресации

Мы настроим наш брандмауэр так, чтобы трафик поступал в наш общедоступный интерфейс (
eth0 ) на порту
80 перенаправляется на наш приватный интерфейс (
эт2). По умолчанию наш базовый брандмауэр имеет
Цепь FORWARD настроена на
СНИЖАЙТЕ трафик. Добавление правил брандмауэра позволит перенаправлять соединения с нашим веб-сервером. Для повышения безопасности мы заблокируем правила брандмауэра, чтобы разрешить переадресацию запросов.

В
FORWARD, мы будем принимать новые соединения, предназначенные для порта
80, поступающие с нашего общедоступного интерфейса и направляющиеся к нашему частному интерфейсу. Мы будем определять новые связи с помощью
расширение conntrack и представлять их с помощью
Пакет TCP SYN:

sudo iptables -A FORWARD -i eth0 -o eth2 -p tcp —syn —dport 80 -m conntrack —ctstate NEW -j ПРИНЯТЬ

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

Необходимо разрешить любой последующий трафик в обоих направлениях в результате входящего соединения. Введите команды ниже, чтобы разрешить
УСТАНОВЛЕНО и
СВЯЗАННЫЙ трафик между нашими общедоступными и частными интерфейсами:

iptables -A FORWARD -i eth0 -o eth2 -m conntrack —ctstate УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ

iptables -A FORWARD -i eth0 -o eth2 -m conntrack —ctstate УСТАНОВЛЕНО,СВЯЗАННО -j ПРИНЯТЬ

iptables -A FORWARD -i eth2 -o eth0 -m conntrack —ctstate УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ

iptables -A FORWARD -i eth2 -o eth0 -m conntrack —ctstate ESTABLISHED, RELATED -j ПРИНЯТЬ

Давайте проверим, соответствует ли наша политика
Цепочка FORWARD настроена на
СБРОС:

sudo iptables -P ПЕРЕДАЧА

sudo iptables -P ПЕРЕДАЧА

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

Добавление правил NAT к прямым пакетам

Мы выполним две отдельные операции, чтобы
iptables, чтобы правильно изменять пакеты и оптимизировать связь с клиентами и веб-сервером.

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

Важно отметить, что мы сосредоточены на настройке переадресации портов. Выполнение NAT для каждой упаковки, попадающей в брандмауэр, не является частью нашего руководства. Мы сопоставим пакеты в порту
80 на частный IP-адрес нашего веб-сервера:

.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 80 -j DNAT —to-destination 192.0.2.2

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 80 -j DNAT —к месту назначения 192.0.2.2

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

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

Чтобы включить эту функцию, добавьте правило в
POSTROUTING цепочка
nat оценивается непосредственно перед отправкой пакетов по сети. Затем сопоставьте пакеты, предназначенные для нашего веб-сервера, по IP-адресу и порту:

.
sudo iptables -t nat -A POSTROUTING -o eth2 -p tcp —dport 80 -d 192.0.2.2 -j SNAT —to-source 192.0.2.15

sudo iptables -t nat -A POSTROUTING -o eth2 -p tcp —dport 80 -d 192.0.2.2 -j SNAT —to-source 192.0.2.15

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

завиток 203.0.113.15

завиток 203.0.113.15

Вы увидите вывод:

Настройка переадресации портов завершена.

Настройка постоянного набора правил

После завершения настройки переадресации портов мы сохраним это в нашем постоянном наборе правил. Если вы хотите сохранить комментарии в текущем наборе правил, используйте
iptables-persistent service для сохранения ваших правил:

sudo service iptables-persistent save

служба sudo iptables-постоянное сохранение

Вы также можете открыть его и отредактировать вручную, чтобы сохранить комментарии в файле:

судо нано /etc/iptables/rules.v4

судо нано /etc/iptables/rules.v4

Далее настройте
таблица фильтров и
таблица nat для добавления
Цепные правила FORWARD и
правила ROUTING соответственно. Настройка
nat позволит нам добавить
ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ и
РАЗМЕЩЕНИЕ правил, как показано в примере ниже:

/etc/iptables/rules.v4

*фильтр

# Разрешить все исходящие, но по умолчанию отбрасывать входящие и пересылаемые пакеты

:ВХОД ПАДЕНИЕ [0:0]

:ВПЕРЕД КАПИТЬ [0:0]

: ВЫВОД ПРИНЯТЬ [0:0]

# Пользовательские цепочки для каждого протокола

:УДП — [0:0]

:TCP — [0:0]

:ICMP — [0:0]

# Допустимый UDP-трафик

# Допустимый TCP-трафик

-A TCP -p TCP —dport 22 -j ПРИНЯТЬ

# Допустимый ICMP-трафик

# Стандартная политика принятия

-A ВХОД -m conntrack —ctstate УСТАНОВЛЕНО,СВЯЗАННО -j ПРИНЯТЬ

-A ВВОД -i lo -j ПРИНЯТЬ

# Отбросить недопустимые пакеты

-A INPUT -m conntrack —ctstate INVALID -j DROP

# Передача трафика в цепочки, зависящие от протокола

## Разрешить только новые подключения (установленные и связанные уже должны быть обработаны)

## Для TCP дополнительно разрешайте только новые SYN-пакеты, так как это единственный допустимый

## способ установки нового TCP-соединения

-A INPUT -p udp -m conntrack —ctstate NEW -j UDP

-A INPUT -p tcp —syn -m conntrack —ctstate NEW -j TCP

-A INPUT -p icmp -m conntrack —ctstate NEW -j ICMP

# Отклонить все, что не удалось до этого момента

## Попытаться быть специфичным для протокола с сообщением об отказе

-A INPUT -p udp -j REJECT —reject-with icmp-port-unreachable

-A INPUT -p tcp -j REJECT —reject-with tcp-reset

-A INPUT -j REJECT —reject-with icmp-proto-unreachable

# Правила проброса порта 80 на наш веб-сервер

# Подробная информация о сети веб-сервера:

# * Общедоступный IP-адрес: 203. 0.113.2

# * Частный IP-адрес: 192.0.2.2

# * Публичный интерфейс: eth0

# * Частный интерфейс: eth2

#

# Детали сети брандмауэра:

#

# * Общедоступный IP-адрес: 203.0.113.15

# * Частный IP-адрес: 192.0.2.15

# * Публичный интерфейс: eth0

# * Частный интерфейс: eth2

-A FORWARD -i eth0 -o eth2 -p tcp —syn —dport 80 -m conntrack —ctstate NEW -j ПРИНЯТЬ

-A FORWARD -i eth0 -o eth2 -m conntrack —ctstate УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ

-A FORWARD -i eth2 -o eth0 -m conntrack —ctstate УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ

# Конец правил фильтрации вперед

# Зафиксировать изменения

СОВЕРШИТЬ

*сырой

: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]

: ВЫВОД ПРИНЯТЬ [0:0]

СОВЕРШИТЬ

*натуральный

: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]

:ВВОД ПРИНЯТЬ [0:0]

: ВЫВОД ПРИНЯТЬ [0:0]

:ОТПРАВКА ПРИНЯТИЯ [0:0]

# Правила трансляции запросов на порт 80 публичного интерфейса

# чтобы мы могли правильно пересылать на веб-сервер, используя

# закрытый интерфейс.

# Подробная информация о сети веб-сервера:

# * Общедоступный IP-адрес: 203.0.113.2

# * Частный IP-адрес: 192.0.2.2

# * Публичный интерфейс: eth0

# * Частный интерфейс: eth2

#

# Детали сети брандмауэра:

#

# * Общедоступный IP-адрес: 203.0.113.15

# * Частный IP-адрес: 192.0.2.15

# * Публичный интерфейс: eth0

# * Частный интерфейс: eth2

-A PREROUTING -i eth0 -p tcp —dport 80 -j DNAT —to-destination 192.0.2.2

-A POSTOUTING -d 192.0.2.2 -o eth2 -p tcp —dport 80 -j SNAT —to-source 192.0.2.15

# Конец трансляции NAT для трафика веб-сервера

СОВЕРШИТЬ

*безопасность

:ВВОД ПРИНЯТЬ [0:0]

:ВПЕРЕД ПРИНЯТЬ [0:0]

: ВЫВОД ПРИНЯТЬ [0:0]

СОВЕРШИТЬ

* калечить

: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]

:ВВОД ПРИНЯТЬ [0:0]

:ВПЕРЕД ПРИНЯТЬ [0:0]

: ВЫВОД ПРИНЯТЬ [0:0]

:ОТПРАВКА ПРИНЯТИЯ [0:0]

СОВЕРШИТЬ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

0002 31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

112

121

122

9000 12 9000 3

9000 3

9000 3 9000 3

9000 3

9000 3

9000 3

0002 124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

150

151

152

9000 3

0003

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

/etc/iptables/rules. v4

*Фильтр

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

: входной падение [0: 0]

: Первое падение [0: 0]

: выходной прием [0: 0: 0]

# Пользовательские цепи для протоколов

: UDP — [0: 0]

: TCP — [0: 0]

: ICMP — [0:0]

 

# Допустимый трафик UDP

# приемлемый трафик TCP

-A TCP -P TCP — -DPORT 22 -J Принять

# приемлемый трафик ICMP

# Политика приема

-A. conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT

 

-A INPUT -i lo -j ACCEPT

 

# Отбрасывать недействительные пакеты

 

-A INVALID -m connstate 9 INVALID -0 j conntrack

 

-A INPUT0002  

# Передача трафика в цепочки, зависящие от протокола

 

## Разрешить только новые соединения (установленные и связанные уже должны быть обработаны) valid

 

## метод для установления нового TCP-соединения —ctstate NEW -j TCP

 

-A INPUT -p icmp -m conntrack —ctstate NEW -j ICMP

 

# Отклонить все, что не удалось выполнить до этого момента

 

-A ВХОД -p udp -j ОТКЛОНЕНИЕ —reject-with icmp-port-unreachable

 

-A INPUT -p tcp -j REJECT —reject-with tcp-reset

 

— INP003 -j ОТКЛОНИТЬ —reject-с icmp-proto-unreachable

# Правила для пересылки порта 80 на наш веб -сервер

# Де

# * Общественный интерфейс: ETH0

# * Частный интерфейс: ETH2

#

# СЕТИ СЕТИ СЕТИ:

#

# * Public IP Addred: 203. 0. 113,15

# * Частный IP -адрес: 192.0.2.15

# * Общественный интерфейс: ETH0

# * Частный интерфейс: ETH2

-a -syn —dport 80 -m conntrack —ctstate NEW -j ПРИНЯТЬ

 

-A FORWARD -i eth0 -o eth2 -m conntrack —ctstate ESTABLISHED, RELATED -j ПРИНЯТЬ

 

-A FORWARD -i eth2 -o eth0 -m conntrack —ctstate ESTABLISHED, RELATED -j ACCEPT

# Конец правила форвардной фильтрации

# Commit the Changes

Commit

*RAW

: Принятие Принятия [0: 0]

: Принимайте вывод [0: 0: 0]

: Выходной : 0]

Commit

*NAT

: ПРЕДОСТАВЛЕНИЕ ПРЕДУПРЕЖДЕНИЕ [0: 0]

: Входной прием [0: 0]

: Выходной прием [0: 0]

 

:POSTROUTING ACCEPT [0:0]

 

# Правила преобразования запросов на порт 80 публичного интерфейса

 

# чтобы мы могли корректно пересылать запросы на веб-сервер, используя приватный

#

2 интерфейс.

# Де0003

# * Частный интерфейс: ETH2

#

# Де Адрес: 192.0.2.15

 

# * Общедоступный интерфейс: eth0

 

# * Частный интерфейс: eth2

 

-A PREROUTING -i eth0-djination -p tcp — —d 192.0.2.2

 

-A POSTROUTING -d 192.0.2.2 -o eth2 -p tcp —dport 80 -j SNAT —to-source 192.0.2.15

 

# Конец NAT9s traffic0 для web server03

Commit

*Security

: Принятие ввода [0: 0]

: Впереди Принятие [0: 0]

: Выходной прием [0: 0]

: Вывод [0: 0]

: COMMIT

 

*mangle

 

: PREROUTING ACCENT [0: 0]

: Принятие ввода [0: 0]

: Переученительный прием [0: 0]

: Вывод Принят [0: 0]

: :POSTOUTING ACCEPT [0:0]

 

COMMIT

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

sudo iptables-restore -t < /etc/iptables/rules.v4

sudo iptables-restore -t < /etc/iptables/rules.v4

Если вы не видите ошибок, загрузите набор правил:

sudo service iptables-persistent reload

служба sudo iptables-постоянная перезагрузка

Давайте проверим, что наш веб-сервер по-прежнему доступен через общедоступный IP-адрес вашего брандмауэра:

завиток 203.0.113.15

завиток 203.0.113.15

Заключение

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