Добавить в корзинуПозвонить
Найти в Дзене

Заметки

Источник http://altlinuxmetod.ru/?page_id=385 1 .1 хостнейми и все такое там где кли hostnamectl set-hostname xxxx.au.team vim /etc/sysconfig/network изменить хостнейм на эко en conf t hostname xxxx.au.team ip domain-name au.team .2 на эко en conf t username net_admin password P@ssw0rd role admin ex и потом wr на свиче useradd net_admin passwd net_admin а потом ввод P@ssw0rd дважды usermod -aG wheel net_admin добавить в судоерс и чтоб без пароля мог echo «net_admin ALL=(ALL) NOPASSWD:ALL» > /etc/sudoers.d/net_admin .3 в машинах с де-шкой надо через интерфейс нетворкманагера, если его нет то надо его поставить но он вроде есть в других машинах надо через етцнет на rtr-cod interface isp ip address 34.95.33.33/24 ip nat outside ex interface sw-cod ip address 172.16.0.254/23 ip nat inside ex write memory бгп на ртр цод router bgp 64499 bgp router-id 34.95.33.33 neighbor 34.95.33.254 remote-as 64499 adress-family ipv4 unicast ex инстанс port ge0 service-instance ge0/isp encapsulation untagg

Источник http://altlinuxmetod.ru/?page_id=385

1

.1 хостнейми и все такое

там где кли

hostnamectl set-hostname xxxx.au.team

vim /etc/sysconfig/network изменить хостнейм

на эко

en

conf t

hostname xxxx.au.team

ip domain-name au.team

.2

на эко

en

conf t

username net_admin

password P@ssw0rd

role admin

ex и потом wr

на свиче

useradd net_admin

passwd net_admin а потом ввод P@ssw0rd дважды

usermod -aG wheel net_admin

добавить в судоерс и чтоб без пароля мог

echo «net_admin ALL=(ALL) NOPASSWD:ALL» > /etc/sudoers.d/net_admin

.3

в машинах с де-шкой надо через интерфейс нетворкманагера, если его нет то надо его поставить но он вроде есть

в других машинах надо через етцнет

на rtr-cod

interface isp

ip address 34.95.33.33/24

ip nat outside

ex

interface sw-cod

ip address 172.16.0.254/23

ip nat inside

ex

write memory

бгп на ртр цод

router bgp 64499

bgp router-id 34.95.33.33

neighbor 34.95.33.254 remote-as 64499

adress-family ipv4 unicast

ex

инстанс

port ge0

service-instance ge0/isp

encapsulation untagged

connect ip interface isp

ex

port ge1

service-instance ge1/sw-cod

encapsulation untagged

connect ip interface sw-cod

ex

wr

нат

ip nat pool nat_cod 172.16.0.1-172.16.1.253

ip nat source dynamic inside pool nat_cod overload interface isp

write

РТР БР

интерфейсы

interface isp

ip address 84.212.78.78/27

ip router isis 1

ip nat outside

ex

interface fw-br

ip address 10.2.0.1/30

ip nat inside

ex

interface loopback.0

ip address 192.168.255.2/32

ip router isis 1

ex

write

инстансы

port ge0

service-instance ge0/isp

encapsulation untagged

connect ip interface isp

ex

ex

port ge1

service-instance ge1/fw-br

encapsulation untagged

connect ip interface fw-br

ex

ex

исис

router isis 1

net 49.0001.1921.6825.5002.00

is-type level-2-only

metric-style wide

ex

бгп

router bgp 64499

bgp router-id 192.168.255.2

neighbor 192.168.255.1 remote-as 64499

neighbor 192.168.255.1 update-source loopback.0

address-family ipv4 unicast

neighbor 192.168.255.1 activate

exit

exit

нат

ip nat pool nat_br 10.2.0.2

ip nat source dynamic inside pool nat_br overload interface isp

write

на свиче можно установить овс

apt-get update && apt-get install -y openvswitch

отключить удаление мостов

vim /etc/net/ifaces/default/options

поменять OVS_REMOVE = yes на no

создание моста и портов

ovs-vsctl add-br sw-cod

ovs-vsctl add-port sw-cod ens18-23

создай в ifaces директорию для sw-cod

mkdir /etc/net/ifaces/sw-cod

в ней надо писнуть в options

TYPE=ovsbr

BOOTPROTO=static

CONFIG_IPV4=yes

добавить ipv4address с айпи 172.16.1.0/23

добавить ipv4route с default via 172.16.0.254

на фв hq создай интерфейсы с правильными айпи по таблице

СОЗДАВАТЬ ИНТЕРФЕЙС БЕЗ АЙПИ А ПОТОМ ВРЕМЯНКУ А ТАМ УЖЕ КАК БЫ ДА

короче с адм идёт тегированный трафик поэтому там нужна времянка

ip addr flush dev eth1 (или какой там интерфейс смотрит внутрь)

ip link add link eth1 name eth1.20 type vlan id 20

ip addr add 10.1.1.33/28 dev eth1.20

ip link set eth1 up

ip link set eth1.20 up

потом делай вланы да

cоздай шлюз по умолчанию в назначении «любой» а в шлюз впиши шлюз.

создать пользователя нетворк и пропустить его в авторизации

возможны траблы с днсом потыкай может быть надо отключить перехват.

возможно придётся сделать гре туннели в идеко

1. tunnel.1

wan

удал: 84.212.78.78

ip: 10.0.1.1/30

2.tunnel.2

wan

удал:34.95.33.33

ip:10.0.2.1/30

создать маршуты

10.2.0.0/16 шлюз 10.0.1.2

172.16.0.0/23 шлюз 10.0.2.2

ИХ НАДО ПРИВЯЗАТЬ К ПРАВИЛЬНЫМ СООТВЕТСТВУЮЩИМ ИНТЕРФЕЙСАМ

Настройка гре и оспф

гре

на ртр-бр:

interface tunnel.1

ip address 10.0.1.2/30

ip tunnel 84.212.78.78 63.27.18.18 mode gre

ex

interface tunnel.3

ip address 10.0.3.1/30

ip tunnel 84.212.78.78 34.95.33.33 mode gre

exit

на цод

conf t

interface tunnel.2

ip address 10.0.2.2/30

ip tunnel 34.95.33.33 63.27.18.18 mode gre

ex

interface tunnel.3

ip address 10.0.3.2/30

ip tunnel 34.95.33.33 84.212.78.78 mode gre

ex

оспф

на ртр бр

interface tunnel.3

ip ospf mtu-ignore

ip ospf network point-to-point

ex

router ospf 1

distance 210

ospf router-id 10.0.3.1

network 10.0.3.0/30 area 0

network 10.2.0.0/30 area 0

default-information originate always

ex

wr

на цод

interface tunnel.3

ip ospf mtu-ignore

ip ospf network point-to-point

ex

router ospf 1

distance 210

redistribute static

ospf router-id 10.0.3.2

network 10.0.3.0/30 area 0

network 172.16.0.0/23 area 0

exit

write

пока на цод создать статику на фв

ip route 10.1.0.0/16 10.0.2.1

после этого на фв добавь правило трафик forward из tunnel.2 в подсеть 10.1.0.0/16

srv-hq

задать днс по нужде

apt-get update && apt-get install freeipa-server bind freeipa-server-dns -y

запуск установки

ipa-server-install —hostname=srv-hq.au.team —domain=au.team —realm=AU.TEAM —setup-dns —auto-forwarders -a P@ssw0rd -p P@ssw0rd -U

скрипт на создание 15 пользователей но он говно возможно потом заменю

echo «P@ssw0rd» | kinit admin

ipa group-add FreeIPA-Users

for g in hq br cod; do

ipa group-add $g

ipa group-add-member FreeIPA-Users —groups=$g

for i in {1..5}; do

usr=»${g}.user${i}»

ipa user-add $usr —first=$g —last=user$i —password

echo «P@ssw0rd» | ipa passwd $usr

ipa group-add-member $g —users=$usr

done

done

проверка

ipa user-find | grep «User login:» | wc -l    — ответ должен быть 15

