NetworkManager — популярный инструмент управления сетевыми подключениями в Linux, имеет удобный графический интерфейс как для Gnome, так и для KDE, но в этой инструкции будет рассмотрена настройка Network Manager в консоли с помощью утилиты nmcli (command-line tool for controlling NetworkManager)
В общем виде синтаксис выглядит так:
nmcli <options> <section> <action>
Переименовать имя соединения:
nmcli con mod "Wired connection 1" con-name "lan"
Установка адреса в ручном режиме:
nmcli con mod ens33 ipv4.method manual
Получить IP адрес автоматически через DHCP:
nmcli con mod ens33 ipv4.method auto
Установить IP адрес:
nmcli con mod ens33 ipv4.addresses 192.168.100.25/24
Удалить IP адрес:
nmcli con mod ens33 ipv4.addresses ""
Установить шлюз по умолчанию:
nmcli con mod ens33 ipv4.gateway 20.20.20.1
Удалить шлюз по умолчанию:
nmcli con mod ens33 ipv4.gateway ""
Установить DNS:
nmcli con mod ens33 ipv4.dns 8.8.8.8
Удалить DNS адрес:
nmcli con mod ens33 ipv4.dns ""
Включить интерфейс:
nmcli con up ens33
Выключить интерфейс:
nmcli con down ens33
Добавить дополнительный IP адрес:
nmcli con mod ens33 +ipv4.addresses "192.168.180.189/24"
Удалить IP адрес (второй вариант):
nmcli con mod ens33 -ipv4.addresses "192.168.8.189/24"
Добавить VLAN c тегом 21 на физический интерфейс ens33 (InterVLAN):
nmcli con add type vlan con-name VLAN21 ifname VLAN21 dev ens33 id 21
Установить IP адрес VLAN интерфейсу:
nmcli con mod VLAN21 ipv4.addresses 172.10.10.11/24
Cостояние всех интерфейсов:
nmcli dev status
Краткое состоянии всех интерфейсов:
nmcli -t dev
Cостояние физических интерфейсов и их UUID:
nmcli con show
Информация о конкретном интерфейсе:
nmcli dev show ens33
Информация о соединении интерфейса:
nmcli con show ens33
Посмотреть таблицу маршрутизации:
ip route
Добавить временный маршрут на сеть 192.168.2.0/24 через 192.168.100.1:
ip route add 192.168.2.0/24 via 192.168.100.1
Изменить временный маршрут:
ip route change 192.168.2.0/24 via 192.168.8.10
Добавить второй временный шлюз для сети 192.168.2.0/24 (балансировка маршрута):
ip route append 192.168.2.0/24 via 192.168.8.11
Удалить временный маршрут на сеть 192.168.2.0/24 через 192.168.8.12:
ip route del 192.168.2.0/24 via 192.168.8.11
Удалить временный маршрут на сеть 192.168.2.0/24 :
ip route del 192.168.2.0/24
Добавить маршрут на сеть 192.168.2.0/24 через 192.168.8.2 на интерфейсе ens33:
nmcli con mod ens33 +ipv4.routes "192.168.2.0/24 192.168.8.54" nmcli con up ens33
Удалить маршрут на сеть 192.168.2.0/24 через 192.168.8.2 на интерфейсе ens33:
nmcli con mod ens33 -ipv4.routes "192.168.2.0/24 192.168.8.54" nmcli con up ens33
Изменить метрику на интерфейсе:
nmcli con mod ens33 ipv4.route-metric 400 nmcli con up ens33
Изменить mtu на интерфейсе:
nmcli con mod ens33 ethernet.mtu 1600 nmcli con up ens33
Вывести на экран настройки часового пояса:
timedatectl
Список временных зон:
timedatectl list-timezones
Установить временную зону «Ташкент UTC/GMT +05 UTC»:
timedatectl set-timezone Asia/Tashkent
Установка NTP
sudo apt install ntp -y
Статус службы:
systemctl status ntp
Параметры конфигурации /etc/ntp.conf
По умолчанию NTP сервер уже пред-настроен на глобально публичные сервера и можно ничего не трогать, но если вы хотите настроить его под себя и указать внутренние сервера то, необходимо закомментировать строки — 23-26 там где pool 0,1,2,3 и вписать свой сервер:
sudo nano /etc/ntp.conf
Сохраняем настройки и перезагружаем службу:
sudo systemctl restart ntp
Проверка синхронизации с указанными серверами:
ntpq -p
Для ограничение круга клиентов можно (разрешить синхронизацию для узлов в сети 192.168.1.0/24):
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
где опции:
NTP использует — протокол UDP порт 123
Если у вас не установлена утилита tcpdump то:
sudo apt install tcpdump -y
Далее мониторим UDP порт 123 на входящем интерфейсе (со стороны NTP клиентов):
sudo tcpdump -i eth0 -p udp port 123
Подробный мануал
Установка необходимых пакетов:
sudo apt install bind9 dnsutils -y
если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status bind9
Файлы конфигурации расположены в директории /etc/bind:
cd /etc/bind/
Server IP: 192.168.100.174
1) Редактируем файл общих опций:
sudo nano named.conf.options
содержимое:
options { directory "/var/cache/bind"; listen-on port 53 { 192.168.100.174; 127.0.0.1; }; recursion yes; allow-query { any; }; allow-transfer { 192.168.100.175;}; };
2) Редактируем файл опций локальной зоны:
sudo nano named.conf.local
содержимое:
zone "mic" in { type master; file "/etc/bind/db.mic"; }; zone "100.168.192.in-addr.arpa" in { type master; file "/etc/bind/db.mic.arpa"; };
3) Создадим файл зоны прямого преобразования:
sudo touch db.mic sudo nano db.mic
содержимое:
$TTL 34600 @ IN SOA server. root.server. ( 2021092001 ; Серийный номер зоны 2H ; Синхронизация каждые 30M ; Повтор синхронизации 1W ; Период повтора 1D ; Кэш НЕ правильных запросов ) @ IN NS server. server IN A 192.168.100.183 khasan IN CNAME server hurshid IN A 192.168.100.20 ramil IN A 192.168.100.21 bekzod IN A 192.168.100.22
4) Создадим файл зоны обратного преобразования:
sudo touch db.mic.arpa sudo nano db.mic.arpa
Содержимое:
$TTL 34600 @ IN SOA server. root.server. ( 2021092001 ; Серийный номер зоны 2H ; Синхронизация каждые 30M ; Повтор синхронизации 1W ; Период повтора 1D ; Кэш НЕ правильных запросов ) @ IN NS server. server IN A 192.168.100.183 183 IN PTR server.mic. 20 IN PTR hurshid.mic. 21 IN PTR ramil.mic. 22 IN PTR bekzod.mic.
5) Для применений изменений в конфигурационных файлах, перезапустим службу:
sudo systemctl restart bind9
echo "nameserver 127.0.0.1" |sudo tee /etc/resolv.conf
проверяем прямую зону:
nslookup khasan.mic
nslookup 192.168.100.21
Server IP: 192.168.100.175
1) Редактируем файл общих опций:
sudo nano named.conf.options
содержимое:
options { directory "/var/cache/bind"; listen-on port 53 { 192.168.8.229.175; 127.0.0.1; }; recursion yes; allow-query { any; }; };
2) Редактируем файл опций локальной зоны:
sudo nano named.conf.local
содержимое:
zone "mic" in { type slave; masters {192.168.100.174;}; file "/var/cache/bind/db.mic"; }; zone "100.168.192.in-addr.arpa" in { type slave; masters {192.168.100.174;}; file "/var/cache/bind/db.mic.arpa"; };
3) Для применений изменений в конфигурационных файлах, перезапустим службу:
sudo systemctl restart bind9
если все прошло без ошибок, то вы должны увидеть два новых файла в директории /var/cache/bind/:
echo "nameserver 127.0.0.1" |sudo tee /etc/resolv.conf
проверяем прямую зону:
nslookup ramil.mic
nslookup 192.168.100.22
DNS использует — протокол TCP порт 53 и протокол UDP порт 53
Если у вас не установлена утилита tcpdump то:
sudo apt install tcpdump -y
sudo tcpdump -i eth0 -p tcp port 53
sudo tcpdump -i eth0 -p udp port 53
Установка необходимых пакетов:
sudo apt install isc-dhcp-server
если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
sudo systemctl status isc-dhcp-server.service
1) Первом делом необходимо указать имя интерфейса с чей стороны у нас находиться LAN (интерфейс в сторону DHCP клиентов):
sudo nano /etc/default/isc-dhcp-server
INTERFACESv4="eth0" #INTERFACESv6="" <----- Закомментируем
2) Сделаем копию (backup) конфигурационного файла (На тот случай если понадобиться документация):
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ORIG
3) Опустошим все содержимое:
echo "" |sudo tee /etc/dhcp/dhcpd.conf
4) Откроем файл и приведем его в такой вид:
sudo nano /etc/dhcp/dhcpd.conf
содержимое:
option domain-name "mic"; option domain-name-servers 8.8.8.8, 77.88.8.8; default-lease-time 600; max-lease-time 7200; subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.230 192.168.100.240; option broadcast-address 192.168.100.255; option routers 192.168.100.254; }
5) Запуск и проверка в логах:
sudo systemctl restart isc-dhcp-server.service
Для диагностики можем наблюдать лог файл:
sudo tail -f /var/log/syslog
При необходимости можем добавить статических клиентов (привязка IP адреса к MAC адресу) в конфигурационном файле /etc/dhcp/dhcpd.conf :
host stud1 { hardware ethernet 00:0c:29:c1:7d:a9; fixed-address 192.168.100.170; }
Установка необходимых пакетов:
sudo apt install nfs-kernel-server
если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status nfs-kernel-server.service
1) Создаем папки для шаринга:
sudo mkdir /PublicNFS_r sudo mkdir /PublicNFS_rw sudo mkdir /PublicNFS_no_squash
2) Меняем хозяина для шаринг папок (id nobody)
sudo chown nobody:nogroup /PublicNFS* ls -ld /PublicNFS*
3) Редактируем конфигурационный файл:
sudo nano /etc/exports
добавляем содержание:
/PublicNFS_r *(ro,all_squash,root_squash) /PublicNFS_rw *(rw,all_squash,root_squash) /PublicNFS_no_squash *(rw,no_all_squash,no_root_squash)
где:
4) Применяем настройки конфигурационного файла:
sudo exportfs -arv
Проверка на доступность:
sudo showmount -e 192.168.19.223
Создать директорию для точки монтирования:
sudo mkdir /mnt/folder_ro sudo mkdir /mnt/folder_rw sudo mkdir /mnt/folder_no_sqush_rw
Монтирования:
sudo mount 192.168.19.223:/PublicNFS_r /mnt/folder_ro sudo mount 192.168.19.223:/PublicNFS_rw /mnt/folder_rw sudo mount 192.168.19.223:/PublicNFS_no_squash /mnt/folder_no_sqush_rw
Вывести список примонтированных устройств:
df -hT
Размонтировать:
sudo umount /mnt/folder_ro sudo umount /mnt/folder_rw sudo umount /mnt/folder_no_sqush_rw
Установка необходимых пакетов:
sudo apt install samba
если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status smbd.service
1) Создам группу для пользователей самбы:
sudo groupadd sambausers
2) Создам пользователя pupkin без права на авторизацию через терминал и добавлю его в группу для самбы:
sudo useradd -s /sbin/nologin -g sambausers pupkin
3) Создам пароль для самба пользователя:
sudo smbpasswd -a pupkin
4) Создам ресурс для шаринга:
sudo mkdir -p /network/samba_share sudo chown -R root:sambausers /network/samba_share sudo chmod 2775 /network/samba_share
5) Настраиваю конфиг файл:
sudo nano /etc/samba/smb.conf
Добавляю содержимое:
[nix] comment = sambausers test path = /network/samba_share read only = no valid users = @sambausers
Где:
6) Для применение настроек, перезапускаю службу:
sudo systemctl restart smbd
SMB может работать на верхнем слое сетевой сессии (или ниже) несколькими путями:
Установка необходимых пакетов:
sudo apt install vsftpd
если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status vsftpd.service
1) Создаем директорию для шаринга:
sudo mkdir /var/ftp/
2) Создаем пользователя и расположим домашнюю директорию в /var/ftp:
sudo useradd ramil -m -d /var/ftp/ramil -s /sbin/nologin
3) Пароль для пользователя:
sudo passwd ramil
4) В добавок к правам пользования сервисом пользователя, но без авторизации через терминал, необходимо добавить строку в файл:
echo "/sbin/nologin" |sudo tee -a /etc/shells
chroot_local_user=YES allow_writeable_chroot=YES
write_enable=YES
Создадим директорию для ключей:
sudo mkdir /etc/ssl/private
Генерация SSL ключа и сертификата:
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/vsftpd.key -x509 -days 365 -out /etc/ssl/private/vsftpd.crt
Добавляем строки в конфигурационный файл /etc/vsftpd/vsftpd.conf:
rsa_cert_file=/etc/ssl/private/vsftpd.crt rsa_private_key_file=/etc/ssl/private/vsftpd.key ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH
Перезапускаем службу:
sudo systemctl restart vsftpd
Добавляем строки в конфигурационный файл /etc/vsftpd/vsftpd.conf:
implicit_ssl=YES listen_port=990
Перезапускаем службу:
sudo systemctl restart vsftpd
iptables, firewalld, ufw, nft — это только интерфейс (фреймворк) для управления фаерволом в Linux, там где мы можем писать команды, а он уже интерпретирует самому фаерволу который работает на уровне ядра.
netfilter, nftables — это уже сам фаервол работающий на базе ядра Linux
В Debian 11 по умолчанию работают iptables и nft, из за большого объёма информации первый разберу только в данном мануале, в учебном центре будем рассматривать второй, и то он займет два занятия хотя при этом рассмотрим только 50% возможности, остальные уже требуют глубоких знаний у слушателей и выходит за рамки учебного материала (если начну рассматривать то для большинства студентов микроса буду звучать как на французском, а для продвинутых не составит труда самостоятельно разобрать по мануалом )
iptables — работает в режиме совместимости и ссылается на утилиту iptables-nft, а значит в бэкграунде работает nft
P.S. Компоненты с одинаковым названием, но в разных таблицах — совершенно независимые объекты
Для того чтоб посмотреть текущее состояние правил фаервола, можно набрать команду:
sudo iptables -L
iptables -A INPUT -s 192.168.19.0/24 -j ACCEPT
iptables -A INPUT -s 192.168.19.0/24 -j DROP
iptables -A INPUT -s 192.168.19.224/32 -j DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 192.168.19.224/32 -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -i ens32 -j ACCEPT
iptables -A INPUT -i ens32 -s 192.168.19.0/24 -j ACCEPT
iptables -A INPUT -i ens32 ! -s 192.168.19.0/24 -j ACCEPT
iptables -A INPUT -i ens32 -s 192.168.19.224/32 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i ens32 -s 192.168.19.0/24 -p tcp -m multiport --dports 80,81,443,53 -j ACCEPT
iptables -A INPUT -i ens32 -s 192.168.19.224/32 -m mac --mac-source a0:8c:fd:a3:ed:a4 -p icmp -j ACCEPT
iptables -A INPUT -i ens32 -m mac --mac-source a0:8c:fd:a3:ed:a4 -m time --timestart 12:03 --timestop 16:04 -j ACCEPT
iptables -A INPUT -p icmp -m limit --limit 10/m -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 93:0xffff -j DROP
iptables -A INPUT -p icmp -j LOG --log-prefix "ICMP_TRACE"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ens32 -o ens33
iptables -A FORWARD -i ens33 -o ens32
iptables -A FORWARD -s 192.168.19.0/24 -d 192.168.100.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.100.0.24 -d 192.168.100.0/24 -j ACCEPT
Как правило исходящий трафик со стороны сервера не запрещают, но бывают некоторые исключения, например если на сервер установили «крякнутый» софт, который будет требовать лицензию, и появилось необходимость заблокировать попытку обращения на официальный ресурс
iptables -A OUTPUT -d 192.168.0.50 -j DROP
iptables -t nat -A POSTROUTING -s 192.168.19.0/24 -o ens33 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.19.0/24 -o ens33 -j SNAT --to-source 1.1.1.1
iptables -t nat -A PREROUTING -p tcp --dport 8000 -j DNAT --to-destination 10.7.0.169
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
На протяжении многих лет, соединения Linux систем защищает netfilter. К сожалению, по мере развития этот пакетный фильтр обрастал серьезными проблемами на функциональном уровне и в дизайне. Взвесив все за и против, разработчики решили отказаться от метода костылей и создали новый файер, имя которому nftables. Пакетный фильтр Nftables примечателен унификацией интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов.
nft является родным интерфейсом управления для nftables
Посмотреть список всех правил во всех таблицах:
sudo nft list ruleset
Посмотреть список всех правил во всех таблицах в реальном времени c интервалом 1s:
sudo watch -n 1 nft list ruleset
Полностью очистить набор активных правил можно командой:
nft flush ruleset
Правила могут создаваться с использованием следующего синтаксиса:
nft add rule [<family>] <table> <chain> <matches> <statements>
nft insert rule [<family>] <table> <chain> [position <position>] <matches> <statements>
nft replace rule [<family>] <table> <chain> [handle <handle>] <matches> <statements>
nft replace rule [<family>] <table> <chain> [handle <handle>] <matches> <statements>
nft delete rule [<family>] <table> <chain> [handle <handle>]
Перед тем как создавать правило, необходимо создать таблицу с ее «блокпостами» (правильно конечно называть цепочки, блокпост это уже мое восприятие на картинку в целом)
Создать таблицу фильтр:
nft add table ip filter
Создать блокпост INPUT с разрешающими правилами по умолчанию:
nft add chain ip filter INPUT { type filter hook input priority 0 \; policy accept \; }
Создать блокпост FORWARD с разрешающими правилами по умолчанию:
nft add chain ip filter FORWARD { type filter hook forward priority 0 \; policy accept \; }
Создать блокпост OUTPUT с разрешающими правилами по умолчанию:
nft add chain ip filter OUTPUT { type filter hook output priority 0 \; policy accept \; }
nft add rule ip filter INPUT ip saddr 192.168.19.0/24 counter accept
nft add rule ip filter INPUT ip saddr 192.168.19.0/24 counter drop
nft add rule ip filter INPUT ip saddr 192.168.19.224 counter drop
nft add rule ip filter INPUT ip saddr 192.168.19.224-192.168.19.228 counter drop
nft add rule ip filter INPUT ip saddr { 192.168.5.1, 192.168.5.5, 192.168.5.8 } counter drop
nft add rule ip filter INPUT tcp dport 80 counter accept
nft add rule ip filter INPUT ip saddr 192.168.19.224 tcp dport 22 counter accept
nft add rule ip filter INPUT iifname "ens32" ip protocol tcp tcp dport { 80,81,443,53} counter accept
nft add rule ip filter INPUT iifname "ens32" counter accept
nft add rule ip filter INPUT iifname "ens32" ip saddr 192.168.19.0/24 counter accept
nft add rule ip filter INPUT iifname "ens32" ip saddr != 192.168.19.0/24 counter accept
nft add rule ip filter INPUT iifname "ens32" ip saddr 192.168.19.224 tcp dport 80 counter accept
nft add rule ip filter INPUT iifname "ens32" ip protocol tcp ip saddr 192.168.19.0/24 tcp dport { 80,81,443,53} counter accept
nft add rule ip filter INPUT iifname "ens32" ip protocol icmp ip saddr 192.168.19.224 ether saddr a0:8c:fd:a3:ed:a4 counter accept
nft add rule ip filter INPUT ip protocol icmp limit rate 10/minute burst 5 packets counter accept
nft add rule ip filter INPUT icmp type echo-request meta length 93-65535 counter drop
nft add rule ip filter INPUT ip protocol icmp counter log prefix \"ICMP_TRACE\"
nft add rule ip filter INPUT ct state related,established counter accept
nft add rule ip filter FORWARD iifname "ens32" oifname "ens33" counter accept
nft add rule ip filter FORWARD iifname "ens33" oifname "ens32" counter accept
nft add rule ip filter FORWARD ip saddr 192.168.19.0/24 ip daddr 192.168.100.0/24 counter accept
nft add rule ip filter FORWARD ip saddr 192.168.100.0/24 ip daddr 192.168.100.0/24 counter accept
Остальное все по тому же правилу что и в INPUT, но только не нарушайте логических правил
Как правило исходящий трафик со стороны сервера не запрещают, но бывают некоторые исключения, например если на сервер установили «крякнутый» софт, который будет требовать лицензию, и появилось необходимость заблокировать попытку обращения на официальный ресурс
nft add rule ip filter OUTPUT ip daddr 192.168.0.50 counter drop
Остальное все по тому же правилу что и в INPUT, но только не нарушайте логических правил
Создать таблицу NAT
nft add table ip nat
Создать блокпост POSTROUTING с разрешающими правилами по умолчанию
nft add chain nat postrouting { type nat hook postrouting priority 0 \; policy accept \; }
Создать блокпост PREROUTING с разрешающими правилами по умолчанию
nft add chain nat prerouting { type nat hook prerouting priority 0 \; policy accept \; }
nft add rule ip nat POSTROUTING oifname "ens33" ip saddr 192.168.19.0/24 counter snat to 1.1.1.1
nft add rule ip nat POSTROUTING oifname "ens33" ip saddr 192.168.19.0/24 counter masquerade
nft add rule ip nat PREROUTING tcp dport 8000 counter dnat to 10.7.0.169
nft add rule ip nat PREROUTING tcp dport 8000 counter dnat to 10.7.0.169:80
nft add rule ip nat PREROUTING tcp dport 8080 counter redirect to :80
nft add rule ip nat PREROUTING iifname "eth0" tcp dport 8080 counter redirect to :80
чтобы текущие активные правила nftables попали в стартовую конфигурацию nftables:
echo '#!/usr/sbin/nft -f' > /etc/nftables.conf echo 'flush ruleset' >> /etc/nftables.conf nft list ruleset >> /etc/nftables.conf
Трансляция синтаксиса правил с iptables в nft:
iptables-translate <правила iptables>
Generic Routing Encapsulation
– простой протокол туннелирования. Это означает, что берутся ваши изначальные данные вместе со служебными заголовками, упаковываются в пакет и передаются по публичной сети.
Два сервера подключены к интернету через статические белые адреса. На каждом из них заведены приватные сети. Разумеется, эти сети не маршрутизируются в Интернете. Наша задача прокинуть туннель. Для компьютеров в офисах в разных городах не существует никакого интернета. Они считают, что находятся в локальной сети.
nmcli connection add type ip-tunnel ip-tunnel.mode gre con-name tun0 ifname tun0 remote 40.40.40.2 local 20.20.20.2 nmcli connection modify tun0 ipv4.addresses '1.1.1.1/30' nmcli connection modify tun0 ipv4.method manual nmcli connection modify tun0 +ipv4.routes "172.16.0.0/24 1.1.1.2" nmcli connection up tun0
sysctl -p
nmcli connection add type ip-tunnel ip-tunnel.mode gre con-name tun0 ifname tun0 remote 20.20.20.2 local 40.40.40.2 nmcli connection modify tun0 ipv4.addresses '1.1.1.2/30' nmcli connection modify tun0 ipv4.method manual nmcli connection modify tun0 +ipv4.routes "192.168.1.0/24 1.1.1.1" nmcli connection up tun0
sysctl -p
Для остановки туннеля можно дать команду:
nmcli connection down tun0
После можно уже удалить туннель если он вам больше не нужен:
nmcli connection del tun0
IPSEC, сокращенный IP Security, представляет собой набор протоколов, стандартов и алгоритмов для защиты трафика по ненадежной сети, такой как Интернет. IPseс поддерживается всеми дистрибутивами Linux и позволяет обезопасить данные в сети.
Два сервера подключены к интернету через статические белые адреса. На каждом из них заведены приватные сети. Разумеется, эти сети не маршрутизируются в Интернете. Наша задача прокинуть туннель. Для компьютеров в офисах в разных городах не существует никакого интернета. Они считают, что находятся в локальной сети.
Phase 2
Установка необходимых пакетов:
sudo apt install strongswan
Если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status ipsec.service
Дублируем конфигурационный файл перед тем как его редактировать:
sudo cp /etc/ipsec.conf /etc/ipsec.conf.ORIG
1) Редактируем конфигурационный файл:
sudo nano /etc/ipsec.conf
содержимое:
config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn %default type=tunnel dpddelay=30 dpdtimeout=120 dpdaction=restart # Phase 1 keyexchange=ikev2 authby=psk ike=aes256-sha2_256-modp2048! ikelifetime=86400s # Phase 2 esp=aes256-sha2_256-modp2048! lifetime=3600s auto=start #------------------------------------ conn vpnServer2 left=20.20.20.2 leftsubnet=192.168.1.0/24 right=40.40.40.2 rightsubnet=172.16.0.0/24
2) Добавляем строку для обмена Preshared keys:
sudo nano /etc/ipsec.secrets
содержимое:
20.20.20.2 40.40.40.2 : PSK '#Micros@123'
3) Запуск тунеля:
sudo ipsec start
Статус активных туннелей можно посмотреть с помощью команды:
sudo ipsec statusall
sudo ip xfrm policy
Информация про первую фазу:
sudo ip xfrm state
1) Редактируем конфигурационный файл:
sudo nano /etc/ipsec.conf
содержимое:
config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn %default type=tunnel dpddelay=30 dpdtimeout=120 dpdaction=restart # Phase 1 keyexchange=ikev2 authby=psk ike=aes256-sha2_256-modp2048! ikelifetime=86400s # Phase 2 esp=aes256-sha2_256-modp2048! lifetime=3600s auto=start #------------------------------------ conn vpnServer1 left=40.40.40.2 leftsubnet=172.16.0.0/24 right=20.20.20.2 rightsubnet=192.168.1.0/24
2) Добавляем строку для обмена Preshared keys:
sudo nano /etc/ipsec.secrets
содержимое:
40.40.40.2 20.20.20.2 : PSK '#Micros@123'
3) Запуск тунеля:
sudo ipsec start
Статус активных туннелей можно посмотреть с помощью команды:
sudo ipsec statusall
sudo ip xfrm policy
Информация про первую фазу:
sudo ip xfrm state
Прокси-сервер — это дополнительное звено между вами и интернетом. Некий посредник, который отделяет человека от посещаемого сайта.
Такие посредники довольно многофункциональны и используются в локальных сетях при сценариях:
Все за счет того, что прокси подменяет IP-адрес, а трафик проходит через дополнительный сервер, на котором могут быть кэшированные данные или организованы дополнительные механизмы защиты данных.
Подробный мануал
Рассмотрим пример конфигурации по топологии:
Установка необходимых пакетов:
sudo apt install squid
Если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status squid
Первым делом сделаем бэкап конфигурационного файла:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.ORIG
Обнуляем содержимое (только в учебном процессе):
echo "" |sudo tee /etc/squid/squid.conf
Настраиваем конфигурационный файл:
sudo nano /etc/squid/squid.conf
Содержимое:
visible_hostname Proxy http_port 3128 acl lan1 src 192.168.1.0/24 acl lan2 src 192.168.2.0/24 acl lan3 src 192.168.3.0/24 acl lan src 192.168.0.0/16 acl safe_ports port 80 443 8080 110 25 53 acl block_url dstdomain "/etc/squid/block_url.txt" acl WorkTime time MTWHF 09:00-18:00 delay_pools 3 delay_class 1 1 delay_access 1 allow lan1 delay_parameters 1 1280000/1280000 delay_class 2 1 delay_access 2 allow lan2 delay_parameters 2 1280000/1280000 delay_class 3 1 delay_access 3 allow lan3 delay_parameters 3 1280000/1280000 http_access deny lan block_url http_access allow lan safe_ports WorkTime http_access deny all
Создаем файл для блокировки заданных url:
sudo nano /etc/squid/block_url.txt
содержимое:
ok.ru odnoklassniki.ru vk.com facebook.com
Перечитать конфиг файл (не перезапуская тем самым не тратя время на остановку):
sudo squid -k reconfigure
Минус ограничение скорости в squid — это то, что пользователей Вы можете ограничить только по HTTP/S трафику. Все, что проходит мимо Squid — не ограничивается.
Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д.
Документации Apache, + еще один полезный гайд
Первое, что необходимо сделать — это в DNS сервере, отвечаю- щем за зону .vcom, определить запись А, cвязывающую имя машины www с IP адресом Вашего WEB сервера.
Установка необходимых пакетов:
sudo apt install apache2 -y
если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status apache2.service
Файлы конфигурации расположены в директории /etc/apache2/
Задача: Настроить и запустить web сервер apache с четырьмя виртуальными доменами, которые будут прослушивать 80 порт
1) Создадим директории в которых будут храниться начинка доменов:
sudo mkdir /var/www/tashkent sudo mkdir /var/www/buhara sudo mkdir /var/www/samarkand sudo mkdir /var/www/fergana
2) В каждой директории создадим index.html файл с наполнением:
tashkent
<html> <body bgcolor='#005555' text='yellow'> <H1 align="center"> Web server for TASHKENT <H2 align="center"> Web server for TASHKENT <H3 align="center"> Web server for TASHKENT <H4 align="center"> Web server for TASHKENT <H5 align="center"> Web server for TASHKENT <H6 align="center"> Web server for TASHKENT </body> </html>
buhara
<html> <body bgcolor='#005555' text='yellow'> <H1 align="center"> Web server for BUHARA <H2 align="center"> Web server for BUHARA <H3 align="center"> Web server for BUHARA <H4 align="center"> Web server for BUHARA <H5 align="center"> Web server for BUHARA <H6 align="center"> Web server for BUHARA </body> </html>
samarkand
<html> <body bgcolor='#005555' text='yellow'> <H1 align="center"> Web server for SAMARKAND <H2 align="center"> Web server for SAMARKAND <H3 align="center"> Web server for SAMARKAND <H4 align="center"> Web server for SAMARKAND <H5 align="center"> Web server for SAMARKAND <H6 align="center"> Web server for SAMARKAND </body> </html>
fergana
<html> <body bgcolor='#005555' text='yellow'> <H1 align="center"> Web server for FERGANA <H2 align="center"> Web server for FERGANA <H3 align="center"> Web server for FERGANA <H4 align="center"> Web server for FERGANA <H5 align="center"> Web server for FERGANA <H6 align="center"> Web server for FERGANA </body> </html>
3) В директории /etc/apache2/sites-available создадим каждому домену конфигурационный файл:
tashkent.conf
<VirtualHost *:80> ServerName tashkent.vcom ServerAdmin root@tashkent.vcom DocumentRoot /var/www/tashkent/ </VirtualHost>
fergana.conf
<VirtualHost *:80> ServerName buhara.vcom ServerAdmin root@buhara.vcom DocumentRoot /var/www/buhara/ </VirtualHost>
samarkand.conf
<VirtualHost *:80> ServerName samarkand.vcom ServerAdmin root@samarkand.vcom DocumentRoot /var/www/samarkand/ </VirtualHost>
buhara.conf
<VirtualHost *:80> ServerName fergana.vcom ServerAdmin root@fergana.vcom DocumentRoot /var/www/fergana/ </VirtualHost>
4) Создадим мягкие ссылки с каждого конфигурационного файла из директории /etc/apache2/sites-available в директорию /etc/apache2/sites-enabled/
sudo ln -s /etc/apache2/sites-available/tashkent.conf /etc/apache2/sites-enabled/ sudo ln -s /etc/apache2/sites-available/buhara.conf /etc/apache2/sites-enabled/ sudo ln -s /etc/apache2/sites-available/fergana.conf /etc/apache2/sites-enabled/ sudo ln -s /etc/apache2/sites-available/samarkand.conf /etc/apache2/sites-enabled/
5) Перезапускаем службу:
sudo systemctl restart apache2.service
NGINX — это высокопроизводительный сервер, который реализует функции прокси для веб-серверов и почтовых серверов и потребляет очень мало системных ресурсов.
Официальная документация, + неплохая книга
Apache и Nginx не живут на одном сервере так как оба выполняют схожие функции, для того чтоб не было конфликтов, остановим службу (только в том случаи если он запущен):
sudo systemctl stop apache2
Далее, замаскируем службу и защитим от случайного запуска:
sudo systemctl mask apache2
Установка необходимых пакетов:
sudo apt install nginx -y
если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status nginx.service
1) Создадим директорию для домена:
sudo mkdir /var/www/uzbekistan
2) В созданной директории создадим index.html файл с наполнением:
<html> <body bgcolor='#005555' text='yellow'> <H1 align="center"> Web server for UZBEKISTAN <H2 align="center"> Web server for UZBEKISTAN <H3 align="center"> Web server for UZBEKISTAN <H4 align="center"> Web server for UZBEKISTAN <H5 align="center"> Web server for UZBEKISTAN <H6 align="center"> Web server for UZBEKISTAN </body> </html>
3) Создадим конфигурационный файл uzbekistan в директории /etc/nginx/sites-available/ с наполнением:
server { listen 80; server_name uzbekistan.vcom; root /var/www/uzbekistan/; location / { } }
4) Создадим мягкую ссылку на файл из директории sites-available в директорию sites-enabled:
sudo ln -s /etc/nginx/sites-available/uzbekistan /etc/nginx/sites-enabled/
5) Когда nginx запущен, им можно управлять, вызывая исполняемый файл с параметром -s
, перечитаем конфигурационный файл:
sudo nginx -s reload
server { listen 80 ; server_nameuzbekistanvcom; root /var/www/uzbekistan/; location /tash { return 200 'Hello from tash location block'; } }
server { listen 80 ; server_nameuzbekistanvcom; root /var/www/uzbekistan/; location = /tash { return 200 'Hello from tash location block'; } }
server { listen 80 ; server_nameuzbekistanvcom; root /var/www/uzbekistan/; location ~ /tash { return 200 'Hello from tash location block'; } }
server { listen 80 ; server_name search.vcom; location / { proxy_pass http://www.yahoo.com; } }
P.S. Предварительно нужно добавить MX запись в DNS сервер, либо в качестве учебного теста добавить домер в /etc/hosts файл:
Установка необходимых пакетов:
sudo apt install postfix dovecot-imapd dovecot-pop3d -y
P.S. Во время установки может потребоваться предварительная настройка, выберите «интернет-сайт» а затем просто впишите свое доменное имя
Если произошла ошибка при установки, значит нужно просто добавить рабочий репозиторий, я использую:
deb http://http.us.debian.org/debian/ bullseye main contrib non-free
Статус службы можно посмотреть с помощью команды:
systemctl status postfix