This commit is contained in:
root 2026-03-04 09:16:48 +05:00
parent 64dcb9dcd9
commit c707682f52

234
hq-rtr_module_1.sh Executable file
View file

@ -0,0 +1,234 @@
#!/bin/bash
# Скрипт настройки HQ-RTR хоста
# Проверяем, запущен ли скрипт от root
if [[ $EUID -ne 0 ]]; then
echo "Этот скрипт должен быть запущен с правами root"
exit 1
fi
echo "=== Настройка HQ-RTR хоста ==="
# 1. Установка имени хоста
read -p "Введите имя хоста (например: hq-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-SRV)"
read -p "Введите IP адрес для enp0s8 (например: 192.168.3.1/26): " 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 (HQ-CLI)"
read -p "Введите IP адрес для enp0s9 (например: 192.168.4.1/29): " 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
echo ""
echo "__________________enp0s10__________________"
read -p "Enter ip for enp0s10 (192.168.1.1/28): " ip_enp0s10
if [[ -n "$ip_enp0s10" ]]; then
echo "Setting up enp0s10 with address: $ip_enp0s10"
#Create file confugarition for enp0s10
cat > /etc/NetworkManager/system-connections/enp0s10.nmconnection << EOF
[connection]
id=enp0s10
uuid=$(uuidgen)
type=ethernet
autoconnect_priority=-999
interface-name=enp0s10
timestamp=$(date +%s)
[ethernet]
[ipv4]
address1=$ip_enp0s10
method=manual
[ipv6]
addr-gen-mode=eui64
method=disables
[proxy]
EOF
chmod 600 /etc/NetworkManager/system-connections/enp0s10.nmconnection
fi
# 4. Настройка enp0s3 (внешний интерфейс)
echo ""
echo "____________________Enp0s3___________________________"
read -p "Введите статический IP для enp0s3 (172.16.4.2/28): " ip_enp0s3
read -p "Enter gateway for enp0s3 (172.16.4.1): " gateway_enp0s3
read -p "Enter dns for enp0s3 (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
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