#!/bin/bash #=============================================================================== # ШАГ 2: НАСТРОЙКА СЕТИ #=============================================================================== # Запуск: sudo bash 01-k-server-initial-setup.02.sh # # Параметры сети настраиваются в файле 00.sh: # NET_EXT_DHCP, NET_EXT_ADDRESS, NET_EXT_GATEWAY, NET_EXT_DNS # NET_INT_DHCP, NET_INT_ADDRESS #=============================================================================== SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) source "$SCRIPT_DIR/01-k-server-initial-setup.00.sh" init_log check_root print_header "ШАГ 2: НАСТРОЙКА СЕТИ" #------------------------------------------------------------------------------- # 2.1 Проверка интерфейсов #------------------------------------------------------------------------------- print_subheader "Проверка сетевых интерфейсов" check_network_interfaces #------------------------------------------------------------------------------- # 2.2 Установка netplan #------------------------------------------------------------------------------- print_subheader "Проверка netplan" if is_installed netplan.io; then print_success "netplan.io установлен" else print_info "Установка netplan.io..." apt install -y netplan.io fi #------------------------------------------------------------------------------- # 2.3 Показать текущую конфигурацию сети #------------------------------------------------------------------------------- print_subheader "Параметры сети из конфигурации" echo " Внешний интерфейс ($IFACE_EXT):" if [[ "$NET_EXT_DHCP" == "true" ]]; then echo " Режим: DHCP" else echo " Режим: Статический IP" echo " Адрес: $NET_EXT_ADDRESS" echo " Шлюз: $NET_EXT_GATEWAY" echo " DNS: $NET_EXT_DNS" fi echo "" echo " Внутренний интерфейс ($IFACE_INT):" if [[ "$NET_INT_DHCP" == "true" ]]; then echo " Режим: DHCP" else echo " Режим: Статический IP" echo " Адрес: $NET_INT_ADDRESS" fi echo "" #------------------------------------------------------------------------------- # 2.4 Создание конфигурации netplan #------------------------------------------------------------------------------- print_subheader "Создание конфигурации netplan" NETPLAN_FILE="/etc/netplan/01-netcfg.yaml" # Проверка существующей конфигурации if [[ -f "$NETPLAN_FILE" ]]; then print_warning "Конфигурация netplan уже существует" read -p "Перезаписать? [y/N]: " REWRITE if [[ ! "$REWRITE" =~ ^[Yy]$ ]]; then print_info "Конфигурация оставлена без изменений" print_success "Шаг 2 завершён (пропуск)" exit 0 fi # Backup cp "$NETPLAN_FILE" "${NETPLAN_FILE}.backup.$(date +%Y%m%d_%H%M%S)" fi # Генерация конфигурации в зависимости от настроек { echo "# Netplan configuration for Git Server" echo "# Автоматически сгенерировано скриптом 01-k-server-initial-setup.02.sh" echo "" echo "network:" echo " version: 2" echo " renderer: networkd" echo " ethernets:" echo " ${IFACE_EXT}:" if [[ "$NET_EXT_DHCP" == "true" ]]; then # DHCP для внешнего интерфейса echo " dhcp4: true" else # Статический IP для внешнего интерфейса echo " dhcp4: false" echo " addresses:" echo " - ${NET_EXT_ADDRESS}" echo " routes:" echo " - to: default" echo " via: ${NET_EXT_GATEWAY}" # DNS IFS=',' read -ra DNS_ARRAY <<< "$NET_EXT_DNS" echo " nameservers:" echo " addresses:" for dns in "${DNS_ARRAY[@]}"; do echo " - ${dns}" done fi echo " ${IFACE_INT}:" if [[ "$NET_INT_DHCP" == "true" ]]; then # DHCP для внутреннего интерфейса echo " dhcp4: true" else # Статический IP для внутреннего интерфейса echo " dhcp4: false" echo " addresses:" echo " - ${NET_INT_ADDRESS}" fi } > "$NETPLAN_FILE" print_success "Конфигурация netplan создана: $NETPLAN_FILE" #------------------------------------------------------------------------------- # 2.5 Показать созданную конфигурацию #------------------------------------------------------------------------------- echo "" echo -e "${CYAN}Созданная конфигурация:${NC}" echo "" cat "$NETPLAN_FILE" #------------------------------------------------------------------------------- # 2.6 Применение #------------------------------------------------------------------------------- echo "" print_warning "Внимание! Применение новой сетевой конфигурации может нарушить подключение." echo "" read -p "Применить сетевую конфигурацию сейчас? [y/N]: " APPLY_NET if [[ "$APPLY_NET" =~ ^[Yy]$ ]]; then print_info "Проверка конфигурации..." # Попробовать netplan try с таймаутом (вернёт старую конфигурацию при проблемах) if netplan try --timeout 15 2>&1; then print_success "Сетевая конфигурация применена" else print_error "Ошибка в конфигурации netplan или прервано пользователем" print_info "Конфигурация не применена. Проверьте и исправьте $NETPLAN_FILE" exit 1 fi else print_warning "Конфигурация не применена" echo "" echo "Примените вручную после проверки:" echo " sudo netplan try --timeout 30" echo " # или" echo " sudo netplan apply" fi print_success "Шаг 2 завершён: Сеть настроена"