Skip to content

Instantly share code, notes, and snippets.

@shvchk
Last active July 8, 2022 16:19
Show Gist options
  • Save shvchk/de82fd6dacd021222749823f0e718830 to your computer and use it in GitHub Desktop.
Save shvchk/de82fd6dacd021222749823f0e718830 to your computer and use it in GitHub Desktop.
#!/bin/sh
die() {
echo "${1}. Exit."
exit 1
}
yes_or_no() {
echo
while true; do
read -p "$* [введите + или - ]: " yn < /dev/tty || die "No tty"
case "$yn" in
"+") return 0 ;;
"-") return 1 ;;
esac
done
}
echo "Перед настройкой WireGuard рекомендуем удостовериться, что ПО роутера обновлено:"
echo "http://192.168.1.1/#adm/management.asp"
echo "или"
echo "Администрирование > Управление > Обновление ПО"
yes_or_no "Продолжить?" || exit
read -rp '[Interface] Address: ' Address < /dev/tty || die "No tty"
read -rp '[Interface] PrivateKey: ' PrivateKey < /dev/tty || die "No tty"
read -rp '[Peer] Endpoint: ' Endpoint < /dev/tty || die "No tty"
read -rp '[Peer] PublicKey: ' PublicKey < /dev/tty || die "No tty"
read -rp '[Peer] AllowedIPs: ' AllowedIPs < /dev/tty || die "No tty"
EndpointAddr="$(echo "$Endpoint" | cut -d ':' -f 1)"
EndpointPort="$(echo "$Endpoint" | cut -d ':' -f 2)"
#echo "$PrivateKey" > /pss/wg_cli_client_private_key
#echo "$PublicKey" > /pss/wg_cli_client_public_key
#fs saveps
#
#nvram_set wireguard_cli_netaddress "$Address"
#nvram_set wireguard_cli_endpoint "$EndpointAddr"
#nvram_set wireguard_cli_endpoint_port "$EndpointPort"
#nvram_set wireguard_cli_allowedips "$AllowedIPs"
echo "$PrivateKey > /pss/wg_cli_client_private_key"
echo "$PublicKey > /pss/wg_cli_client_public_key"
echo "fs saveps"
echo "nvram_set wireguard_cli_netaddress $Address"
echo "nvram_set wireguard_cli_endpoint $EndpointAddr"
echo "nvram_set wireguard_cli_endpoint_port $EndpointPort"
echo "nvram_set wireguard_cli_allowedips $AllowedIPs"
if yes_or_no "Настройка завершена, проверить соединение WireGuard?"; then
#service wireguard stop
echo "service wireguard stop"
oldIP="$(wget -qO- ifconfig.co)"
echo "IP адрес до подключения: $oldIP"
#service wireguard start
echo "service wireguard start"
if ping -c 3 -W 1 1.1.1.1; then
echo "Тестовый узел доступен"
newIP="$(wget -qO- ifconfig.co)"
if [ "$oldIP" = "$newIP" ]; then
echo "IP адрес не изменился!"
echo "В некоторых случаях это нормально, но всё же имейте ввиду"
else
echo "Новый IP адрес: $newIP"
echo "Похоже, всё в порядке"
fi
else
echo "Тестовый узел недоступен"
echo "Это может свидетельствовать о некорректной настройке соединения или сервера"
fi
if yes_or_no "Оставить WireGuard включенным?"; then
echo "В случае необходимости, соединение можно выключить вручную командой service wireguard stop"
else
#service wireguard stop
echo "service wireguard stop"
echo "Готово"
fi
fi
if yes_or_no "Включить автозапуск WireGuard при включении роутера?"; then
#nvram_set wireguard_cli_enabled 1
echo "nvram_set wireguard_cli_enabled 1"
echo "Готово"
else
echo "В случае необходимости, автозапуск можно выключить вручную командой nvram_set wireguard_cli_enabled 1"
fi
if yes_or_no "Настроить выборочную маршрутизацию для обхода блокировок?"; then
custom_routes_script_path="/pss/wg-up.d/10-custom-routes"
custom_routes_script_url="https://gist.github.com/shvchk/675c363f8f241ec2d3300295d86de5cd/raw"
included_routes_path="/pss/wg_client_included_routes"
included_routes_url="https://gist.github.com/shvchk/ad0ae5c0a46036e5d1c164b3e9cdfb50/raw"
#mkdir /pss/wg-up.d
#wget "$custom_routes_script_url" -qO "$custom_routes_script"
#wget "$included_routes_url" -qO "$included_routes"
#chmod +x "$custom_routes_script"
#fs saveps
echo "mkdir /pss/wg-up.d"
echo "wget $custom_routes_script_url -qO $custom_routes_script_path"
echo "wget $included_routes_url -qO $included_routes_path"
echo "chmod +x $custom_routes_script_path"
echo "fs saveps"
echo "Готово"
echo
echo "Рекомендуем добавить на роутере следующие локальные записи DNS:"
cat "$included_routes_path" | sed -n '/# Hosts/,/# ---*/{/^#/d;s/#//;/^[0-9]/p}'
echo "Сделать это можно по ссылке http://192.168.1.1/#services/dns.asp"
echo "или"
echo "Сервисы > Службы DNS > Локальные записи DNS"
fi
if yes_or_no "Перезапустить WireGuard?"; then
#service wireguard restart
echo "service wireguard restart"
echo "Готово"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment