Загрузка данных


cat > /mnt/user-data/outputs/Script3_fixed.sh << 'ENDOFSCRIPT'
#!/bin/bash

enable_nat() {
cat > /etc/nftables/nftables.nft << EOF
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
 chain postrouting {
  type nat hook postrouting priority srcnat
  oifname "enp7s1" masquerade
 }
}
EOF
systemctl enable --now nftables
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/net/sysctl.conf
sysctl -p
systemctl restart network
}

echo "Выберите устройство:"
echo "1 ISP"
echo "2 BR-RTR"
echo "3 HQ-RTR"
echo "4 HQ-SRV"
echo "5 HQ-CLI"
echo "6 BR-SRV"
echo "7 DNS"
read -p "Номер: " dev
case $dev in
1)
echo "Настройка ISP"
echo "=======ISP======="
read -p "Hostname: (ISP) " HOSTNAME
hostnamectl hostname "$HOSTNAME"
mkdir /etc/net/ifaces/enp7s{2,3}
echo -e 'BOOTPROTO=static\nTYPE=eth' >> /etc/net/ifaces/enp7s2/options
echo -e 'BOOTPROTO=static\nTYPE=eth' >> /etc/net/ifaces/enp7s3/options
echo '172.16.4.1/28' > /etc/net/ifaces/enp7s2/ipv4address
echo '172.16.5.1/28' > /etc/net/ifaces/enp7s3/ipv4address
systemctl restart network
apt-get update && apt-get install nftables tzdata -y
timedatectl set-timezone Asia/Yekaterinburg
enable_nat
;;

2)
echo "=======BR-RTR======="
read -p "Hostname: (br-rtr.zenithhub.net)" HOSTNAME
hostnamectl hostname "$HOSTNAME"
echo -e 'BOOTPROTO=static\nTYPE=eth' >> /etc/net/ifaces/enp7s1/options
echo '172.16.5.2/28' > /etc/net/ifaces/enp7s1/ipv4address
echo 'default via 172.16.5.1' > /etc/net/ifaces/enp7s1/ipv4route
echo 'nameserver 8.8.8.8' > /etc/net/ifaces/enp7s1/resolv.conf
mkdir /etc/net/ifaces/{enp7s2,gre1}
echo -e 'BOOTPROTO=static\nTYPE=eth' >> /etc/net/ifaces/enp7s2/options
echo '172.16.6.1/26' > /etc/net/ifaces/enp7s2/ipv4address
systemctl restart network
cat > /etc/net/ifaces/gre1/options << EOF
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.5.2
TUNREMOTE=172.16.4.2
TUNTTL=64
TUNOPTIONS='ttl 64'
EOF
echo "10.10.10.2/30" > /etc/net/ifaces/gre1/ipv4address
systemctl restart network
apt-get update && apt-get install sudo nftables tzdata frr -y
timedatectl set-timezone Asia/Yekaterinburg
enable_nat
read -p "Username: (rtrhino)" USERNAME
read -s -p "Password: (P@ssw0rd)" PASSWORD
useradd -m "$USERNAME"
echo "$USERNAME:$PASSWORD" | chpasswd
usermod -aG wheel "$USERNAME"
echo 'WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers.d/"$USERNAME"
sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
cat > /etc/frr/frr.conf << 'EOF'
interface gre1
 no ip ospf passive
exit
!
interface gre1
 ip ospf area 0
 ip ospf authentication
 ip ospf authentication-key P@ssw0rd
 no ip ospf passive
exit
!
interface enp7s2
 ip ospf area 0
exit
!
router ospf
 passive-interface default
exit
EOF
systemctl restart network
systemctl enable --now nftables frr
;;

