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