fix: собственный iface для awg

This commit is contained in:
samosvalishe
2026-09-07 08:39:54 +03:00
parent 4b8c75ee92
commit 82907f3cc6
3 changed files with 35 additions and 16 deletions
+5 -2
View File
@@ -3,8 +3,11 @@
# `ft-awg-start sync` - применить правки conf к живому интерфейсу (docker exec с хоста).
set -euo pipefail
CONF="${AWG_CONF:-/etc/awg/awg0.conf}"
IFACE="${AWG_IFACE:-awg0}"
IFACE="${AWG_IFACE:-ftawg0}"
CONF="${AWG_CONF:-/etc/awg/${IFACE}.conf}"
if [ ! -f "$CONF" ] && [ -f "/etc/awg/awg0.conf" ]; then
CONF="/etc/awg/awg0.conf"
fi
# Значения ключа из [Interface] (до первого [Peer]), по одному на строку.
_iface_vals() {
+7 -4
View File
@@ -88,13 +88,16 @@ openssl rand -hex 32
image: ghcr.io/samosvalishe/freeturn-awg:latest
container_name: freeturn-awg
network_mode: "host"
environment:
- AWG_IFACE=ftawg0
- AWG_LOG_LEVEL=verbose
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
restart: unless-stopped
volumes:
- /opt/free-turn-proxy/awg/awg0.conf:/etc/awg/awg0.conf:ro
- /opt/free-turn-proxy/awg/ftawg0.conf:/etc/awg/ftawg0.conf:ro
```
4. Включите IP forwarding на хосте:
```bash
@@ -170,12 +173,12 @@ DisableCookies = on
```
- **Прямой туннель (Direct AWG):** откройте порт `51820/udp` в файрволе, чтобы клиенты AmneziaWG могли подключаться напрямую к серверу без задержек релея.
- **Горячая синхронизация пиров:** добавьте `[Peer]` в `awg0.conf` и выполните `docker exec freeturn-awg ft-awg-start sync`. Существующие соединения не прерываются!
- **Горячая синхронизация пиров:** добавьте `[Peer]` в `ftawg0.conf` и выполните `docker exec freeturn-awg ft-awg-start sync`. Существующие соединения не прерываются!
| Переменная | По умолчанию | Описание |
| --- | --- | --- |
| `AWG_CONF` | `/etc/awg/awg0.conf` | Путь к конфигу в контейнере |
| `AWG_IFACE` | `awg0` | Имя интерфейса |
| `AWG_CONF` | `/etc/awg/ftawg0.conf` | Путь к конфигу в контейнере |
| `AWG_IFACE` | `ftawg0` | Имя интерфейса |
| `AWG_LOG_LEVEL` | `error` | Логи демона: `error` \| `verbose` \| `silent` |
NAT настраивается только для IPv4 (контейнер использует network_mode: host и добавляет правила iptables в стек хоста).
+23 -10
View File
@@ -37,7 +37,7 @@ GUM_VERSION="0.17.0"
# AmneziaWG и WireGuard
AWG_DIR="${PREFIX}/awg"
AWG_IFACE="awg0"
AWG_IFACE="${FT_AWG_IFACE:-ftawg0}"
AWG_CONF="${AWG_DIR}/${AWG_IFACE}.conf"
AWG_NET="10.13.13"
WG_DIR="${FT_WG_DIR:-/etc/wireguard}"
@@ -1506,13 +1506,17 @@ apply_docker() {
echo " image: ${AWG_IMAGE}"
echo " container_name: ${AWG_CONTAINER}"
echo " network_mode: \"host\""
echo " environment:"
echo " - AWG_IFACE=${AWG_IFACE}"
echo " - AWG_CONF=/etc/awg/${AWG_IFACE}.conf"
echo " - AWG_LOG_LEVEL=verbose"
echo " cap_add:"
echo " - NET_ADMIN"
echo " devices:"
echo " - /dev/net/tun"
echo " restart: unless-stopped"
echo " volumes:"
echo " - ${AWG_CONF}:/etc/awg/awg0.conf:ro"
echo " - ${AWG_CONF}:/etc/awg/${AWG_IFACE}.conf:ro"
fi
} > "$COMPOSE_FILE"
chmod 0600 "$COMPOSE_FILE"
@@ -2372,19 +2376,28 @@ apply() {
print_summary() {
local ext_ip; ext_ip="$(get_public_ip)"
echo
if [ "$HAS_GUM" = 1 ]; then
gum format <<EOF | gum style --border rounded --border-foreground "$MD_SUCCESS" --padding "1 2"
# ✔ Установка успешно завершена!
$([ "$INSTALL_FREETURN" = "1" ] && echo "- **Сервер FreeTurn:** \`${ext_ip}:${LISTEN_PORT}\` (\`${OBF_PROFILE}\`)")
$([ "$INSTALL_AWG" = "1" ] && echo "- **AmneziaWG 3.1:** порт \`${BACKEND_PORT}\` $([ "$AWG_DIRECT_PORT" = "1" ] && echo "(прямой доступ открыт)"))
local summary="# ✔ Установка успешно завершена!
"
if [ "$INSTALL_FREETURN" = "1" ]; then
summary+="- **Сервер FreeTurn:** \`${ext_ip}:${LISTEN_PORT}\` (\`${OBF_PROFILE}\`)
"
fi
if [ "$INSTALL_AWG" = "1" ]; then
summary+="- **AmneziaWG 3.1:** порт \`${BACKEND_PORT}\`"
[ "$AWG_DIRECT_PORT" = "1" ] && summary+=" (прямой доступ открыт)"
summary+="
"
fi
summary+="
---
### Управление клиентами
\`sudo bash install.sh client add [name]\` - добавить клиента
\`sudo bash install.sh client list\` - список клиентов
\`sudo bash install.sh client qr [name]\` - показать QR-код
EOF
\`sudo bash install.sh client qr [name]\` - показать QR-код"
if [ "$HAS_GUM" = 1 ]; then
printf '%s\n' "$summary" | gum format | gum style --border rounded --border-foreground "$MD_SUCCESS" --padding "1 2"
else
echo "========================================================"
echo " Установка успешно завершена!"