Подсказочки

ISIS

1) router isis < имя isis процесса для данного устройства >
2) net 49.0001.0000.0000.0001.00 
3) is-type level-2-only
4) metric-style wide
5) interface lo // ip router isis < имя isis процесса для данного устройства > (на ВСЕХ интах на которых есть isis соседи)

IBGP

Настраивается по loopback адресам! 192.168.255.1/32 например

1) router bgp 31133
2) neighbour 
3) update source < интерфейс СВОЕГО лупбэка >
4) network
5) bgp router-id < лупбэк СВОЙ >



Vlan интерфейс, тегируемый самим хостом

(временный вариант)

1) ip link add link ens33 name ens33.100 type vlan id 100
2) ip addr add 192.168.1.1/24 dev ens33.100
3) ip link set link ens33.100 up
4) ip route add default via 192.168.1.100 dev ens33.100

(постоянный)

1) ip link add link ens33 name ens33.100 type vlan id 100
2) mkdir /etc/net/ifaces/ens33.100
3) nano /etc/net/ifaces/ens33.100/options ( TYPE=VLAN VID=100 ONBOOT=yes CONFIG_IPv4=yes BOOTPROTO=static )
4) nano /etc/net/ifaces/ens33.100/ipv4address (192.168.1.1/24)
5) nano /etc/net/ifaces/ens33.100/ipv4route ( default via 192.168.1.100 )

dns через resolvconf или systemd-resolved

OVS

1) apt-get update && apt-get install openvswitch
2) systemctl enable --now openvswitch
3) nano /etc/net/ifaces/default ( ovs_remove = false )
3) ovs-vsctl add-br sw1
4) ovs-vsctl add-port ens33 tag=100
5) ovs-vsctl add-port ens34 trunk=[100,200,300]
6)ip link set ens33 up
7)ip link set sw1 up

OSPF туннель

router ospf 1
network < сеть туненеля/32 > area 0
ip tunnel LOOPBACK-SOURCE LOOPBACK-DESTANATION
network < остальные сети при необходимсоти > area 0

и в обратную сторону по такому же алгоритму ( rtr - rtr )

Развертывание FREEIPA домена

1) Установка hostname
2) apt-get install freeipa-server ipa-server-dns
3) ipa-server-install --setup-dns
4) kinit admin
5) Groups, users можно через web UI
6) если терраформ будет нерабочий, то можно через web UI создать

Terraform

1) установка с зеркала yandex
2) дальше только вайбкод...
3) пример настройки: 


terraform {
  required_providers {
    freeipa = {
      source  = "camptocamp/freeipa"
      version = "1.0.0"
    }
  }
}

provider "freeipa" {
  host     = "srv-hq.au.team"
  username = "admin"
  password = "your_admin_password"
}

# Пример создания A и PTR записи
resource "freeipa_dns_record" "srv_hq" {
  zone_name = "au.team"
  name      = "srv-hq"
  a_record  = ["192.168.1.10"] # Ваш IP
}


KEA dhcp

1) apt-get update && apt-get install kea-dhcp4 -y 
2) nano /etc/kea/kea-dhcp4.conf (пример базового конфига)

   {
"Dhcp4": {
    "interfaces-config": {
        "interfaces": [ "eth0" ] 
    },
    "lease-database": {
        "type": "memfile",
        "name": "/var/lib/kea/kea-leases4.csv"
    },
    "subnet4": [
        {
            "id": 1,
            "subnet": "192.168.10.0/24",
            "pools": [ { "pool": "192.168.10.100 - 192.168.10.200" } ],
            "option-data": [
                { "name": "routers", "data": "192.168.10.1" },
                { "name": "domain-name-servers", "data": "192.168.10.10" },
                { "name": "domain-name", "data": "au.team" }
            ],
            "reservations": [
                {
                    "hw-address": "00:0c:29:12:34:56",
                    "ip-address": "192.168.10.50",
                    "hostname": "adm-hq"
                }
            ]
        }
    ]
}
}

3) systemctl enable --now kea-dhcp4

Nextcloud

