diff --git a/README.md b/README.md index af8d5c9..f36c4fc 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,12 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/ curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add my-router ``` +Если у конкретного роутера «прокси/админка» сидит на другом порту (например `777`), задайте порт при добавлении peer‑а: + +```sh +sudo kssh-tun add my-router --dnat 777 +``` + Она выведет **готовый блок** (несколько строк `export ...` + `curl ... | sh`). **Команда 2 — на роутере (Entware shell):** вставьте выданный блок **как есть**. diff --git a/setup-vps.sh b/setup-vps.sh index d740a7c..babd5b8 100755 --- a/setup-vps.sh +++ b/setup-vps.sh @@ -4,6 +4,7 @@ # Запуск (любой из вариантов): # curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash # curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add +# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add --dnat 777 # # Что делает (одной командой): # 1) сносит предыдущий kssh-tunnel сервер (если был) @@ -33,7 +34,8 @@ curl -fsSL "$RAW/tunnel/server-install.sh" | bash if [ "${1:-}" = "add" ] && [ -n "${2:-}" ]; then echo echo "==> [3/3] Добавление peer '$2'…" - /usr/local/bin/kssh-tun add "$2" + shift 2 + /usr/local/bin/kssh-tun add "$@" else echo echo "==> [3/3] Сервер готов. Добавьте роутер командой:" diff --git a/tunnel/kssh-tun b/tunnel/kssh-tun index b17b37d..f064c1c 100755 --- a/tunnel/kssh-tun +++ b/tunnel/kssh-tun @@ -91,7 +91,7 @@ export VPS_ENDPOINT=$PUB_IP:$WG_PORT export VPS_PUBKEY='$SERVER_PUB' export CLIENT_IP=$CLIENT_IP export CLIENT_PRIVKEY='$CLIENT_PRIV' -export DNAT_PORTS=81,79 +export DNAT_PORTS='${DNAT_PORTS:-81,79}' curl -fsSL https://raw.githubusercontent.com/${KSSH_REPO}/${KSSH_BRANCH}/tunnel/tunnel-install.sh | sh EOF echo "============================================================" @@ -105,6 +105,25 @@ case "$cmd" in require_root NAME="${1:-}" [ -z "$NAME" ] && { echo "usage: kssh-tun add " >&2; exit 1; } + shift || true + DNAT_PORTS_ARG="" + while [ $# -gt 0 ]; do + case "$1" in + --dnat) + DNAT_PORTS_ARG="${2:-}" + shift 2 || true + ;; + --dnat=*) + DNAT_PORTS_ARG="${1#--dnat=}" + shift || true + ;; + *) + echo "Неизвестный аргумент: $1" >&2 + echo "usage: kssh-tun add [--dnat 81,79]" >&2 + exit 1 + ;; + esac + done case "$NAME" in *[!a-zA-Z0-9_-]*) echo "Имя: только [a-zA-Z0-9_-]" >&2; exit 1;; esac mkdir -p "$PEERS_DIR" PEER_FILE="$PEERS_DIR/$NAME.peer" @@ -120,6 +139,7 @@ NAME="$NAME" CLIENT_IP="$CLIENT_IP" CLIENT_PRIV="$CLIENT_PRIV" CLIENT_PUB="$CLIENT_PUB" +DNAT_PORTS="$DNAT_PORTS_ARG" EOF chmod 600 "$PEER_FILE" regen_conf @@ -165,7 +185,7 @@ EOF cat < добавить peer, вывести ENV-блок для роутера + kssh-tun add [--dnat 81,79] добавить peer, вывести ENV-блок для роутера kssh-tun show повторно вывести ENV-блок kssh-tun list список peer-ов kssh-tun remove удалить peer