net/br-rtr_module_1.sh
2026-02-12 14:47:41 +05:00

154 lines
4.4 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт настройки BR-RTR хоста
# Проверяем, запущен ли скрипт от 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"
exec bash
else
echo "Имя хоста не было введено, пропускаем этот шаг"
fi
echo ""
echo "=== Настройка сетевых интерфейсов ==="
# 2. Настройка enp0s8
echo "Настройка интерфейса enp0s8 (BR-SRV)"
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
# 4. Настройка enp0s3 (внешний интерфейс)
echo ""
echo "Настройка интерфейса enp0s3 (внешний, в интернет)"
read -p "Enter ip for enp0s3 (172.16.5.2/28): " ip_enp0s3
read -p "Enter gateway (172.16.5.1): " gateway_enp0s3
read -p "Enter dns (8.8.8.8): " dns_enp0s3
if [[ -n "$ip_enp0s3" ]]; then
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
gateway=$gateway_enp0s3
dns=$dns_enp0s3
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 и маршрутизации ==="
# 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
# 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
echo ""
read -p "Выполнить перезагрузку сейчас? (y/n): " reboot_now
if [[ "$reboot_now" == "y" || "$reboot_now" == "Y" ]]; then
echo "Перезагружаем систему..."
reboot
else
echo "Настройка завершена. Перезагрузите систему для применения всех изменений."
echo "Используйте команду: reboot"
fi