3)
echo "=======HQ-RTR======="
read -p "Hostname: (hq-rtr.zenithhub.net)" HOSTNAME
hostnamectl hostname "$HOSTNAME"
echo -e 'BOOTPROTO=static\nTYPE=eth' > /etc/net/ifaces/enp7s1/options
echo '172.16.4.2/28' > /etc/net/ifaces/enp7s1/ipv4address
echo 'default via 172.16.4.1' > /etc/net/ifaces/enp7s1/ipv4route
echo 'nameserver 8.8.8.8' > /etc/net/ifaces/enp7s1/resolv.conf
systemctl restart network
mkdir -p /etc/net/ifaces/enp7s2
mkdir -p /etc/net/ifaces/enp7s2.100
mkdir -p /etc/net/ifaces/enp7s2.200
mkdir -p /etc/net/ifaces/enp7s2.999
mkdir -p /etc/net/ifaces/gre1
echo -e 'BOOTPROTO=static\nTYPE=eth' >> /etc/net/ifaces/enp7s2/options
echo -e 'BOOTPROTO=static\nTYPE=vlan\nVID=100\nHOST=enp7s2\nONBOOT=yes' >> /etc/net/ifaces/enp7s2.100/options
echo -e 'BOOTPROTO=static\nTYPE=vlan\nVID=200\nHOST=enp7s2\nONBOOT=yes' >> /etc/net/ifaces/enp7s2.200/options
echo -e 'BOOTPROTO=static\nTYPE=vlan\nVID=999\nHOST=enp7s2\nONBOOT=yes' >> /etc/net/ifaces/enp7s2.999/options
read -p "MASK vlan100: (24)" MASK
echo "172.16.100.1/$MASK" > /etc/net/ifaces/enp7s2.100/ipv4address
read -p "MASK vlan200: (24)" MASK
echo "172.16.200.1/$MASK" > /etc/net/ifaces/enp7s2.200/ipv4address
read -p "MASK vlan999: (24)" MASK
echo "172.16.99.1/$MASK" > /etc/net/ifaces/enp7s2.999/ipv4address
systemctl restart network
cat > /etc/net/ifaces/gre1/options << EOF
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.4.2
TUNREMOTE=172.16.5.2
TUNTTL=64
TUNOPTIONS='ttl 64'
EOF
echo "10.10.10.1/30" > /etc/net/ifaces/gre1/ipv4address
systemctl restart network
apt-get update && apt-get install sudo nftables tzdata frr dhcp-server -y
timedatectl set-timezone Asia/Yekaterinburg
enable_nat
read -p "Username: (rtrhino)" USERNAME
read -s -p "Password: (P@ssw0rd)" PASSWORD
useradd -m "$USERNAME"
echo "$USERNAME:$PASSWORD" | chpasswd
usermod -aG wheel "$USERNAME"
echo 'WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers.d/"$USERNAME"
sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
grep ospf /etc/frr/daemons
cat > /etc/frr/frr.conf << 'EOF'
interface gre1
 no ip ospf passive
exit
!
interface gre1
 ip ospf area 0
 ip ospf authentication
 ip ospf authentication-key P@ssw0rd
 no ip ospf passive
exit
!
interface enp7s2.100
 ip ospf area 0
exit
!
interface enp7s2.200
 ip ospf area 0
exit
!
interface enp7s2.999
 ip ospf area 0
exit
!
router ospf
 passive-interface default
exit
EOF
systemctl restart network
systemctl enable --now frr
cat > /etc/dhcp/dhcpd.conf << 'EOF'
subnet 172.16.200.0 netmask 255.255.255.192 {
range 172.16.200.2 172.16.200.30;
option routers 172.16.200.1;
option domain-name-servers 172.16.100.2;
option domain-search "zenithhub.net";
default-lease-time 600;
max-lease-time 7200;
}
EOF
sed -i 's/DHCPDARGS=/DHCPDARGS=enp7s2.200/g' /etc/sysconfig/dhcpd
systemctl enable --now dhcpd
;;

4)
echo "=======HQ-SRV======="
read -p "Hostname: (hq-srv.zenithhub.net)" HOSTNAME
hostnamectl hostname "$HOSTNAME"
echo -e 'BOOTPROTO=static\nTYPE=eth\nONBOOT=yes' > /etc/net/ifaces/enp7s1/options
read -p "MASK: (24)" MASK
echo "172.16.100.2/$MASK" > /etc/net/ifaces/enp7s1/ipv4address
echo 'default via 172.16.100.1' > /etc/net/ifaces/enp7s1/ipv4route
echo 'nameserver 8.8.8.8' > /etc/net/ifaces/enp7s1/resolv.conf
systemctl restart network
apt-get update && apt-get install bind bind-utils tzdata -y
timedatectl set-timezone Asia/Yekaterinburg
read -p "Username: (rtrhino)" USERNAME
read -p "UID: (1015)" UIDNUM
read -s -p "Password: (P@ssw0rd)" PASSWORD
useradd -u "$UIDNUM" "$USERNAME"
echo "$USERNAME:$PASSWORD" | chpasswd
usermod -aG wheel "$USERNAME"
echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USERNAME
read -p "SSH Port: " SSHPORT
echo "Authorized access only" > /etc/openssh/banner
cat >> /etc/openssh/sshd_config << EOF
Port $SSHPORT
MaxAuthTries 2
AllowUsers $USERNAME
Banner /etc/openssh/banner
EOF
systemctl restart sshd
read -p "DNS zone (zenithhub.net): " DNS_ZONE
cat > /etc/bind/options.conf << 'EOF'
options {
    directory "/etc/bind/zone";
    listen-on { 172.16.100.2; 127.0.0.1; };
    allow-query { any; };
    forwarders { 8.8.8.8; };
    recursion yes;
};
EOF
cat > /etc/bind/rfc1912.conf << EOF
zone "$DNS_ZONE" IN {
    type master;
    file "/etc/bind/zone/$DNS_ZONE";
};

zone "100.16.172.in-addr.arpa" IN {
    type master;
    file "/etc/bind/zone/100.16.172.in-addr.arpa";
};
EOF
cat > /etc/bind/zone/"$DNS_ZONE" << EOF
\$TTL 86400
@   IN SOA  hq-srv."$DNS_ZONE". root."$DNS_ZONE". (
            2025010101 ; Serial
            3600       ; Refresh
            1800       ; Retry
            604800     ; Expire
            86400 )    ; Minimum TTL

@       IN NS   hq-srv."$DNS_ZONE".
hq-rtr  IN A    172.16.100.1
hq-srv  IN A    172.16.100.2
hq-cli  IN A    172.16.200.2
br-rtr  IN A    172.16.6.1
br-srv  IN A    172.16.6.2
moodle  IN CNAME hq-rtr."$DNS_ZONE".
wiki    IN CNAME hq-rtr."$DNS_ZONE".
EOF
cat > /etc/bind/zone/100.16.172.in-addr.arpa << EOF
\$TTL 86400
@   IN SOA  hq-srv."$DNS_ZONE". root."$DNS_ZONE". (
            2025010101
            3600
            1800
            604800
            86400 )

@       IN NS   hq-srv."$DNS_ZONE".

1   IN PTR  hq-rtr."$DNS_ZONE".
2   IN PTR  hq-srv."$DNS_ZONE".
EOF
rndc-confgen > /etc/bind/rndc.key
sed -i '6,$d' /etc/bind/rndc.key
named-checkconf
named-checkconf -z
systemctl enable --now bind
systemctl status bind
;;

5)
echo "=======HQ-CLI======="
read -p "Hostname: (hq-cli.zenithhub.net)" HOSTNAME
hostnamectl hostname "$HOSTNAME"
echo "Вход в сеть настроить вручную в GUI"
;;

6)
echo "=======BR-SRV======="
read -p "Hostname: (br-srv.zenithhub.net)" HOSTNAME
hostnamectl hostname "$HOSTNAME"
echo -e 'BOOTPROTO=static\nTYPE=eth' >> /etc/net/ifaces/enp7s1/options
echo '172.16.6.2/28' > /etc/net/ifaces/enp7s1/ipv4address
echo 'default via 172.16.6.1' > /etc/net/ifaces/enp7s1/ipv4route
echo 'nameserver 172.16.100.2' > /etc/net/ifaces/enp7s1/resolv.conf
systemctl restart network
read -p "Username: (rtrhino)" USERNAME
read -p "UID: (1015)" UIDNUM
read -s -p "Password: (P@ssw0rd)" PASSWORD
useradd -u "$UIDNUM" "$USERNAME"
echo "$USERNAME:$PASSWORD" | chpasswd
usermod -aG wheel "$USERNAME"
echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USERNAME
read -p "SSH Port: " SSHPORT
echo "Authorized access only" > /etc/openssh/banner
cat >> /etc/openssh/sshd_config << EOF
Port $SSHPORT
MaxAuthTries 2
AllowUsers $USERNAME
Banner /etc/openssh/banner
EOF
systemctl restart sshd
;;

7)
echo "=======DNS======="
read -p "DNS zone (zenithhub.net): " DNS_ZONE
rm -f /etc/net/ifaces/enp7s1/resolv.conf
cat > /etc/resolv.conf << EOF
search "$DNS_ZONE"
nameserver 172.16.100.2
EOF
;;
esac

echo "Готово."
ENDOFSCRIPT
echo "Done"