net/zadanie2/hq-rtr.sh

67 lines
2.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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="enp0s3" # 1-й NIC — к 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"