#!/bin/bash # Скрипт настройки ISP хоста # Проверяем, запущен ли скрипт от root if [[ $EUID -ne 0 ]]; then echo "Этот скрипт должен быть запущен с правами root" exit 1 fi echo "=== Настройка ISP хоста ===" # 1. Установка имени хоста read -p "Введите имя хоста (например: br-rtr.au-team.irpo): " hostname if [[ -n "$hostname" ]]; then echo "Устанавливаем имя хоста: $hostname" hostnamectl set-hostname "$hostname" exec bash else echo "Имя хоста не было введено, пропускаем этот шаг" fi echo "" echo "=== Настройка сетевых интерфейсов ===" # 2. Настройка enp0s8 echo "Настройка интерфейса enp0s8 (HQ-RTR)" read -p "Введите IP адрес для enp0s8 (например: 192.168.2.1/27): " ip_enp0s8 if [[ -n "$ip_enp0s8" ]]; then echo "Настраиваем enp0s8 с адресом: $ip_enp0s8" # Создаем файл конфигурации для enp0s8 cat > /etc/NetworkManager/system-connections/enp0s8.nmconnection << EOF [connection] id=enp0s8 uuid=$(uuidgen) type=ethernet autoconnect-priority=-999 interface-name=enp0s8 timestamp=$(date +%s) [ethernet] [ipv4] address1=$ip_enp0s8 method=manual [ipv6] addr-gen-mode=eui64 method=disabled [proxy] EOF chmod 600 /etc/NetworkManager/system-connections/enp0s8.nmconnection fi # 3. Настройка enp0s3 echo "Настройка интерфейса enp0s3 (ISP)" read -p "Введите IP адрес для enp0s8 (например: 172.16.5.1/28): " ip_enp0s3 if [[ -n "$ip_enp0s3" ]]; then echo "Настраиваем enp0s8 с адресом: $ip_enp0s3" # Создаем файл конфигурации для enp0s8 cat > /etc/NetworkManager/system-connections/enp0s3.nmconnection << EOF [connection] id=enp0s3 uuid=$(uuidgen) type=ethernet autoconnect-priority=-999 interface-name=enp0s3 timestamp=$(date +%s) [ethernet] [ipv4] address1=$ip_enp0s3 method=manual [ipv6] addr-gen-mode=eui64 method=disabled [proxy] EOF chmod 600 /etc/NetworkManager/system-connections/enp0s3.nmconnection fi # 4. Включение и настройка iptables systemctl enable --now iptables echo "Статус iptables:" systemctl status iptables --no-pager # 5. Очистка правил iptables и настройка NAT iptables -F iptables -t nat -F # Определяем подсети из введенных адресов if [[ -n "$ip_enp0s3" ]]; then # Извлекаем подсеть из формата IP/маска subnet1=$(echo "$ip_enp0s3" | cut -d'/' -f1 | cut -d'.' -f1-3) mask1=$(echo "$ip_enp0s3" | cut -d'/' -f2) iptables -t nat -A POSTROUTING -s $subnet1.0/$mask1 -o enp0s3 -j MASQUERADE echo "Добавлено правило NAT для подсети: $subnet1.0/$mask1" fi # 6. Сохранение правил iptables service iptables save # 7. Включение IP forwarding echo "Включаем IP forwarding..." sysctl net.ipv4.ip_forward=1 >> /etc/sysctl.conf sysctl -p echo "" echo "=== Проверка настроек ===" echo "Текущие правила iptables NAT:" iptables -t nat -L POSTROUTING -n -v echo "" echo "Текущее состояние IP forwarding:" sysctl net.ipv4.ip_forward echo "" echo "=== Тестирование соединения (после перезагрузки) ===" echo "После перезагрузки вы можете выполнить следующие команды для проверки:" if [[ -n "$ip_enp0s3" ]]; then ip1=$(echo "$ip_enp0s3" | cut -d'/' -f1) echo "ping ya.ru -I $ip1" fi if [[ -n "$ip_enp0s8" ]]; then ip2=$(echo "$ip_enp0s8" | cut -d'/' -f1) echo "ping ya.ru -I $ip2" fi echo "" read -p "Выполнить перезагрузку сейчас? (y/n): " reboot_now if [[ "$reboot_now" == "y" || "$reboot_now" == "Y" ]]; then echo "Перезагружаем систему..." reboot else echo "Настройка завершена. Перезагрузите систему для применения всех изменений." echo "Используйте команду: reboot" fi