dig SRV _kerberos._tcp.au.team      — должен резолвить srv-hq

возможно нужно добавить форвардер

ipa dnsconfig-mod —forwarder=8.8.8.8

ссылка на 1.14.5 терраформ — https:/hashicorp-releases.yandexcloud.net/terraform/1.14.5/terraform_1.14.5_linux_amd64.zip

унзипнуть и переместить terraform в /usr/local/bin потом проверить через terraform version

cоздать в домашней папке рабочюю директорию terraform

создай .terraformrc с яндекс диском с скриптом мол

provider_installation {

network_mirror {

url = «https://terraform-mirror.yandexcloud.net/»

include =[«registry.terraform.io/*/*»]

}

direct {

exclude =[«registry.terraform.io/*/*»]

}

}

ПОЛНОСТЬЮ ВРОДЕ РАБОЧИЙ СКРИПТ!!!

terraform {

required_providers {

freeipa = {

source  = «camptocamp/freeipa»

version = «1.0.0»

}

}

}

provider «freeipa» {

host     = «srv-hq.au.team»

username = «admin»

password = «P@ssw0rd»

insecure = true

}

# ==========================================

# 1. ЗОНЫ ОБРАТНОГО ПРОСМОТРА (REVERSE ZONES)

# Здесь провайдер требует аргумент «zone_name»

# ==========================================

resource «freeipa_dns_zone» «rev_hq» {

zone_name = «1.1.10.in-addr.arpa.»

}

resource «freeipa_dns_zone» «rev_br» {

zone_name = «1.2.10.in-addr.arpa.»

}

resource «freeipa_dns_zone» «rev_cod0» {

zone_name = «0.16.172.in-addr.arpa.»

}

resource «freeipa_dns_zone» «rev_cod1» {

zone_name = «1.16.172.in-addr.arpa.»

}

# ==========================================

# 2. ПРЯМЫЕ ЗАПИСИ (A)

# Здесь провайдер требует «dnszoneidnsname» Рё «idnsname»

# ==========================================

resource «freeipa_dns_record» «a_records» {

for_each = {

«fw-hq»    = «10.1.1.1»

«srv-hq»   = «10.1.1.10»

«adm-hq»   = «10.1.1.46»

«rtr-br»   = «10.2.0.1»

«fw-br»    = «10.2.1.14»

«srv-br»   = «10.2.1.10»

«rtr-cod»  = «172.16.1.254»

«sw-cod»   = «172.16.1.0»

«ha1-cod»  = «172.16.0.1»

«ha2-cod»  = «172.16.0.2»

«srv1-cod» = «172.16.1.1»

«srv2-cod» = «172.16.1.2»

«srv3-cod» = «172.16.1.3»

}

dnszoneidnsname = «au.team.»

idnsname        = each.key

records         = [each.value]

type            = «A»

}

# ==========================================

# 3. ОБРАТНЫЕ ЗАПИСИ (PTR)

# ==========================================

resource «freeipa_dns_record» «ptr_hq» {

for_each = {

«1»  = «fw-hq.au.team.»

«10» = «srv-hq.au.team.»

«46» = «adm-hq.au.team.»

}

dnszoneidnsname = freeipa_dns_zone.rev_hq.zone_name

idnsname        = each.key

records         = [each.value]

type            = «PTR»

}

resource «freeipa_dns_record» «ptr_br» {

for_each = {

«14» = «fw-br.au.team.»

«10» = «srv-br.au.team.»

}

dnszoneidnsname = freeipa_dns_zone.rev_br.zone_name

idnsname        = each.key

records         = [each.value]

type            = «PTR»

}

resource «freeipa_dns_record» «ptr_cod0» {

for_each = {

«1» = «ha1-cod.au.team.»

«2» = «ha2-cod.au.team.»

}

dnszoneidnsname = freeipa_dns_zone.rev_cod0.zone_name

idnsname        = each.key

records         = [each.value]

type            = «PTR»

}

