Как пробросить порт centos
Процесс настройки шлюза (NAT) на системах UNIX, обычно, выполняется в несколько команд: включением перенаправления на уровне системы и настройкой firewall.
Настройка системы
Все что нужно настроить — включить перенаправления на уровне ядра. Для этого открываем следующий файл:
И добавляем в него следующую строку:
После применяем настройку:
sysctl -p /etc/sysctl.conf
В случае с единым сетевым интерфейсом больше ничего делать не потребуется — CentOS начнет работать как Интернет-шлюз.
В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран.
Настройка брандмауэра
Рассмотрим настройку фаервола при помощи двух различных популярных утилит — firewalld и iptables.
Firewalld
Настройка выполняется для двух сетевых интерфейсов — ens32 (внутренний) и ens34 (внешний):
firewall-cmd --direct --permanent --add-rule ipv4 nat POSTROUTING 0 -o ens34 -j MASQUERADE
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens32 -o ens34 -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens34 -o ens32 -m state --state RELATED,ESTABLISHED -j ACCEPT
systemctl restart firewalld
Iptables
Настройка выполняется из расчета, что Интернет настроен через интерфейс ens160, а внутренняя сетя через ens32:
iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
Если на сервере для доступа в локальную и глобальную сети используются разные сетевые интерфейсы, нам может понадобиться создать еще два правила:
iptables -A FORWARD -i ens32 -o ens160 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens32 -o ens160 -j ACCEPT
yum install iptables-services
service iptables save
Проброс портов (Port Forwarding)
Необходим для перенаправление сетевых запросов на сервер, стоящий за NAT и не имеющий прямого выхода во внешнюю сеть. Настройки отличаются в зависимости от способа управления брандмауэром netfilter.
Firewalld
firewall-cmd --zone=external --permanent --add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15
Разрешаем сам порт:
firewall-cmd --permanent --zone=external --add-port=25/tcp
Чтобы правило вступило в силу:
Iptables
Настройка выполняется двумя командами и двумя спомобами.
iptables -t nat -I PREROUTING -p tcp -m tcp -d 10.8.232.111 --dport 25 -j DNAT --to-destination 192.168.0.15:8025
iptables -t nat -I POSTROUTING -p tcp -m tcp -s 192.168.0.15 --sport 8025 -j SNAT --to-source 10.8.232.111:25
iptables -t nat -I PREROUTING -p tcp -i eth0 --dport 25 -j DNAT --to-destination 192.168.0.15:8025
iptables -I FORWARD -p tcp -d 192.168.0.15 --dport 8025 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
* где eth0 — внешний сетевой интерфейс.
iptables -I INPUT 1 -p tcp --dport 8025 -j ACCEPT
* обратите внимание, что мы разрешаем порт, на который переводим запрос, так как цепочки POSTROUTING и PREROUTING работают до цепочки FILTER, а потому открывать нужно не входящий порт (25), а тот, на который назначается пакет (8025).
Кратко о задаче чтобы Вы понимали что нужно сделать и зачем, но предыдущий вопрос не открывали:
Есть RDP сервер, расположенный в РФ. Нужно, чтобы на клиентах IP подключения к RDP серверу был другим, желательно в недалекой европейской стране. Иными словами нам нужен сервер-посредник, который принимал бы подключения по 3389 порту, перенаправлял TCP/UDP на реальный IP сервера на тот же порт 3389, сохраняя реальный IP в тайне от юзеров и любопытствующих субъектов.
Мне уже популярно объяснили что это бредятина, шпиономания и вообще колхоз и тупость, но задача поставлена, а я туплю, но пытаюсь выполнить пожелание руководства в ключе "любой каприз за Ваши деньги".
Попытка решения задачи, которая у меня не прошла:
Взял VDS 1x2.2ГГц, 1Гб RAM, 1 IP. Установлена CentOs 7.6.1810. Пробовал ковырять оба предложенных варианта: haproxy и отключение firewalld с включением iptables. Конфиги для меня как иероглифы.
Если у кого-то есть время и желание научить дурака науке, опишите пожалуйста процесс реализации этого (по мнению экспертов предыдущего вопроса) пустякового дела на 10 минут работы.
Заранее спасибо, за любой результат.
Простой 1 комментарий
так точно, но либо я что-то не так делаю, либо. да не либо, а точно не так что-то делаю.
Куда и как это запихивать? Передо мной открыта консоль сервера по SSH, я вырубил firewalld и установил iptables.
Заходишь под root
sudo -s
Копируешь это в блокнот, правишь под себя, потому копируешь в вставляешь в консоль.
консоль выдала bad argument 'tcp'
ip ad | grep state
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000
Попробуй вот эти строки поменять
WAN_INTERFACE='eth0'
SRC_PORT_FORWARD='3389'
DST_PORT_FORWARD='3389'
Друзья спасибо всем за советы и мнения! Очень рад что тема нашла отклик. Надеюсь все написанное пригодится не только мне.
Самостоятельно пришел к следующему решению:
Решил не возиться пока с Linux ввиду недостатка опыта работы с оным, а взял в Финляндии виртуалку с Windows Server 2016 за 3$ в мес. На арендованном забугорном сервере поднята SoftEther VPN Server с SecureNAT. Виртуальная машина с сервером терминалов, расположенная в РФ коннектится через L2TP VPN к этому серверу. А юзеры терминалов коннетятся к нему же таким же образом через L2TP VPN.
Получилась схема: Клиент RDP через VPN -> Сервер в Финляндии (SoftEtherVPN Server) > VPN до сервера в РФ.
Приятно порадовала скорость подключения, лагов нет, качество согласно индикатору RDP 8.1 хорошее.
Более того, покуда в свойствах VPN подключения российского сервера ставим галочку шлюза удаленной сети, удалось дать пользователям RDP сервера доступ в сеть через тот же Финский сервак. Тепеперь у наших RDP юзеров в офисе на сервере терминалов есть еще и интернет, который так же анонимизирован насколько возможно (финский IP).
Задача как задача, вполне себе. Видимо есть основания скрывать тот факт, что целевой сервер в РФ. Бывает. Есть такие -
". Где с умилением глядят
На заграничные наклейки.
А сало. русское едят! " (С) Михалков С.В. Две подруги.
Задача сводится к обычному нату, который меняет в пакете пришедшем на порт 3389 IP назначения с локального на некий удаленный - после чего ведро ессно этот пакет отправляет в мир на дефолтный шлюз.
Во-первых - всем и каждому, кто впал в затуп и не знает, как проходит пакет по netfilter - рекомендую эту схему. Распечатать и повесить на рабочем месте.
Сначала зададим допущения.
IP сервера = 212.20.5.1 (много-много лет назад это был IP нашего сервера, он реально российский :) )
IP VPS = 170.70.1.1 (взят с потолка)
Политика по умолчанию для filter - ACCEPT (все, что не запрещено - разрешено. Очень опасная политика, вязта только для демонстрации, в жизни так делать нельзя. Мне просто неохота писать дополнительные правила по пропуску трафика)
NAT мы выполняем в цепочке prerouting таблицы nat (она идет до filter). Сюда пакет попадает сразу после mangle prerouting.
Читается "если поступил пакет по протоколу tcp на порт 3389 на IP 170.70.1.1, то применить действие DNAT, заменив IP назначения на 212.20.5.1. Правило поместить в цепочку prerouting".
Потом mangle postrouting и nat postrouting. В nat postrouting нам нужно сделать небольшой камуфляж. В пакете IP назначения 212.20.5.1 - но IP источника - тот IP, с которого пакет пришел на VPS. Это нам не нужно и потому что задача - его скрыть и потому что при попадании пакета на 212.20.5.1 - он ответит ессно на этот IP. Поэтому выполняем следующее:
Читаем "если пакет уходит через интерфейс eth0, то применить действие SNAT и заменить IP источника на 170.70.1.1"
Это стандартное правило NAT, оно присутствует всегда, если VPS является NAT хоть для чего-нибудь.
Все. Пакет на 212.20.5.1 уходит от IP 170.70.1.1, тот отвечает по IP источника, VPS видит, что был NAT и отправляет пакет туда, откуда он пришел.
Установленный в операционной системе Firewall используется для предотвращения несанкционированного прохождения трафика между компьютерными сетями. Вручную или автоматически создаются специальные правила для межсетевого экрана, которые и отвечают за управление доступом. В ОС, разработанной на ядре Linux, CentOS 7 имеется встроенный фаервол, а управление им осуществляется с помощью брандмауэра. По умолчанию задействован FirewallD, и о его настройке мы бы хотели поговорить сегодня.
Настраиваем Firewall в CentOS 7
Как уже было сказано выше, стандартным брандмауэром в CentOS 7 назначена утилита FirewallD. Именно поэтому настройка фаервола будет рассмотрена на примере этого инструмента. Задать правила фильтрации можно и с помощью той же iptables, но это выполняется немного другим образом. С конфигурацией упомянутой утилиты рекомендуем ознакомиться, перейдя по следующей ссылке, а мы же начнем разбор FirewallD.
Основные понятия межсетевого экрана
Включение брандмауэра FirewallD
Для начала нужно запустить FirewallD или убедиться в том, что он находится в активном состоянии. Только функционирующий демон (программа, работающая в фоновом режиме) будет применять правила для межсетевого экрана. Активация производится буквально в несколько кликов:
Если же вам однажды потребуется временно или перманентно отключить брандмауэр, советуем воспользоваться инструкцией, представленной в другой нашей статье по следующей ссылке.
Просмотр правил по умолчанию и доступных зон
Даже работающий в штатном режиме фаервол имеет свои определенные правила и доступные зоны. Перед началом редактирования политик советуем ознакомиться с текущей конфигурацией. Делается это при помощи простых команд:
-
Определить функционирующую по умолчанию зону поможет команда firewall-cmd --get-default-zone .
После определения необходимых параметров можно переходить к их изменению и добавлению. Давайте детально разберем несколько самых популярных конфигураций.
Настройка зон интерфейсов
Если вы захотите сбросить произведенные ранее настройки, просто выполните рестарт брандмауэра: sudo systemctl restart firewalld.service .
Порой не всегда удобно изменять зону интерфейса всего на одну сессию. В таком случае потребуется редактировать конфигурационный файл, чтобы все настройки ввелись на перманентной основе. Для этого мы советуем использовать текстовый редактор nano, который устанавливается с официального хранилища sudo yum install nano . Далее остается произвести такие действия:
Теперь зона интерфейса будет такой, какой вы ее указали, до момента следующего редактирования конфигурационного файла. Чтобы обновленные параметры вступили в действие, выполните sudo systemctl restart network.service и sudo systemctl restart firewalld.service .
Установка зоны по умолчанию
Создание правил для программ и утилит
В самом начале статьи мы рассказали о действии каждой зоны. Определение сервисов, утилит и программ в такие ветви позволит применить для каждой из них индивидуальные параметры под запросы каждого пользователя. Для начала советуем ознакомиться с полным списком доступных на данный момент сервисов: firewall-cmd --get-services .
Результат отобразится прямо в консоли. Каждый сервер разделен пробелом, и в списке вы сможете с легкостью отыскать интересующий вас инструмент. Если же нужный сервис отсутствует, его следует дополнительно установить. О правилах инсталляции читайте в официальной документации программного обеспечения.
Указанная выше команда демонстрирует только названия сервисов. Детальная информация по каждому из них получается через индивидуальный файл, находящийся по пути /usr/lib/firewalld/services . Такие документы имеют формат XML, путь, например, к SSH выглядит так: /usr/lib/firewalld/services/ssh.xml , а документ имеет следующее содержимое:
SSH
Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.
Просмотреть полный список постоянных правил для определенной зоны можно, отобразив список в отдельной строке консоли: sudo firewall-cmd --zone=public --permanent --list-services .
Решение неполадки с отсутствием доступа к сервису
Стандартно в правилах брандмауэра указаны самые популярные и безопасные сервисы как разрешенные, однако некоторые стандартные или сторонние приложения он блокирует. В таком случае пользователю вручную потребуется изменить настройки, чтобы решить проблему с доступом. Сделать это можно двумя разными методами.
Проброс порта
Приведенные выше команды лишь позволят протестировать применение подобных параметров. Если оно прошло успешно, следует добавить эти же порты в постоянные настройки, а делается это путем ввода sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp или sudo firewall-cmd --zone=public --permanent --add-port=0000-9999/udp . Список открытых постоянных портов просматривается так: sudo firewall-cmd --zone=public --permanent --list-ports .
Определение сервиса
Как видите, добавление портов не вызывает никаких трудностей, но процедура усложняется в том случае, когда приложений используется большое количество. Отследить все использующиеся порты становится трудно, ввиду чего более правильным вариантом станет определение сервиса:
Вам остается только выбрать наиболее подходящий метод решения неполадки с доступом к сервису и выполнить приведенные инструкции. Как видите, все действия выполняются достаточно легко, и никаких трудностей возникнуть не должно.
Создание пользовательских зон
-
Создайте две новые перманентные зоны командами sudo firewall-cmd --permanent --new-zone=publicweb и sudo firewall-cmd --permanent --new-zone=privateDNS .
Из этой статьи вы узнали, как создавать пользовательские зоны и добавлять в них сервисы. Об установке их по умолчанию и присвоении интерфейсов мы уже рассказали выше, вам остается лишь указать правильные названия. Не забывайте перезагружать межсетевой экран после внесения любых перманентных изменений.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Во всех операционных системах, основанных на базе ядра Linux, имеется встроенный межсетевой экран, осуществляющий контроль и фильтрацию входящего и исходящего трафика, исходя из заданных пользователем или платформой правил. В дистрибутиве CentOS 7 по умолчанию такую функцию выполняет утилита iptables, взаимодействуя со встроенным брандмауэром netfilter. Иногда системному администратору или менеджеру сети приходится настраивать работу этого компонента, прописывая соответствующие правила. В рамках сегодняшней статьи мы бы хотели поговорить об основах конфигурации iptables в упомянутой выше ОС.
Настраиваем iptables в CentOS 7
Сам инструмент доступен к работе сразу же после завершения инсталляции CentOS 7, но дополнительно потребуется установить некоторые сервисы, о чем мы и поговорим далее. В рассматриваемой платформе имеется еще один встроенный инструмент, выполняющий функцию фаервола под названием FirewallD. Для избежания конфликтов при дальнейшей работе рекомендуем отключить этот компонент. Развернутые инструкции по этой теме читайте в другом нашем материале по следующей ссылке.
Как известно, в системе могут применяться протоколы IPv4 и IPv6. Сегодня мы остановимся на примере IPv4, но если вы хотите осуществлять конфигурацию для другого протокола, потребуется вместо команды iptables в консоли использовать ip6tables.
Установка сервисов iptables
Первоочередно следует добавить в систему дополнительные компоненты рассматриваемой сегодня утилиты. Они помогут в настройке правил и других параметров. Загрузка осуществляется из официального хранилища, поэтому не отнимет много времени.
-
Все дальнейшие действия будут производиться в классической консоли, поэтому запустите ее любым удобным методом.
Теперь ОС полностью готова для дальнейшей настройки межсетевого экрана через утилиту iptables. Мы предлагаем ознакомиться с конфигурацией по пунктам, начав с управления сервисами.
Остановка и запуск сервисов iptables
Управление режимом работы iptables требуется в тех случаях, когда нужно проверить действие определенных правил или просто выполнить перезапуск компонента. Делается это при помощи встроенных команд.
-
Введите sudo service iptables stop и нажмите на клавишу Enter, чтобы остановить сервисы.
Подобная перезагрузка, запуск или остановка утилиты доступна в любой момент, не забудьте только вернуть обратное значение, когда это будет востребовано.
Просмотр и удаление правил
Как уже было сказано ранее, управление межсетевым экраном производится путем ручного или автоматического добавления правил. Например, некоторые дополнительные приложения могут обращаться к инструменту, изменяя определенные политики. Однако большинство подобных действий все же делается вручную. Просмотр списка всех текущих правил доступен через команду sudo iptables -L .
Определить статус всех цепочек можно, введя sudo iptables -S .
Если увиденные правила вас не устраивают, они достаточно просто удаляются. Весь список очищается так: sudo iptables -F . После активации правила будут стерты абсолютно для всех трех цепей.
Когда необходимо затронуть только политики из какой-то одной цепи, к строке добавляется дополнительный аргумент:
sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD
Отсутствие всех правил означает, что сейчас не применяется никаких настроек фильтрации трафика ни в одну из сторон. Далее системный администратор уже самостоятельно задает новые параметры, используя всю ту же консоль, команду и различные аргументы.
Прием и сбрасывание трафика в цепях
Точно такие же параметры задаются и для других цепей, например, sudo iptables --policy OUTPUT DROP . Если же необходимо выставить значение на прием трафика, тогда DROP изменяется на ACCEPT и получается sudo iptables --policy INPUT ACCEPT .
Разрешение и блокировка портов
Точно такая же команда относится и к порту 22, который используется сервисом SSH: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT .
Для блокирования указанного порта применяется строка точно такого же вида, только в конце ACCEPT изменяется на DROP. В итоге получается, например, sudo iptables -A INPUT -p tcp --dport 2450 -j DROP .
Блокирование происходит по тому же принципу, меняя в конце значение ACCEPT на DROP. Тогда получается, например, sudo iptables -A INPUT -p tcp -s 12.12.12.0/24 --dport 22 -j DROP .
Блокирование ICMP
Предотвращение несанкционированных действий на сервере
Иногда серверы подвергаются DDoS атакам или другим несанкционированным действиям со стороны злоумышленников. Правильная настройка межсетевого экрана позволит обезопасить себя от подобного рода взломов. Для начала мы рекомендуем задать такие правила:
Показанные сегодня настройки являются лишь основой работы в инструменте управления межсетевым экраном. В официальной документации утилиты вы найдете описание всех доступных аргументов и опций и сможете настроить брандмауэр конкретно под свои запросы. Выше были рассмотрены стандартные правила безопасности, которые применяются чаще всего и в большинстве случаев обязательны.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Читайте также: