mirror of
https://github.com/andrey271192/keenetic_ssh-web.git
synced 2026-09-20 14:42:01 +00:00
tunnel: per-peer DNAT ports via kssh-tun add --dnat
Made-with: Cursor
This commit is contained in:
@@ -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
|
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`).
|
Она выведет **готовый блок** (несколько строк `export ...` + `curl ... | sh`).
|
||||||
|
|
||||||
**Команда 2 — на роутере (Entware shell):** вставьте выданный блок **как есть**.
|
**Команда 2 — на роутере (Entware shell):** вставьте выданный блок **как есть**.
|
||||||
|
|||||||
@@ -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
|
||||||
# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add <peer-name>
|
# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add <peer-name>
|
||||||
|
# curl -fsSL https://raw.githubusercontent.com/andrey271192/keenetic_ssh-web/main/setup-vps.sh | sudo bash -s -- add <peer-name> --dnat 777
|
||||||
#
|
#
|
||||||
# Что делает (одной командой):
|
# Что делает (одной командой):
|
||||||
# 1) сносит предыдущий kssh-tunnel сервер (если был)
|
# 1) сносит предыдущий kssh-tunnel сервер (если был)
|
||||||
@@ -33,7 +34,8 @@ curl -fsSL "$RAW/tunnel/server-install.sh" | bash
|
|||||||
if [ "${1:-}" = "add" ] && [ -n "${2:-}" ]; then
|
if [ "${1:-}" = "add" ] && [ -n "${2:-}" ]; then
|
||||||
echo
|
echo
|
||||||
echo "==> [3/3] Добавление peer '$2'…"
|
echo "==> [3/3] Добавление peer '$2'…"
|
||||||
/usr/local/bin/kssh-tun add "$2"
|
shift 2
|
||||||
|
/usr/local/bin/kssh-tun add "$@"
|
||||||
else
|
else
|
||||||
echo
|
echo
|
||||||
echo "==> [3/3] Сервер готов. Добавьте роутер командой:"
|
echo "==> [3/3] Сервер готов. Добавьте роутер командой:"
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ export VPS_ENDPOINT=$PUB_IP:$WG_PORT
|
|||||||
export VPS_PUBKEY='$SERVER_PUB'
|
export VPS_PUBKEY='$SERVER_PUB'
|
||||||
export CLIENT_IP=$CLIENT_IP
|
export CLIENT_IP=$CLIENT_IP
|
||||||
export CLIENT_PRIVKEY='$CLIENT_PRIV'
|
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
|
curl -fsSL https://raw.githubusercontent.com/${KSSH_REPO}/${KSSH_BRANCH}/tunnel/tunnel-install.sh | sh
|
||||||
EOF
|
EOF
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
@@ -105,6 +105,25 @@ case "$cmd" in
|
|||||||
require_root
|
require_root
|
||||||
NAME="${1:-}"
|
NAME="${1:-}"
|
||||||
[ -z "$NAME" ] && { echo "usage: kssh-tun add <name>" >&2; exit 1; }
|
[ -z "$NAME" ] && { echo "usage: kssh-tun add <name>" >&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 <name> [--dnat 81,79]" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
case "$NAME" in *[!a-zA-Z0-9_-]*) echo "Имя: только [a-zA-Z0-9_-]" >&2; exit 1;; esac
|
case "$NAME" in *[!a-zA-Z0-9_-]*) echo "Имя: только [a-zA-Z0-9_-]" >&2; exit 1;; esac
|
||||||
mkdir -p "$PEERS_DIR"
|
mkdir -p "$PEERS_DIR"
|
||||||
PEER_FILE="$PEERS_DIR/$NAME.peer"
|
PEER_FILE="$PEERS_DIR/$NAME.peer"
|
||||||
@@ -120,6 +139,7 @@ NAME="$NAME"
|
|||||||
CLIENT_IP="$CLIENT_IP"
|
CLIENT_IP="$CLIENT_IP"
|
||||||
CLIENT_PRIV="$CLIENT_PRIV"
|
CLIENT_PRIV="$CLIENT_PRIV"
|
||||||
CLIENT_PUB="$CLIENT_PUB"
|
CLIENT_PUB="$CLIENT_PUB"
|
||||||
|
DNAT_PORTS="$DNAT_PORTS_ARG"
|
||||||
EOF
|
EOF
|
||||||
chmod 600 "$PEER_FILE"
|
chmod 600 "$PEER_FILE"
|
||||||
regen_conf
|
regen_conf
|
||||||
@@ -165,7 +185,7 @@ EOF
|
|||||||
cat <<EOF
|
cat <<EOF
|
||||||
kssh-tun — управление WireGuard-клиентами для keenetic_ssh-web tunnel.
|
kssh-tun — управление WireGuard-клиентами для keenetic_ssh-web tunnel.
|
||||||
|
|
||||||
kssh-tun add <name> добавить peer, вывести ENV-блок для роутера
|
kssh-tun add <name> [--dnat 81,79] добавить peer, вывести ENV-блок для роутера
|
||||||
kssh-tun show <name> повторно вывести ENV-блок
|
kssh-tun show <name> повторно вывести ENV-блок
|
||||||
kssh-tun list список peer-ов
|
kssh-tun list список peer-ов
|
||||||
kssh-tun remove <name> удалить peer
|
kssh-tun remove <name> удалить peer
|
||||||
|
|||||||
Reference in New Issue
Block a user