67 lines
2.9 KiB
Bash
67 lines
2.9 KiB
Bash
#!/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"
|