feat(ufw): --allow-port/--allow-from для доступа прокси к внутреннему порту
This commit is contained in:
@@ -64,6 +64,8 @@ TURN_RELAY_PORT="${TURN_RELAY_PORT:-3478}"
|
||||
TURN_RELAY_TLS_PORT="${TURN_RELAY_TLS_PORT:-5349}"
|
||||
TLS_BY_PROXY="${TLS_BY_PROXY:-false}"
|
||||
APP_BIND_ADDR="${APP_BIND_ADDR:-127.0.0.1}"
|
||||
ALLOW_PORTS="${ALLOW_PORTS:-}"
|
||||
ALLOW_FROM="${ALLOW_FROM:-10.77.0.0/24}"
|
||||
LIVEKIT_BIND_ADDR="${LIVEKIT_BIND_ADDR:-127.0.0.1}"
|
||||
TURN_CERT_REMOTE="${TURN_CERT_REMOTE:-}"
|
||||
TURN_CERT_REMOTE_CRT="${TURN_CERT_REMOTE_CRT:-}"
|
||||
@@ -137,6 +139,9 @@ install.sh — установка glchat (AGENT.md 10).
|
||||
но ссылки в API отдаются как https/wss
|
||||
--app-bind-addr <addr> адрес app (по умолчанию 127.0.0.1); для прокси по
|
||||
WireGuard укажите адрес в туннеле, например 10.77.0.13
|
||||
--allow-port <порт/прото> разрешить порт только из подсети --allow-from
|
||||
(можно указывать несколько раз), например 8080/tcp
|
||||
--allow-from <cidr> источник для --allow-port (по умолчанию 10.77.0.0/24)
|
||||
--livekit-bind-addr <addr> адрес LiveKit (по умолчанию 127.0.0.1)
|
||||
--turn-cert-remote <user@host> тянуть сертификат TURN/TLS с внешнего узла по SSH
|
||||
--turn-cert-remote-crt <путь> путь к сертификату на внешнем узле
|
||||
@@ -195,6 +200,8 @@ parse_args() {
|
||||
--turn-relay-tls-port) TURN_RELAY_TLS_PORT="${2:?}"; shift 2 ;;
|
||||
--tls-terminated-by-proxy) TLS_BY_PROXY="true"; shift ;;
|
||||
--app-bind-addr) APP_BIND_ADDR="${2:?}"; shift 2 ;;
|
||||
--allow-port) ALLOW_PORTS="${ALLOW_PORTS} ${2:?}"; shift 2 ;;
|
||||
--allow-from) ALLOW_FROM="${2:?}"; shift 2 ;;
|
||||
--livekit-bind-addr) LIVEKIT_BIND_ADDR="${2:?}"; shift 2 ;;
|
||||
--turn-cert-remote) TURN_CERT_REMOTE="${2:?}"; shift 2 ;;
|
||||
--turn-cert-remote-crt) TURN_CERT_REMOTE_CRT="${2:?}"; shift 2 ;;
|
||||
@@ -1203,6 +1210,21 @@ configure_ufw() {
|
||||
# Relay-диапазон: через эти порты TURN отдаёт медиа (AGENT.md 4.2).
|
||||
ufw allow "${TURN_RELAY_START}:${TURN_RELAY_END}/udp" comment 'turn-relay' >/dev/null
|
||||
fi
|
||||
# Правила для доступа из доверенной подсети (например, прокси по WireGuard):
|
||||
# внутренний порт приложения не публикуется, но прокси должен до него дойти.
|
||||
local spec port proto
|
||||
for spec in $ALLOW_PORTS; do
|
||||
port="${spec%%/*}"
|
||||
proto="${spec##*/}"
|
||||
[ "$proto" = "$port" ] && proto="tcp"
|
||||
if [ "$port" = "8080" ] && [ "$APP_BIND_ADDR" = "127.0.0.1" ]; then
|
||||
continue
|
||||
fi
|
||||
ufw allow from "$ALLOW_FROM" to any port "$port" proto "$proto" comment 'glchat-proxy' >/dev/null 2>&1 ||
|
||||
warn "не удалось добавить правило UFW для ${spec}"
|
||||
ok "UFW: ${spec} разрешён из ${ALLOW_FROM}"
|
||||
done
|
||||
|
||||
ufw --force enable >/dev/null
|
||||
restore_foreign_ufw_rules
|
||||
ok "UFW активен: $(ufw status | head -1)"
|
||||
|
||||
Reference in New Issue
Block a user