resource «freeipa_dns_record» «ptr_cod1» {

for_each = {

«254» = «rtr-cod.au.team.»

«0»   = «sw-cod.au.team.»

«1»   = «srv1-cod.au.team.»

«2»   = «srv2-cod.au.team.»

«3»   = «srv3-cod.au.team.»

}

dnszoneidnsname = freeipa_dns_zone.rev_cod1.zone_name

idnsname        = each.key

records         = [each.value]

type            = «PTR»

}

потом терраформ инит и аппли

может жаловаться но то что не знает что такое срв hq тогда надо добавить днс 10.1.1.10

проверить можно через dig @10.1.1.10 rtr-cod.au.team +short  (ожидаеться 172.16.1.254)

обратка через dig @10.1.1.10 -x 172.16.1.254 +short (ожидается rtr-cod.au.team)

зайти в /etc/bind/options.conf и поменять query, query cache и recursion на any

дхцпс на срв хк

apt-get install kea-dhcp -y

конфиг kea-dhcp4

{

«Dhcp4»: {

«interfaces-config»: {

«interfaces»: [ «*» ]

},

«lease-database»: {

«type»: «memfile»,

«name»: «/var/lib/kea/kea-leases4.csv»,

«lfc-interval»: 3600

},

«subnet4»: [

{

«id»: 1,

«subnet»: «10.1.2.0/24»,

«pools»: [

{ «pool»: «10.1.2.128 — 10.1.2.254» }

],

«option-data»: [

{ «name»: «routers», «data»: «10.1.2.1» },

{ «name»: «domain-name-servers», «data»: «10.1.1.10» },

{ «name»: «domain-name», «data»: «au.team» }

]

}

]

}

}

на файрволе зайти в dhcp и поставить релай на cli hq интерфейс, и айпи дхцп сервера 10.1.1.10

возможно надо как то разрешить файрвол в сторону фв из цод? через форвард и через туннел 2 обязательно

если во внешних каталогах не буде freeipa, нужно обновить ideco

домен au.team, имя компа fw-hq

если будет пиздеть что хост занят, надо удалить на фриипа

ipa host-del fw-hq.au.team

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

ДЕНЬ 2

nextcloud skip пока что

ансибл

на адм хк

ssh-keygen -t rsa

перекид на все 5 серваков с помощью ssh-copy-id root@xxxx

ДО ЭТОГО НАДО НА ВСЕХ РАЗРЕШИТЬ РУТ ЛОГИН И ПОТОМ ПЕРЕКИД А ПОТОМ ВНОВЬ ЗАПРЕТИТЬ

apt-get update apt-get install python3-module-pip -y

exit из рута

mkdir home/user/ansible

cd ansible

python3 -m venv venv/ansible

source venv/ansible/bin/activate

pip install ansible

mkdir -p ~/ansible/inventories/production

cd inventories/production

nano hosts

скрипт

all:

children:

proxy:

hosts:

ha1-cod.au.team:

ha2-cod.au.team:

server:

hosts:

srv1-cod.au.team:

srv2-cod.au.team:

srv3-cod.au.team:

vars:

ansible_user: root

ansible_ssh_private_key_file: ~/.ssh/id_rsa

ansible_ssh_common_args: ‘-o StrictHostKeyChecking=no’

cd в ansible

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

из папки ansible

команда для запуска плейбуков: ansible-playbook -i inventories/production/hosts playbook1там сям

создать сертификаt

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout files/www.key -out files/www.crt

cat files/www.crt files/www.key > files/www.pem

в случае фейла с установкой заменить builtin.apt на builtin.package

nano playbook1_keepalived.yml

— name: Configure Keepalived for VIP

hosts: proxy

become: yes

tasks:

— name: Install keepalived

ansible.builtin.apt:

name: keepalived

state: present

update_cache: yes

— name: Deploy keepalived configuration

ansible.builtin.template:

src: keepalived.conf.j2

dest: /etc/keepalived/keepalived.conf

notify: Restart keepalived

handlers:

— name: Restart keepalived

ansible.builtin.service:

name: keepalived

state: restarted

enabled: yes

конфиг для 1 keepalived.conf.j2

если на обоих серваках одинаковое имя интерфеса то линия должна быть

interface ens18

конфиг

