НАСТРОЙКА СЕТИ
ISP:
apt-get install iptables
в /etc/sysctl.conf:
net.ipv4.ip_forward=1
терминал:
sysctl -p
скрипт nano /etc/iptables.sh:
#!/bin/bash
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
iptables-save > /etc/iptables.rules
в /etc/network/interfaces:
post-up iptables-restore < /etc/iptables.rules
терминал:
chmod 0740 /etc/iptables.sh
./iptables.sh
systemctl restart networking
НЕ ЗАБЫТЬ ПРОПИСАТЬ ГЕТВЕЙ
сделать то же самое на роутерах для серверов
2. Настройка локальных сетей
HQ-RTR:
apt-get install vlan
modprobe 8021q
lsmod | grep 8021q
в /etc/network/interfaces:
auto ens37
iface ens37 inet manual
auto ens37.100
iface ens37.100 inet static
address 192.168.100.1
netmask 255.255.255.240
vlan-raw-device ens37
auto ens37.200
iface ens37.200 inet static
address 192.168.200.1
netmask 255.255.255.240
vlan-raw-device ens37
auto ens37.999
iface ens37.999 inet static
address 192.168.99.1
netmask 255.255.255.248
vlan-raw-device ens37
HQ-SRV:
auto ens33
iface ens33 inet manual
auto ens33.100
iface ens33.100 inet static
address 192.168.100.2
netmask 255.255.255.240
gateway 192.168.100.1
vlan-raw-device ens33
HQ-CLI:
auto ens33
iface ens33 inet manual
auto ens33.200
iface ens33.200 inet dhcp
vlan-raw-device ens33
3. Настройка DHCP
HQ-RTR:
apt-get update
apt-get install -y vlan isc-dhcp-server
/etc/default/isc-dhcp-server:
INTERFACESv4="ens37.200"
/etc/dhcp/dhcpd.conf:
option domain-name "au-team.irpo";
option domain-name-servers 192.168.100.2;
subnet 192.168.200.0 netmask 255.255.255.224 {
range 192.168.200.10 192.168.200.30;
option domain-name-servers 192.168.100.2;
option routers 192.168.200.1;
option subnet-mask 255.255.255.224;
}
терминал:
systemctl restart isc-dhcp-server
HQ-CLI:
modprobe 8021q
/etc/network/interfaces:
auto ens33
iface ens33 inet manual
auto ens33.200
iface ens33.200 inet dhcp
vlan-raw-device ens33
терминал:
ifup ens33.200
4. Создание пользователей
useradd -m -u 2026 sshuser
echo "sshuser:P@ssw0rd" | chpasswd
visudo
visudo:
sshuser ALL=(ALL) NOPASSWD:ALL
5. Настройка SSH
apt-get install ssh
/etc/ssh/sshd_config:
Port 2026
AllowUsers sshuser
MaxAuthTries 2
Banner /etc/issue.net
терминал:
echo "Authorized access only" > /etc/issue.net
systemctl restart sshd
6. IP ТУННЕЛЬ
nano /etc/gre.tun
HQ-RTR:
#!/bin/bash
ip tunnel add gre1 mode gre remote 172.16.2.2 local 172.16.1.2 ttl 255
ip addr add 10.10.10.1/30 peer 10.10.10.2/30 dev gre1
ip link set gre1 up
BR-RTR:
#!/bin/bash
ip tunnel add gre1 mode gre remote 172.16.1.2 local 172.16.2.2 ttl 255
ip addr add 10.10.10.2/30 peer 10.10.10.1/30 dev gre1
ip link set gre1 up
терминал:
chmod 0740 /etc/gre.tun
/etc/gre.tun
в /etc/network/interfaces добавляем постап:
post-up /etc/gre.tun
7. Динамическая маршрутизация
HQ-RTR, BR-RTR:
apt-get install frr
/etc/frr/daemons:
ospfd=yes
терминал:
systemctl restart frr
HQ-RTR:
/etc/frr/frr.conf:
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
interface gre1
ip address 10.10.10.1/30
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 P@ssw0rd
!
router ospf
network 10.10.10.0/30 area 0.0.0.0
network 192.168.100.0/28 area 0.0.0.0
network 192.168.200.0/27 area 0.0.0.0
!
line vty
!
BR-RTR:
/etc/frr/frr.conf:
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
interface gre1
ip address 10.10.10.2/30
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 P@ssw0rd
!
router ospf
network 10.10.10.0/30 area 0.0.0.0
network 192.168.150.0/28 area 0.0.0.0
!
line vty
!
терминал:
systemctl restart frr
vtysh -c "show ip ospf nei"
Статус должен быть full
10. DNS
HQ-SRV:
apt-get install bind9 bind9utils
/etc/bind/named.conf.options:
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
8.8.4.4;
};
recursion yes;
allow-query { any; };
listen-on { any; };
allow-recursion { any; };
dnssec-validation auto;
….
};
терминал:
mkdir /etc/bind/zones
nano /etc/bind/zones/db.au-team.irpo:
$TTL 86400
@ IN SOA hq-srv.au-team.irpo. root.au-team.irpo. (
2026022201 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
@ IN NS hq-srv.au-team.irpo.
hq-srv IN A 192.168.100.2
hq-rtr IN A 192.168.100.1
hq-cli IN A 192.168.200.10
br-srv IN A 192.168.150.2
br-rtr IN A 192.168.150.1
docker IN A 172.16.1.1
web IN A 172.16.2.1
/etc/bind/named.conf.local:
zone "au-team.irpo" {
type master;
file "/etc/bind/zones/db.au-team.irpo";
};
zone "100.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.100";
};
zone "200.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.200";
};
/etc/bind/zones/db.192.168.100:
$TTL 86400
@ IN SOA hq-srv.au-team.irpo. root.au-team.irpo. (
2026022201
3600
1800 604800 86400 )
@ IN NS hq-srv.au-team.irpo.
1 IN PTR hq-rtr.au-team.irpo.
2 IN PTR hq-srv.au-team.irpo.
/etc/bind/zones/db.192.168.200:
$TTL 86400
@ IN SOA hq-srv.au-team.irpo. root.au-team.irpo. (
2026022201
3600
1800 604800 86400 )
@ IN NS hq-srv.au-team.irpo.
10 IN PTR hq-cli.au-team.irpo.
проверки текста и применение:
named-checkconf
named-checkzone au-team.irpo /etc/bind/zones/db.au-team.irpo
named-checkzone 100.168.192.in-addr.arpa /etc/bind/zones/db.192.168.100
named-checkzone 200.168.192.in-addr.arpa /etc/bind/zones/db.192.168.200
systemctl restart bind9
systemctl enable bind9
на машинах в /etc/resolv.conf:
nameserver 192.168.100.2
с IP на домен только hq-rtr, hq-srv, hq-cli. Остальные только с домена на IP.
проверка DNS:
nslookup hq-srv.au-team.irpo
nslookup 192.168.100.2
11. Время
timedatectl set-timezone Europe/Moscow
МОДУЛЬ 2
1. контроллер домена
HQ-SRV:
apt-get install samba winbind krb5-config
rm /etc/samba/smb.conf
samba-tool domain provision
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl unmask samba-ad-dc
systemctl enable samba-ad-dc
systemctl start samba-ad-dc
samba-tool group add hq
for i in {1..5}; do
samba-tool user create hquser$i "P@ssw0rd"
samba-tool group addmembers hq hquser$i
done
HQ-CLI /etc/resolv.conf:
nameserver = 192.168.150.2
терминал:
apt-get install realmd sssd adcli
realm discover au-team.irpo
realm join au-team.irpo -U administrator
pam-auth-update --enable mkhomedir
realm permit -g hq@au-team.irpo
visudo:
%hq@au-team.irpo ALL=(ALL) /usr/bin/cat, /usr/bin/grep, /usr/bin/id
2. RAID
добавляем 2 диска на HQ-SRV
reboot
lsblk
apt-get install -y mdadm
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
cp /etc/mdadm/mdadm.conf /etc/mdadm.conf
update-initramfs -u
fdisk /dev/md0
# Нажать: n
# Нажать: w
mkfs.ext4 /dev/md0
mkdir /raid
В nano /etc/fstab:
/dev/md0 /raid ext4 defaults 0 0
терминал:
mount -a
проверки:
df -h | grep /raid
blkid /dev/md0
3. NFS
HQ-SRV:
apt-get install nfs-kernel-server
mkdir -p /raid/nfs
chown nobody:nogroup /raid/nfs
chmod 777 /raid/nfs
В nano /etc/exports:
/raid/nfs 192.168.200.10/27(rw,sync,no_subtree_check)
терминал:
exportfs -a
HQ-CLI:
apt-get install nfs-common
mkdir -p /mnt/nfs
В nano /etc/fstab:
192.168.100.2:/raid/nfs /mnt/nfs defaults 0 0
терминал:
mount -a
4. CHRONY
ISP:
apt-get install chrony
в nano /etc/chrony/chrony.conf (в конце):
#pool 2.debian.pool.ntp.org iburst
...
pool pool.ntp.org iburst
local stratum 5
allow 0.0.0.0/0
терминал:
systemctl restart chrony
HQ-SRV, HQ-CLI, BR-RTR, BR-SRV:
apt-get install chrony
в nano /etc/chrony/chrony.conf:
#pool 2.debian.pool.ntp.org iburst
...
server 172.16.1.1 iburst
терминал:
systemctl restart chrony
chronyc sources
5. ANSIBLE
BR-SRV:
apt-get install ansible sshpass
mkdir -p /etc/ansible
nano /etc/ansible/ansible.cfg:
[defaults]
inventory = /etc/ansible/hosts
host_key_checking = False
nano /etc/ansible/hosts:
[all:vars]
ansible_password=P@ssw0rd
[routers]
HQ-RTR ansible_host=192.168.100.1 ansible_user=net_admin
BR-RTR ansible_host=192.168.150.1 ansible_user=net_admin
[servers]
HQ-SRV ansible_host=192.168.100.2 ansible_user=sshuser
[clients]
HQ-CLI ansible_host=192.168.200.10 ansible_user=ansible
HQ-SRV, HQ-CLI, HQ-RTR, BR-RTR:
apt-get install openssh-server python3
ssh-keygen -A
systemctl restart ssh
reboot
BR-SRV:
ansible all -m ping
6. DOCKER
BR-SRV:
apt-get install docker.io docker-compose
mkdir -p /mnt/additional
mount /home/user/Загрузки/Additional.iso /mnt/additional
docker load -i /mnt/additional/docker/mariadb_latest.tar
docker load -i /mnt/additional/docker/site_latest.tar
mkdir -p /opt/testapp
cd /opt/testapp
nano docker-compose.yml:
version: '3.8'
services:
testapp:
image: site:latest
container_name: testapp
ports:
- "8080:8000"
depends_on:
- db
environment:
- DB_HOST=db
- DB_NAME=testdb
- DB_TYPE=maria
- DB_USER=test
- DB_PASS=P@ssw0rd
- SERVER_PORT=8080
restart: unless-stopped
db:
image: mariadb:10.11
container_name: db
environment:
MYSQL_ROOT_PASSWORD: P@ssw0rd
MYSQL_DATABASE: testdb
MYSQL_USER: test
MYSQL_PASSWORD: P@ssw0rd
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
db_data:
терминал:
docker-compose up -d
docker ps
7. APACHE2
HQ-SRV:
mkdir -p /mnt/additional
mount /dev/cdrom /mnt/additional
apt-get update
apt-get install -y apache2 mariadb-server php php-mysql
терминал:
mysql -e "CREATE DATABASE webdb;"
mysql -e "CREATE USER 'web'@'localhost' IDENTIFIED BY 'P@ssw0rd';"
mysql -e "GRANT ALL PRIVILEGES ON webdb.* TO 'web'@'localhost';"
mysql -e "FLUSH PRIVILEGES;"
mysql webdb < /mnt/additional/web/dump.sql
rm -f /var/www/html/index.html
cp /mnt/additional/web/index.php /var/www/html/
cp -r /mnt/additional/web/logo.png /var/www/html/
/var/www/html/index.php:
- База данных (db_name или database): webdb
- Пользователь (db_user или username): web
- Пароль (db_pass или password): P@ssw0rd
- Сервер (host): обычно localhost или 127.0.0.1.
systemctl restart apache2
8. ПРОБРОС ПОРТОВ
HQ-RTR:
В nano /etc/network/if-up.d/nat-rules:
#!/bin/bash
iptables -t nat -F
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 8080 -j DNAT --to 192.168.100.2:80
iptables -t nat -A POSTROUTING -o ens37.100 -p tcp --dport 80 -j SNAT --to 192.168.100.1
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 2026 -j DNAT --to 192.168.100.2:2026
iptables -t nat -A POSTROUTING -o ens37.100 -p tcp --dport 2026 -j SNAT --to 192.168.100.1
BR-RTR:
#!/bin/bash
iptables -t nat -F
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 8080 -j DNAT --to 192.168.150.2:8080
iptables -t nat -A POSTROUTING -o ens37 -p tcp --dport 8080 -j SNAT --to 192.168.150.1
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 2026 -j DNAT --to 192.168.150.2:2026
iptables -t nat -A POSTROUTING -o ens37 -p tcp --dport 2026 -j SNAT --to 192.168.150.1
применение:
chmod +x /etc/network/if-up.d/nat-rules
systemctl restart networking
9.NGINX
ISP:
apt-get install nginx
в nano /etc/nginx/sites-available/web:
server {
listen 80;
server_name web.au-team.irpo;
location / {
proxy_pass http://172.16.1.2:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
в nano /etc/nginx/sites-available/docker:
server {
listen 80;
server_name docker.au-team.irpo;
location / {
proxy_pass http://172.16.2.2:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
терминал:
ln -s /etc/nginx/sites-available/web /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/docker /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t
systemctl restart nginx
10. АУТЕНТИФИКАЦИЯ
ISP:
apt-get install -y apache2-utils
htpasswd -b -c /etc/nginx/.htpasswd WEB P@ssw0rd
в nano /etc/nginx/sites-available/web:
location / {
# ....
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
}
терминал:
nginx -t
systemctl restart nginx
МОДУЛЬ 3
6. RSYSLOG
HQ-SRV:
apt-get install rsyslog
nano /etc/rsyslog.conf:
module(load="imudp")
input(type="imudp" port="514")
в GLOBAL DIRECTIVES:
$template RemoteLogs,"/opt/%HOSTNAME%/syslog.log"
if ($fromhost-ip != '127.0.0.1') then {
*.* ?RemoteLogs
stop
}
systemctl restart rsyslog
HQ-RTR, BR-RTR, BR-SRV:
apt-get install rsyslog
nano /etc/rsyslog.d/99-remote.conf
вписать:
*.warning @192.168.100.2:514
терминал:
systemctl restart rsyslog
ротация:
nano /etc/logrotate.d/rsyslog-remote:
/opt/*/*.log {
weekly
rotate 4
minsize 10M
compress
missingok
notifempty
create 0640 root root
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
проверка
на клиентах вбиваем:
logger -p user.warning "TEST WARNING"
на HQ-SRV (должны создаться папки клиентов):
ls -l /opt/
ротация:
logrotate -f /etc/logrotate.d/rsyslog-remote
проверка на создание архивов:
ls -l /opt/hq-rtr
ls -l /opt/br-rtr
ls -l /opt/br-srv