Требуемые условия завершения
Задача:
- Настройка динамической трансляции адресов
- Настройте динамическую трансляцию адресов средствами Ansible для группы серверов RTR1
- В качестве плейбука используйте файл playbook_1.yml в каталоге project_1
- Плейбук должен содержать действия по настройке динамической трансляцию адресов
- Используйте firewalld
- Для внешнего интерфейса используйте зону external
- Обеспечьте автоматическое восстановление правил после перезагрузки
- Использование плагина shell и command НЕ допускается
- Использование запрещенных плагинов обнулит весь пункт при проверке
- Настройте динамическую трансляцию адресов средствами Ansible для группы серверов RTR2
- В качестве плейбука используйте файл playbook_2.yml в каталоге project_1
- Плейбук должен содержать действия по настройке динамической трансляцию адресов
- Используйте iptables
- Обеспечьте автоматическое восстановление правил после перезагрузки
- Использование плагина shell и command НЕ допускается
- Использование запрещенных плагинов обнулит весь пункт при проверке
- Настройте динамическую трансляцию адресов средствами Ansible для группы серверов RTR1
Вариант реализации:
CLI1:
- Из под пользователя user переходим в директорию /opt/ansible:
cd /opt/ansible
- Создаём первый playbook_1.yml в директории project_1:
vim project_1/playbook_1.yml
-
- Содержимое playbook_1.yml:
- данный playbook - выполняет следующее:
- Включает перессылку пакетов (forwarding);
- Устанавливаем firewalld если он не установлен;
- Добавляет внешний интерфейс enp0s3 в зону external (masquerade - включён из коробки на данной зоне);
- Добавляет внутрений интерфейс enp0s8 в зону trusted;
- данный playbook - выполняет следующее:
- Содержимое playbook_1.yml:
---
- name: Setting up dynamic address translation
hosts: RTR1
become: true
tasks:
- name: Set ip forwarding on in /proc and in the sysctl file and reload necessary
ansible.posix.sysctl:
name: net.ipv4.ip_forward
value: "1"
sysctl_set: true
state: present
reload: true
- name: Install Firewalld
ansible.builtin.dnf:
name: firewalld
state: present
- name: Started and enabled Firewalld
service:
name: firewalld
state: started
enabled: true
- name: Distribution of interfaces to the corresponding zones
firewalld:
zone: "{{ item.zone }}"
interface: "{{ item.interface }}"
permanent: true
state: enabled
immediate: yes
with_items:
- { zone: external, interface: enp0s3 }
- { zone: trusted, interface: enp0s8 }
- Устанавливаем необходимую для работу ansible - коллекцию:
- из под пользователя user
ansible-galaxy collection install ansible.posix
- Выполняем запуск playbook - сценария:
- из под пользователя user
ansible-playbook project_1/playbook_1.yml
-
- Результат:
- Проверяем:
- подключаемся по SSH на RTR1 - смотрим forwarding и зоны firewalld:
-
- c SRV1 или CLI1 - можно проверить доступ в сеть Интернет:
- Создаём второй playbook_2.yml в директории project_1:
vim project_1/playbook_2.yml
-
- Содержимое playbook_2.yml:
- данный playbook - выполняет следующее:
- Включает перессылку пакетов (forwarding);
- Устанавливаем iptables если он не установлен;
- Настраиваем правила для NAT средствами iptables;
- Сохраняем созданные правила;
- данный playbook - выполняет следующее:
- Содержимое playbook_2.yml:
---
- name: Setting up dynamic address translation
hosts: RTR2
become: true
tasks:
- name: Set ip forwarding on in /proc and in the sysctl file and reload necessary
ansible.posix.sysctl:
name: net.ipv4.ip_forward
value: "1"
sysctl_set: true
state: present
reload: true
- name: Install Iptables
ansible.builtin.apt:
name: iptables
state: present
update_cache: yes
- name: Turn on masquerade
ansible.builtin.iptables:
table: nat
chain: POSTROUTING
jump: MASQUERADE
out_interface: eth0
protocol: all
source: 192.168.100.0/24
destination: 0.0.0.0/0
- name: Save current state of the iptables in system file
community.general.iptables_state:
state: saved
path: /etc/iptables.rules
- name: Enable auto-loading of rules iptables
ansible.builtin.lineinfile:
path: /etc/network/interfaces
line: pre-up iptables-restore < /etc/iptables.rules
state: present
- Устанавливаем необходимую для работу ansible - коллекцию:
- из под пользователя user
ansible-galaxy collection install community.general
- Выполняем запуск playbook - сценария:
- из под пользователя user
ansible-playbook project_1/playbook_2.yml
-
- Результат:
- Проверяем:
- подключаемся по SSH на RTR2 - смотрим forwarding и правила iptables:
-
- c SRV2 или CLI2 - можно проверить доступ в сеть Интернет:
Последнее изменение: вторник, 9 июля 2024, 15:07