Client: default interface address prefix to /24
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user