Client: default interface address prefix to /24

This commit is contained in:
Ruslan
2026-04-14 10:41:12 +03:00
parent 81a725561a
commit f9969b668a
2 changed files with 18 additions and 1 deletions

View File

@@ -22,6 +22,7 @@ SSH_AUTH_METHOD="key"
SSH_PASSWORD=""
KEEPALIVE="25"
CLIENT_ADDRESS_PREFIX="24"
usage() {
cat <<'USAGE'
@@ -38,6 +39,7 @@ usage() {
--mode <full|split> full: весь трафик, split: только выбранные сети
--allowed-ips <cidr,cidr> Для режима split
--dns <ip> DNS для клиента (если не задан, берется с сервера)
--client-address-prefix <1-32> Префикс маски адреса интерфейса клиента (по умолчанию: 24)
--server-host <host> IP/домен WireGuard-сервера
--server-user <user> SSH-пользователь (по умолчанию: root)
@@ -71,6 +73,8 @@ parse_args() {
SPLIT_ALLOWED_IPS="$2"; shift 2 ;;
--dns)
CLIENT_DNS="$2"; shift 2 ;;
--client-address-prefix)
CLIENT_ADDRESS_PREFIX="$2"; shift 2 ;;
--server-host)
SERVER_HOST="$2"; shift 2 ;;
--server-user)
@@ -94,6 +98,8 @@ validate_inputs() {
is_valid_port "$SSH_PORT" || die "Некорректный SSH-порт: $SSH_PORT"
[[ "$SSH_AUTH_METHOD" == "key" || "$SSH_AUTH_METHOD" == "password" ]] || die "--ssh-auth должен быть key или password"
[[ "$TUNNEL_MODE" == "full" || "$TUNNEL_MODE" == "split" ]] || die "--mode должен быть full или split"
[[ "$CLIENT_ADDRESS_PREFIX" =~ ^[0-9]+$ ]] || die "--client-address-prefix должен быть числом 1..32"
((CLIENT_ADDRESS_PREFIX >= 1 && CLIENT_ADDRESS_PREFIX <= 32)) || die "--client-address-prefix должен быть в диапазоне 1..32"
if [[ -z "$SERVER_HOST" ]]; then
die "Не указан --server-host"
@@ -268,6 +274,12 @@ build_route_hooks_if_needed() {
fi
}
build_client_interface_address() {
local ip_only
ip_only="${CLIENT_ADDRESS%%/*}"
CLIENT_INTERFACE_ADDRESS="${ip_only}/${CLIENT_ADDRESS_PREFIX}"
}
write_client_config() {
local conf="/etc/wireguard/${WG_INTERFACE}.conf"
local dns
@@ -284,7 +296,7 @@ write_client_config() {
{
echo "[Interface]"
echo "PrivateKey = $(cat "$CLIENT_PRIV_KEY_PATH")"
echo "Address = ${CLIENT_ADDRESS}"
echo "Address = ${CLIENT_INTERFACE_ADDRESS}"
echo "DNS = ${dns}"
if [[ -n "$PRE_UP" ]]; then
echo "$PRE_UP"
@@ -330,6 +342,7 @@ print_summary() {
Конфиг клиента: /etc/wireguard/${WG_INTERFACE}.conf
Endpoint сервера: ${SERVER_ENDPOINT}
Маршруты (AllowedIPs):${ALLOWED_IPS}
Адрес интерфейса: ${CLIENT_INTERFACE_ADDRESS}
Режим туннеля: ${TUNNEL_MODE}
SSH сервер: ${SERVER_USER}@${SERVER_HOST}:${SSH_PORT}
Статус регистрации: ${SERVER_STATUS}
@@ -356,6 +369,7 @@ main() {
generate_keys
register_peer_on_server
build_allowed_ips
build_client_interface_address
build_route_hooks_if_needed
write_client_config
apply_client_config