#!/bin/bash # Скрипт настройки BR-RTR (Linux): имя хоста, интерфейсы, NAT, маршрутизация # Интерфейсы: # enp0s3 - в сторону ISP (статический адрес, шлюз, DNS) # enp0s8 - в сторону BR-FW (локальная сеть) # Проверяем, запущен ли скрипт от root if [[ $EUID -ne 0 ]]; then echo "Этот скрипт должен быть запущен с правами root" exit 1 fi echo "=== Настройка BR-RTR ===" # 1. Установка имени хоста read -p "Введите имя хоста (например: br-rtr.au-team.irpo): " hostname if [[ -n "$hostname" ]]; then echo "Устанавливаем имя хоста: $hostname" hostnamectl set-hostname "$hostname" else echo "Имя хоста не было введено, пропускаем этот шаг" fi echo "" echo "=== Настройка сетевых интерфейсов ===" # 2. Настройка enp0s8 (в сторону BR-FW) echo "Настройка интерфейса enp0s8 (сторона BR-FW)" read -p "Введите IP адрес для enp0s8 в формате адрес/префикс: " 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 # Права 600 обязательны, иначе NetworkManager проигнорирует файл chmod 600 /etc/NetworkManager/system-connections/enp0s8.nmconnection fi # 3. Настройка enp0s3 (в сторону ISP) echo "Настройка интерфейса enp0s3 (сторона ISP)" read -p "Введите через запятую: адрес/префикс,шлюз,DNS: " ip_enp0s3 if [[ -n "$ip_enp0s3" ]]; then echo "Настраиваем enp0s3 со статическим адресом" # Разбираем ввод: адрес/префикс,шлюз,DNS IFS=',' read -ra ADDR <<< "$ip_enp0s3" ip_with_mask="${ADDR[0]}" gateway="${ADDR[1]}" dns="${ADDR[2]}" 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_with_mask gateway=$gateway dns=$dns method=manual [ipv6] addr-gen-mode=eui64 method=disabled [proxy] EOF chmod 600 /etc/NetworkManager/system-connections/enp0s3.nmconnection fi echo "" echo "=== Перезапуск NetworkManager ===" systemctl restart NetworkManager sleep 3 echo "" echo "=== Настройка iptables и маршрутизации ===" # 4. Включение и запуск iptables systemctl enable --now iptables echo "Статус iptables:" systemctl status iptables --no-pager # 5. Очистка правил iptables и настройка NAT # NAT делаем на выходе в сторону ISP (enp0s3) для всего, что уходит из локальных сетей iptables -F iptables -t nat -F iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE echo "Добавлено правило NAT (MASQUERADE) на интерфейсе enp0s3" # 6. Сохранение правил iptables service iptables save # 7. Включение IP forwarding # Пишем в отдельный файл с перезаписью (>), чтобы при повторном запуске строки не дублировались echo "Включаем IP forwarding..." echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-forwarding.conf sysctl -p /etc/sysctl.d/99-forwarding.conf 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_with_mask" | 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