From 78316f6ab00cdd98b1b895b91b18d5923f294fe3 Mon Sep 17 00:00:00 2001 From: Marina Date: Tue, 20 Jan 2026 15:16:22 +0500 Subject: [PATCH] Marina --- isp_module_1.sh | 233 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 isp_module_1.sh diff --git a/isp_module_1.sh b/isp_module_1.sh new file mode 100644 index 0000000..79d4470 --- /dev/null +++ b/isp_module_1.sh @@ -0,0 +1,233 @@ +#!/bin/bash + +# Скрипт настройки ISP хоста +# Проверяем, запущен ли скрипт от root +if [[ $EUID -ne 0 ]]; then + echo "Этот скрипт должен быть запущен с правами root" + exit 1 +fi + +echo "=== Настройка ISP хоста ===" + +# 1. Установка имени хоста +read -p "Введите имя хоста (например: isp.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 (например: 172.16.4.1/28): " 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. Настройка enp0s9 +echo "" +echo "Настройка интерфейса enp0s9 (BR-RTR)" +read -p "Введите IP адрес для enp0s9 (например: 172.16.5.1/28): " ip_enp0s9 + +if [[ -n "$ip_enp0s9" ]]; then + echo "Настраиваем enp0s9 с адресом: $ip_enp0s9" + + # Создаем файл конфигурации для enp0s9 + cat > /etc/NetworkManager/system-connections/enp0s9.nmconnection << EOF +[connection] +id=enp0s9 +uuid=$(uuidgen) +type=ethernet +autoconnect-priority=-999 +interface-name=enp0s9 +timestamp=$(date +%s) + +[ethernet] + +[ipv4] +address1=$ip_enp0s9 +method=manual + +[ipv6] +addr-gen-mode=eui64 +method=disabled + +[proxy] +EOF + + chmod 600 /etc/NetworkManager/system-connections/enp0s9.nmconnection +fi + +# 4. Настройка enp0s3 (внешний интерфейс) +echo "" +echo "Настройка интерфейса enp0s3 (внешний, в интернет)" +read -p "Использовать DHCP для enp0s3? (y/n): " use_dhcp + +if [[ "$use_dhcp" == "y" || "$use_dhcp" == "Y" ]]; then + echo "Настраиваем enp0s3 на получение адреса по DHCP" + + 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] +method=auto + +[ipv6] +addr-gen-mode=eui64 +method=disabled + +[proxy] +EOF +else + read -p "Введите статический IP для enp0s3 (формат: IP/маска, шлюз, DNS): " ip_enp0s3 + if [[ -n "$ip_enp0s3" ]]; then + echo "Настраиваем enp0s3 со статическим адресом" + + # Разбираем ввод (ожидается формат: 192.168.1.2/24,192.168.1.1,8.8.8.8) + 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 + fi +fi + +chmod 600 /etc/NetworkManager/system-connections/enp0s3.nmconnection + +echo "" +echo "=== Перезапуск NetworkManager ===" +systemctl restart NetworkManager +sleep 3 + +echo "" +echo "=== Настройка iptables и маршрутизации ===" + +# 5. Включение и настройка iptables +systemctl enable --now iptables +echo "Статус iptables:" +systemctl status iptables --no-pager + +# 6. Очистка правил iptables и настройка NAT +iptables -F +iptables -t nat -F + +# Определяем подсети из введенных адресов +if [[ -n "$ip_enp0s8" ]]; then + # Извлекаем подсеть из формата IP/маска + subnet1=$(echo "$ip_enp0s8" | cut -d'/' -f1 | cut -d'.' -f1-3) + mask1=$(echo "$ip_enp0s8" | cut -d'/' -f2) + iptables -t nat -A POSTROUTING -s $subnet1.0/$mask1 -o enp0s3 -j MASQUERADE + echo "Добавлено правило NAT для подсети: $subnet1.0/$mask1" +fi + +if [[ -n "$ip_enp0s9" ]]; then + subnet2=$(echo "$ip_enp0s9" | cut -d'/' -f1 | cut -d'.' -f1-3) + mask2=$(echo "$ip_enp0s9" | cut -d'/' -f2) + iptables -t nat -A POSTROUTING -s $subnet2.0/$mask2 -o enp0s3 -j MASQUERADE + echo "Добавлено правило NAT для подсети: $subnet2.0/$mask2" +fi + +# 7. Сохранение правил iptables +service iptables save + +# 8. Включение 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_enp0s8" ]]; then + ip1=$(echo "$ip_enp0s8" | cut -d'/' -f1) + echo "ping ya.ru -I $ip1" +fi +if [[ -n "$ip_enp0s9" ]]; then + ip2=$(echo "$ip_enp0s9" | 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 + + + +