Недорогие виртуальные серверы в России, Нидерландах и Казахстане от «Хостера года» 2021, 2022 и 2024 годов. Оплата в рублях картами банков РФ, по СБП и электронными деньгами. Подробнее.

Маршрутизация IP пакетов на транспортном уровне L4 OSI или проброс портов по доменному имени на вебсервере Caddy

Опубликовано: 28 сентября 2025
Раздел(ы): GNU Linux - CentOS / Debian, Вебмастеру, Маршрутизаторы программные
Просмотры: 39
Комментарии: 0

В этой статье я приведу рабочий, проверенный вариант файла конфигурации Caddyfile для маршрутизации IP пакетов на 4 уровне модели OSI. Что позволит использовать один порт на сервере для нескольких служб (сервисов).

Потребность может возникнуть если у вас есть веб-сервер с сайтами на базе Caddy у которого во внешний мир открыты только 80-й и 443-й порты, а вам необходимо кроме сайтов получить доступ, например к SSH консоли сервера, но менять сам Caddy вы не намерены.

Чтобы реализовать задуманное можно перенаправлять входящие пакеты на основе доменных имен. То есть для необходимого вам сервиса (службы) нужно настроить доменное имя и указать в качестве А записи IP адрес вашего сервера.

Предварительно вам необходимо установить версию Caddy с поддержкой Layer4, например по этой инструкции — Установка бинарного файла Caddy с поддержкой Layer 4 в операционной системе Debian.

Начальные условия

У вас есть сервер на котором работает хостинг сайтов на основе веб сервера Caddy.

Caddy обрабатывает запросы на 80-м и 443-м портах.

У вас есть некая служба запущенная на этом же сервере и использующая порт 8443.

Файл конфигурации Caddyfile

Следующий файл конфигурации Caddy организует перенаправление входящих пакетов на основе доменного имени и одновременно обеспечивает работу сайтов на сервере.

{
layer4 {
        999.888.999.777:443 {
                @service1 tls sni oc.mysite.ru
                route @service1 {
                        proxy 127.0.0.1:8443
                }
                route {
                        proxy 127.0.0.1:443
                }
        }
}
}

mysite.ru {
        reverse_proxy 192.168.24.11
}
www.mysite.ru {
        redir https://mysite.ru{uri} permanent
}
uptime.mysite.ru {
        reverse_proxy 192.168.24.10:3001
}
test.mysite.ru {
        reverse_proxy 127.0.0.1:6081
}
static.mysite.ru {
        root * /var/www/static.mysite.ru
        file_server
}

Важные замечания:
999.888.999.777:443 — это адрес и порт внешнего интерфейса вашего сервера. При поступление IP пакетов на него и совпадении доменного имени со значением oc.mysite.ru данные будут перенаправлены на 127.0.0.1:8443. Таких условий может быть несколько.

Все остальные пакеты (в которых нет упоминания доменного имени oc.mysite.ru) будут отправлены на локальный адрес вебсервера Caddy. Не смотря на совпадение номеров портов никакого зацикливания не будет, так как использованы разные IP адреса.

Если пакеты придут на 80 порт, то верхняя часть конфигурации (Layer4) не работает и запросы упадут на веб сервер Caddy для обработки HTTP запросов.

Постскриптум

Приведенная конфигурация позволяет на одном сервере использовать один порт одновременно как для веб-сервера, так и для других приложений и сервисов (служб).

Для реализации задуманного у вас должна быть возможность управлять ресурсными записями вашего доменного имени, которое вы будете использовать у себя на сервере.

Статья не описывает всех возможностей конфигурации веб-сервера Caddy.

Возможно, что Caddy не лучшее решение для проброса портов на основе доменного имени ведь есть HAProxy и NGINX.

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

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

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных", на условиях и для целей определенных политикой конфиденциальности сайта.
© Юрий Рассадников, 2011 - 2025
uptime узнать
Домен : reg.ru
Хостинг : adman.com
SQL - 4 | 0,324 сек. | 6.36 МБ