#!/bin/bash # ============================================================ # ЗАДАНИЕ 2. Настройка HQ-RTR (Linux / РЕД ОС 8) # Статическая трансляция портов (DNAT): # 8080 -> веб-приложение на HQ-SRV (порт приложения) # 2027 -> SSH на HQ-SRV (порт 2027) # ============================================================ # --- Проверка прав root --- if [[ $EUID -ne 0 ]]; then echo "Запустите скрипт с правами root (sudo bash hq-rtr.sh)" exit 1 fi # ================= ПЕРЕМЕННЫЕ (заполните перед запуском) ================= ISP_IF="" # интерфейс в сторону ISP (куда входят подключения извне) HQ_SRV_IP="" # адрес HQ-SRV в VLAN 100 (без префикса) WEB_APP_PORT="80" # порт, где слушает веб-приложение (apache) на HQ-SRV SSH_PORT="2027" # порт SSH на HQ-SRV по заданию IPTABLES_SERVICE="iptables" # ПРОВЕРИТЬ # ============ Проверка заполнения переменных ============ MISSING=() for NAME in ISP_IF HQ_SRV_IP WEB_APP_PORT SSH_PORT; do [[ -z "${!NAME}" ]] && MISSING+=("$NAME") done if [[ ${#MISSING[@]} -gt 0 ]]; then echo "Заполните переменные в начале скрипта: ${MISSING[*]}" exit 1 fi echo "=== Настройка DNAT (проброс портов) на HQ-RTR ===" add_dnat () { if iptables -t nat -C PREROUTING -i "$ISP_IF" -p tcp --dport "$2" \ -j DNAT --to-destination "$3" 2>/dev/null; then echo "Правило $4 уже есть" else iptables -t nat -A PREROUTING -i "$ISP_IF" -p tcp --dport "$2" \ -j DNAT --to-destination "$3" echo "Добавлено DNAT: $4" fi } # --- 1. Проброс порта веб-приложения --- add_dnat "$ISP_IF" 8080 "$HQ_SRV_IP:$WEB_APP_PORT" "8080 -> $HQ_SRV_IP:$WEB_APP_PORT" # --- 2. Проброс порта SSH --- add_dnat "$ISP_IF" "$SSH_PORT" "$HQ_SRV_IP:$SSH_PORT" "$SSH_PORT -> $HQ_SRV_IP:$SSH_PORT" # --- 3. Сохранение правил --- iptables-save > /etc/sysconfig/iptables systemctl enable --now "$IPTABLES_SERVICE" 2>/dev/null \ || echo "ПРОВЕРИТЬ: служба $IPTABLES_SERVICE не запустилась" echo "" echo "=== Самопроверка на HQ-RTR ===" echo "Правила DNAT:" iptables -t nat -L PREROUTING -n -v echo "" echo "Дополнительные проверки вручную:" echo " с ISP: curl -I http://<адрес HQ-RTR на линке>:8080 (ответ apache?)" echo " с ISP: nc -zv <адрес HQ-RTR на линке> 2027" echo "" echo "Если цепочка FORWARD закрыта политикой DROP, добавьте разрешение" echo "или убедитесь, что политика ACCEPT: iptables -L FORWARD -n // policy"