1) apt-get install apache2 apache2-mod_php8.2 -y 
2) rm -rf /var/www/html/*
3) nano /etc/httpd2/conf/sites-availible/ncloud.conf ( Стандартный virtualhost )
4) скачать в папку /var/www/html nextcloud-setup.php с оф. сайта командой curl -O https://https://download.nextcloud.com/server/installer/setup-nextcloud.php
5) systemctl enable --now httpd2

Потребуется докачать еще много модулей для php и возможно apache2, но инсталлер скажет каких не хватает. далее делаем базу данных.

6) apt-get install postgresql17-server
7) /etc/init.d/postgresql initdb
8) systemctl enable --now postgresql 
9) psql -U postgres
10) CREATE USER "ncloud-user" WITH PASSWORD 'P@ssw0rd';
11) CREATE DATABASE "ncloud-db" OWNER "ncloud-user";

12) чтобы база данных работала качаем pgsql модули для php 

apt-get install php-pgsql php-pdo-pgsql -y

В /etc/php/8.2/apache2/php.ini увеличить max_executiuon_time и memory_limit. ( это необходимо для работы функции приложений. )

далее настройка через web интерфейс.

выбираем базу данных, докачиваем нужные модули если потребуются

нужно будет установить через nextcloud ldap groups and users и подключить ldap через какого-то пользователя. например через аккаунт адлминистратора. данные об нем можно узнать через web интерфейс freeipa.




Ansible. установка

apt-get install python3-module-pip python3-module-venv

mkdir -p /home/user/ansible
cd /home/user/ansible

python3 -m venv venv/ansible

source venv/ansible/bin/activate

pip install --upgrade pip

pip install ansible

# Генерируем ключ (если нет) — жми Enter на все вопросы
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa

for host in ha1-cod ha2-cod srv1-cod srv2-cod srv3-cod; do
    ssh-copy-id user@$host
done

mkdir -p /home/user/ansible/inventories/production
nano /home/user/ansible/inventories/production/hosts.yml

            all:
  children:
    proxy:
      hosts:
        ha1-cod:
        ha2-cod:
    server:
      hosts:
        srv1-cod:
        srv2-cod:
        srv3-cod:
  vars:
    ansible_connection: ssh
    ansible_user: user
    ansible_ssh_private_key_file: ~/.ssh/id_rsa


export ANSIBLE_HOST_KEY_CHECKING=False                          

ansible -i inventories/production/hosts.yml -m ping all

nano   /home/user/ansible/ansible.cfg                     [defaults]
                                                          host_key_checking = False
                                                          inventory = inventories/production/hosts.yml


далее - плейбуки

-- Angie setup --

- name: Setup Angie Web Server
  hosts: server
  become: yes
  tasks:
    - name: Install Angie
      apt:
        name: angie
        state: present

    - name: Create index.html
      copy:
        dest: /var/www/html/index.html
        content: "{{ inventory_hostname }} by Angie!"

---
- name: Setup Keepalived
  hosts: proxy
  become: yes
  tasks:
    - name: Install keepalived
      apt:
        name: keepalived
        state: present


-- KeepAlived --

    - name: Configure keepalived
      copy:
        dest: /etc/keepalived/keepalived.conf
        content: |
          vrrp_instance VI_1 {
              state {{ 'MASTER' if inventory_hostname == 'ha1-cod' else 'BACKUP' }}
              interface eth0
              virtual_router_id 51
              priority {{ 101 if inventory_hostname == 'ha1-cod' else 100 }}
              advert_int 1
              authentication {
                  auth_type PASS
                  auth_pass 1234
              }
              virtual_ipaddress {
                  172.16.1.253/23
              }
          }
      notify: restart keepalived

  handlers:
    - name: restart keepalived
      service:
        name: keepalived
        state: restarted

-- haproxy --

---
- name: Setup HAProxy
  hosts: proxy
  become: yes
  tasks:
    - name: Install haproxy
      apt:
        name: haproxy
        state: present

    - name: Configure haproxy
      copy:
        dest: /etc/haproxy/haproxy.cfg
        content: |
          global
              log /dev/log local0
              chroot /var/lib/haproxy
              user haproxy
              group haproxy

          defaults
              log global
              mode http
              option httplog
              timeout connect 5000
              timeout client  50000
              timeout server  50000

          frontend http_front
              bind 172.16.1.253:80
              # Перенаправление HTTP -> HTTPS
              redirect scheme https code 301 if !{ ssl_fc }

          frontend https_front
              bind 172.16.1.253:443 ssl crt /etc/ssl/certs/www.au.tea.pem
              default_backend web_servers

          backend web_servers
              balance roundrobin
              # Динамическое добавление серверов из группы server
              {% for host in groups['server'] %}
              server {{ host }} {{ hostaddr }}:80 check
              {% endfor %}

          listen stats
              bind 172.16.1.253:9000
              stats enable
              stats uri /haproxy_stats
              stats refresh 10s
      notify: restart haproxy

  handlers:
    - name: restart haproxy
      service:
        name: haproxy
        state: restarted


Личный портал IDECO VPN 

вайбкод...