global_defs {

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

# Логика для MASTER/BACKUP

state {{ ‘MASTER’ if ‘ha1’ in inventory_hostname else ‘BACKUP’ }}

# ЛОГИКА ДЛЯ ИНТЕРФЕЙСОВ (то, что ты сказал)

interface {{ ‘ens18’ if ‘ha1’ in inventory_hostname else ‘ens19’ }}

virtual_router_id 51

# Приоритет (у Master выше)

priority {{ 100 if ‘ha1’ in inventory_hostname else 90 }}

advert_int 1

virtual_ipaddress {

172.16.1.253/23

}

}

это playbook2_web.yml

может жаловаться на отсутствие /var/www/html, чтоб не трахать мозги просто сделай их вручную

— name: Deploy Angie Web Servers

hosts: server

become: yes

tasks:

— name: Install Angie

ansible.builtin.apt:

name: angie

state: present

update_cache: yes

— name: Create index.html with server name

ansible.builtin.copy:

content: «<h1>Served by {{ inventory_hostname }} with Angie!</h1>»

dest: /var/www/html/index.html

— name: Ensure Angie is running

ansible.builtin.service:

name: angie

state: started

enabled: yes

можно проверить работу с помощью curl http://xxx-cod.au.team

дальше 3 playbook

убедись что днс поинт на мой днс есть

playbook3_haproxy.yml

создание CA и сертификата

cd ansible/files

openssl genrsa -out ca.key 2048

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt   — CN = au.team

openssl genrsa -out www.key 2048

openssl req -new -key www.key -out www.csr        —   CN  = www.au.team

создай ext

nano www.ext

authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature,

nonRepudiation, keyEncipherment,

dataEncipherment

subjectAltName = @alt_names

[alt_names]

DNS.1 = www.au.team

IP.1 = 172.16.1.253

после чего выпуск

openssl x509 -req -in www.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.crt -days 365 -sha256 -extfile www.ext

cat www.crt www.key > www.pem

от su

cp ca.crt /etc/pki/ca-trust/source/anchors/au-team-ca.crt

update-ca-trust

после чего создаём плейбук и запускаем

— name: Setup HAProxy with HTTPS

hosts: proxy

become: yes

tasks:

— name: Install HAProxy

ansible.builtin.package:

name: haproxy

state: present

— name: Ensure HAProxy group exists

ansible.builtin.group:

name: haproxy

state: present

system: yes

— name: Ensure HAProxy user exists

ansible.builtin.user:

name: haproxy

group: haproxy

state: present

system: yes

shell: /sbin/nologin

— name: Create SSL directory

ansible.builtin.file:

path: /etc/ssl/haproxy

state: directory

mode: ‘0755’

— name: Copy SSL PEM file

ansible.builtin.copy:

src: files/www.pem

dest: /etc/ssl/haproxy/www.pem

mode: ‘0600’

notify: restart haproxy

— name: Configure HAProxy

ansible.builtin.copy:

dest: /etc/haproxy/haproxy.cfg

content: |

global

log /dev/log local0

log /dev/log local1 notice

user haproxy

group haproxy

daemon

defaults

log     global

mode    http

option  httplog

timeout connect 5000

timeout client  50000

timeout server  50000

frontend http_front

bind *:80

http-request redirect scheme https unless { ssl_fc }

bind *:443 ssl crt /etc/ssl/haproxy/www.pem

default_backend web_servers

backend web_servers

balance roundrobin

server srv1 srv1-cod.au.team:80 check

server srv2 srv2-cod.au.team:80 check

server srv3 srv3-cod.au.team:80 check

listen stats

bind *:9000

stats enable

stats uri /haproxy_stats

notify: restart haproxy

handlers:

— name: restart haproxy

ansible.builtin.service:

name: haproxy

state: restarted

enabled: yes

должен быть редирект на https  при заходе через http, должно быть защищено. возможно надо будет добавить в /etc/hosts

надо скачать какой то идеко клиент на аут

я хз

добавить правило в форвард на зону источника исп на тот же адресс 10.1.0.0/16 чтоб впускаь на всякий случай сигналы. хз надо или нет.

честно без понятие как это говно должно работать