Как пробросить порт из внешнего интерфейса на внутренний в зависимости от домена? Есть машина на ней стоит Debian 9. Есть сервис который на этой машине крутится на 81 порту. Можно ли как-то сделать так, чтобы другие машины приходили на эту по ее IP адресу например 43.22.13.42 на 80 порт через браузер, при этом у них в файлике hosts прописана DNS связь для этого IP как gitlab.local например. В общем суть, ловить запросы нужно на 80 порту на внешнем интерфейсе и в зависимости от домена отправлять на разные порты 80-100 например внутрь. Как такое делается на линуксе? Заранее спасибо, кто-то точно знает)
Для такой задачи можно воспользоваться утилитой iptables, которая позволяет настраивать правила межсетевого экрана в Linux. В вашем случае, можно создать правило, которое будет перенаправлять трафик с внешнего интерфейса на внутренний в зависимости от домена.
Вот пример команд для настройки такого правила:
# Проброс порта 80 на порт 81 внутри хоста iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 81 # Проброс порта 80 на порт 82 внутри хоста для домена gitlab.local iptables -t nat -A PREROUTING -p tcp -d 43.22.13.42 --dport 80 -m string --string "Host: gitlab.local" --algo bm -j REDIRECT --to-port 82
Обратите внимание, что вам может понадобиться установить дополнительные модули для поддержки совпадения содержимого заголовка Host, например, модуль xt_string. Установить его можно с помощью команды:
sudo apt-get install xtables-addons-common
После настройки правил iptables, вам также потребуется настроить соответствующие сервисы (в вашем случае настройка GitLab) на машинах внутри сети, чтобы они принимали трафик на нужных портах.
Помните, что настройка iptables требует особой осторожности, так как неправильные правила могут привести к блокировке сети или утечке информации. Будьте внимательны при настройке!
Для такой задачи можно воспользоваться утилитой iptables, которая позволяет настраивать правила межсетевого экрана в Linux. В вашем случае, можно создать правило, которое будет перенаправлять трафик с внешнего интерфейса на внутренний в зависимости от домена.
Вот пример команд для настройки такого правила:
# Проброс порта 80 на порт 81 внутри хостаiptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 81
# Проброс порта 80 на порт 82 внутри хоста для домена gitlab.local
iptables -t nat -A PREROUTING -p tcp -d 43.22.13.42 --dport 80 -m string --string "Host: gitlab.local" --algo bm -j REDIRECT --to-port 82
Обратите внимание, что вам может понадобиться установить дополнительные модули для поддержки совпадения содержимого заголовка Host, например, модуль xt_string. Установить его можно с помощью команды:
sudo apt-get install xtables-addons-commonПосле настройки правил iptables, вам также потребуется настроить соответствующие сервисы (в вашем случае настройка GitLab) на машинах внутри сети, чтобы они принимали трафик на нужных портах.
Помните, что настройка iptables требует особой осторожности, так как неправильные правила могут привести к блокировке сети или утечке информации. Будьте внимательны при настройке!