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:
инет 198.51.100.45/18 brd 45.55.191.255 глобальный охват eth0
valid_lft навсегда
3: eth2:
инет 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. Вы можете использовать возможности переадресации портов, чтобы скрыть топологию вашей частной сети, одновременно оптимизируя служебный трафик, чтобы он мог свободно проходить через межсетевой экран вашего шлюза.