diff --git a/application/http_shefler_server_service.service b/application/http_shefler_server_service.service new file mode 100644 index 0000000..54c420b --- /dev/null +++ b/application/http_shefler_server_service.service @@ -0,0 +1,12 @@ +[Unit] +Description=HTTP_Shefler_server_5000 +After=network.target + +[Service] +User=shefler_1 +WorkingDirectory=/opt/http_shefler_server +ExecStart=/usr/bin/python3 /opt/http_shefler_server/shefler_5000.py +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/application/shefler_5000.py b/application/shefler_5000.py new file mode 100644 index 0000000..2fc6e8c --- /dev/null +++ b/application/shefler_5000.py @@ -0,0 +1,20 @@ +from flask import Flask, request, jsonify + +app = Flask(__name__) + +@app.route('/get', methods=['GET']) +def get(): + return jsonify({"method": "GET", "message": "Get response"}), 200 + +@app.route('/post', methods=['POST']) +def post(): + data = request.get_json() + return jsonify({"method": "POST", "received": data}), 200 + +@app.route('/put', methods=['PUT']) +def put(): + data = request.get_json() + return jsonify({"method": "PUT", "received": data}), 200 + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=5000) diff --git a/configs/LinuxA/00-installer-config.yaml b/configs/LinuxA/00-installer-config.yaml new file mode 100644 index 0000000..dea1165 --- /dev/null +++ b/configs/LinuxA/00-installer-config.yaml @@ -0,0 +1,10 @@ +# This is the network config written by 'subiquity' +network: + ethernets: + enp0s3: + dhcp4: true + enp0s8: + dhcp4: no + addresses: [192.168.16.10/24] + gateway4: 192.168.16.1 + version: 2 diff --git a/configs/LinuxA/http_shefler_server_service.service b/configs/LinuxA/http_shefler_server_service.service new file mode 100644 index 0000000..54c420b --- /dev/null +++ b/configs/LinuxA/http_shefler_server_service.service @@ -0,0 +1,12 @@ +[Unit] +Description=HTTP_Shefler_server_5000 +After=network.target + +[Service] +User=shefler_1 +WorkingDirectory=/opt/http_shefler_server +ExecStart=/usr/bin/python3 /opt/http_shefler_server/shefler_5000.py +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/configs/LinuxB/00-installer-config.yaml b/configs/LinuxB/00-installer-config.yaml new file mode 100644 index 0000000..c4f2359 --- /dev/null +++ b/configs/LinuxB/00-installer-config.yaml @@ -0,0 +1,12 @@ +# This is the network config written by 'subiquity' +network: + ethernets: + enp0s3: + dhcp4: true + enp0s8: + dhcp4: no + addresses: [192.168.16.1/24] + enp0s9: + dhcp4: no + addresses: [192.168.3.1/24] + version: 2 diff --git a/configs/LinuxB/15-ip4tables b/configs/LinuxB/15-ip4tables new file mode 100644 index 0000000..a29ab4f --- /dev/null +++ b/configs/LinuxB/15-ip4tables @@ -0,0 +1,84 @@ +#!/bin/sh + +# This file is part of netfilter-persistent +# (was iptables-persistent) +# Copyright (C) 2009, Simon Richter +# Copyright (C) 2010, 2014 Jonathan Wiltshire +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 +# of the License, or (at your option) any later version. + +set -e + +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +# Source configuration +if [ -f "/etc/default/netfilter-persistent" ]; then + . /etc/default/netfilter-persistent +fi + +load_rules() +{ + if [ "${IPTABLES_RESTORE_NOFLUSH}x" = "yesx" ]; then + NOFLUSH='--noflush' + else + NOFLUSH='' + fi + + #load IPv4 rules + if [ ! -f /etc/iptables/rules.v4 ]; then + echo "Warning: skipping IPv4 (no rules to load)" + else + iptables-restore $NOFLUSH < /etc/iptables/rules.v4 + fi +} + +save_rules() +{ + if [ ! "${IPTABLES_SKIP_SAVE}x" = "yesx" ]; then + touch /etc/iptables/rules.v4 + chmod 0640 /etc/iptables/rules.v4 + iptables-save > /etc/iptables/rules.v4 + fi +} + +flush_rules() +{ + TABLES=$(iptables-save | sed -E -n 's/^\*//p') + for table in $TABLES + do + CHAINS=$(iptables-save -t $table | sed -E -n 's/^:([A-Z]+).*/\1/p') + for chain in $CHAINS + do + # policy can't be set on user-defined chains + iptables -t $table -P $chain ACCEPT || true + done + iptables -t $table -F + iptables -t $table -Z + iptables -t $table -X + done +} + +case "$1" in +start|restart|reload|force-reload) + load_rules + ;; +save) + save_rules + ;; +stop) + # Why? because if stop is used, the firewall gets flushed for a variable + # amount of time during package upgrades, leaving the machine vulnerable + # It's also not always desirable to flush during purge + echo "Automatic flushing disabled, use \"flush\" instead of \"stop\"" + ;; +flush) + flush_rules + ;; +*) + echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2 + exit 1 + ;; +esac diff --git a/configs/LinuxB/25-ip6tables b/configs/LinuxB/25-ip6tables new file mode 100644 index 0000000..90b213e --- /dev/null +++ b/configs/LinuxB/25-ip6tables @@ -0,0 +1,87 @@ +#!/bin/sh + +# This file is part of netfilter-persistent +# (was iptables-persistent) +# Copyright (C) 2009, Simon Richter +# Copyright (C) 2010, 2014 Jonathan Wiltshire +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 +# of the License, or (at your option) any later version. + +set -e + +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +# Exit fast if IPv6 is disabled +test -e /proc/sys/net/ipv6 || exit 0 + +# Source configuration +if [ -f "/etc/default/netfilter-persistent" ]; then + . /etc/default/netfilter-persistent +fi + +load_rules() +{ + if [ "${IP6TABLES_RESTORE_NOFLUSH}x" = "yesx" ]; then + NOFLUSH='--noflush' + else + NOFLUSH='' + fi + + #load IPv6 rules + if [ ! -f /etc/iptables/rules.v6 ]; then + echo "Warning: skipping IPv6 (no rules to load)" + else + ip6tables-restore $NOFLUSH < /etc/iptables/rules.v6 + fi +} + +save_rules() +{ + if [ ! "${IP6TABLES_SKIP_SAVE}x" = "yesx" ]; then + touch /etc/iptables/rules.v6 + ip6tables-save > /etc/iptables/rules.v6 + chmod 0640 /etc/iptables/rules.v6 + fi +} + +flush_rules() +{ + TABLES=$(ip6tables-save | sed -E -n 's/^\*//p') + for table in $TABLES + do + CHAINS=$(ip6tables-save -t $table | sed -E -n 's/^:([A-Z]+).*/\1/p') + for chain in $CHAINS + do + # policy can't be set on user-defined chains + ip6tables -t $table -P $chain ACCEPT || true + done + ip6tables -t $table -F + ip6tables -t $table -Z + ip6tables -t $table -X + done +} + +case "$1" in +start|restart|reload|force-reload) + load_rules + ;; +save) + save_rules + ;; +stop) + # Why? because if stop is used, the firewall gets flushed for a variable + # amount of time during package upgrades, leaving the machine vulnerable + # It's also not always desirable to flush during purge + echo "Automatic flushing disabled, use \"flush\" instead of \"stop\"" + ;; +flush) + flush_rules + ;; +*) + echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2 + exit 1 + ;; +esac diff --git a/configs/LinuxB/99-sysctl.conf b/configs/LinuxB/99-sysctl.conf new file mode 100644 index 0000000..b41f07b --- /dev/null +++ b/configs/LinuxB/99-sysctl.conf @@ -0,0 +1,68 @@ +# +# /etc/sysctl.conf - Configuration file for setting system variables +# See /etc/sysctl.d/ for additional system variables. +# See sysctl.conf (5) for information. +# + +#kernel.domainname = example.com + +# Uncomment the following to stop low-level messages on console +#kernel.printk = 3 4 1 3 + +##############################################################3 +# Functions previously found in netbase +# + +# Uncomment the next two lines to enable Spoof protection (reverse-path filter) +# Turn on Source Address Verification in all interfaces to +# prevent some spoofing attacks +#net.ipv4.conf.default.rp_filter=1 +#net.ipv4.conf.all.rp_filter=1 + +# Uncomment the next line to enable TCP/IP SYN cookies +# See http://lwn.net/Articles/277146/ +# Note: This may impact IPv6 TCP sessions too +#net.ipv4.tcp_syncookies=1 + +# Uncomment the next line to enable packet forwarding for IPv4 +net.ipv4.ip_forward=1 + +# Uncomment the next line to enable packet forwarding for IPv6 +# Enabling this option disables Stateless Address Autoconfiguration +# based on Router Advertisements for this host +#net.ipv6.conf.all.forwarding=1 + + +################################################################### +# Additional settings - these settings can improve the network +# security of the host and prevent against some network attacks +# including spoofing attacks and man in the middle attacks through +# redirection. Some network environments, however, require that these +# settings are disabled so review and enable them as needed. +# +# Do not accept ICMP redirects (prevent MITM attacks) +#net.ipv4.conf.all.accept_redirects = 0 +#net.ipv6.conf.all.accept_redirects = 0 +# _or_ +# Accept ICMP redirects only for gateways listed in our default +# gateway list (enabled by default) +# net.ipv4.conf.all.secure_redirects = 1 +# +# Do not send ICMP redirects (we are not a router) +#net.ipv4.conf.all.send_redirects = 0 +# +# Do not accept IP source route packets (we are not a router) +#net.ipv4.conf.all.accept_source_route = 0 +#net.ipv6.conf.all.accept_source_route = 0 +# +# Log Martian Packets +#net.ipv4.conf.all.log_martians = 1 +# + +################################################################### +# Magic system request Key +# 0=disable, 1=enable all, >1 bitmask of sysrq functions +# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html +# for what other values do +#kernel.sysrq=438 + diff --git a/configs/LinuxC/00-installer-config.yaml b/configs/LinuxC/00-installer-config.yaml new file mode 100644 index 0000000..9e51ca6 --- /dev/null +++ b/configs/LinuxC/00-installer-config.yaml @@ -0,0 +1,10 @@ +# This is the network config written by 'subiquity' +network: + ethernets: + enp0s3: + dhcp4: true + enp0s8: + dhcp4: no + addresses: [192.168.3.100/24] + gateway4: 192.168.3.1 + version: 2 diff --git a/report.md b/report.md new file mode 100644 index 0000000..04f97d6 --- /dev/null +++ b/report.md @@ -0,0 +1,144 @@ +# ОТЧЕТ ПО ПРАКТИКЕ LINUX ШЕФЛЕР +### Общая информация +Дата рождения: 16 +Месяц рождения: 3 +ip - адреса машин на сетевом мосту: + LinuxA: 192.168.0.113 + LinuxB: 192.168.0.114 + LinuxC: 192.168.0.104 +## Linux A +### Информация о машине: +Имя хоста: shefler_server +Имя пользователя shefler_1 +Пароль: shefler_1 +1. Настроим сетевые интерфейсы машины: Сетевой мост и Внутреннюю сеть (servernet): + + ![Сетевой мост LinuxA](screenshots/LinuxA_screen/1.1.png) + ![Внутренняя сеть LinuxA](screenshots/LinuxA_screen/1.2.png) +2. Пробуем пинговать машину с хоста: + + ![Пинг LinuxA с хоста](screenshots/LinuxA_screen/3.png) +3. Генерируем и копируем ключ для доступа по ssh, что затем поможет подключаться соответствующим образом с хоста: + + ![Генерация и копирование SSH-ключа](screenshots/LinuxA_screen/4.png) +4. Настраиваем сеть открыв конфигурационный файл 00-installer-config.yaml с помощью sudo nano /etc/netplan/00-installer-config.yaml: + + ![Конфигурационный файл LinuxA](screenshots/LinuxA_screen/5_попытка.png) +5. Примерим настройки и проверим их с помощью sudo netplan apply и ip addr: + + ![Проверка конфигурации LinuxA](screenshots/LinuxA_screen/5-6.png) +6. Настроим веб-сервер при помощи python flask. Для этого сначала проведем установку: + + ![Установка flask1](screenshots/LinuxA_screen/install_flask1.png) + ![Установка flask1](screenshots/LinuxA_screen/install_flask2.png) +7. Создадим директорию для сервера, а в ней файл shefler_5000.py: + + ![Создание shefler_5000.py](screenshots/LinuxA_screen/making_shefler_5000.py.png) +8. Запишем в файл следующее содержание: + + ![Создание shefler_5000.py](screenshots/LinuxA_screen/shefler_5000.py.png) +9. Создадим systemd unit файл для автоматического запуска сервера: + + ![Создание systemd unit файла](screenshots/LinuxA_screen/http_shefler_server_service.service.png) +10. Запустим и посмотрим на результат: + + ![Запуск сервера](screenshots/LinuxA_screen/start_service.png) + ![Результат запуска](screenshots/LinuxA_screen/service_working.png) +## Linux B +### Информация о машине: +Имя хоста: shefler_gateway +Имя пользователя shefler_2 +Пароль: shefler_2 +1. Настроим сетевые интерфейсы машины: Сетевой мост и Внутреннюю сеть (servernet и clientnet): + + ![Сетевой мост LinuxB](screenshots/LinuxB_screen/1.1.png) + ![Внутренняя сеть LinuxB (servernet)](screenshots/LinuxB_screen/1.2.png) + ![Внутренняя сеть LinuxB (clientnet)](screenshots/LinuxB_screen/1.3.png) +2. Убеждаемся, что один из интерфейсов подключен к той же подсети, что и хост. Запоминаем ip адрес: + + ![Ip - адреса](screenshots/LinuxB_screen/2.png) +3. Генерируем и копируем ключ для доступа по ssh, что затем поможет подключаться соответствующим образом с хоста: + + ![Генерация и копирование SSH-ключа](screenshots/LinuxB_screen/3.png) +4. Настраиваем сеть открыв конфигурационный файл 00-installer-config.yaml с помощью sudo nano /etc/netplan/00-installer-config.yaml: + + ![Конфигурационный файл LinuxB](screenshots/LinuxB_screen/4.png) +5. Применим настройки и проверим их с помощью sudo netplan apply и ip addr: + + ![Проверка конфигурации LinuxB](screenshots/LinuxB_screen/6.png) +6. Включим IP Forwarding c помощью редактирования sysctl.conf, а затем проверим: + + ![Редактирование файла sysctl.conf](screenshots/LinuxB_screen/Включение_ip_forvarding.png) + ![Проверка результата](screenshots/LinuxB_screen/Включение_ip_forvarding_2.png) +7. Для настройки маршрута внесем правила в ip tables и проведем проверку, а также сохраним в файлы 15-ip4tables и 25-ip6tables: + + ![Проверка результата](screenshots/LinuxB_screen/маршруты.png) +## Linux C +### Информация о машине: +Имя хоста: shefler_client +Имя пользователя shefler_3 +Пароль: shefler_3 +1. Настроим сетевые интерфейсы машины: Сетевой мост и Внутреннюю сеть (clientnet): + + ![Сетевой мост LinuxC](screenshots/LinuxC_screen/1.1.png) + ![Внутренняя сеть LinuxC](screenshots/LinuxC_screen/1.2.png) +2. Генерируем и копируем ключ для доступа по ssh, что затем поможет подключаться соответствующим образом с хоста: + + ![Генерация и копирование SSH-ключа](screenshots/LinuxC_screen/3.png) +3. Настраиваем сеть открыв конфигурационный файл 00-installer-config.yaml с помощью sudo nano /etc/netplan/00-installer-config.yaml: + + ![Конфигурационный файл LinuxC](screenshots/LinuxC_screen/4.png) +4. Примерим настройки и проверим их с помощью sudo netplan apply и ip addr: + + ![Проверка конфигурации LinuxC](screenshots/LinuxC_screen/6.png) +5. Для копирования файлов с виртуальных машин на хост используется WinSCP: + + ![WinSCP](screenshots/LinuxC_screen/WinSCP.png) +6. Установим curl: + + ![Установка curl на клиент](screenshots/LinuxC_screen/Загрузка_curl.png) +## Тестирование +1. Запустим утилиту tcpdump на LinuxB: + + ![Запуск утилиты](screenshots/Testing_screen/LinuxB_запуск_tcpdump.png) +2. Отправим ряд curl-запросов с клиента (LinuxC) на cервер LinuxA для проверки: + 2.1. GET: + + ![Get1](screenshots/Testing_screen/Get1.png) + ![Get2](screenshots/Testing_screen/Get2.png) + 2.2. POST: + + ![Post1](screenshots/Testing_screen/Post1.png) + ![Post2](screenshots/Testing_screen/Post2.png) + 2.3. PUT: + + ![Put1](screenshots/Testing_screen/Put1.png) + ![Put2](screenshots/Testing_screen/Put2.png) + При прослушивании трафика через tcpdump видно последовательную смену TCP-флагов (SYN → SYN-ACK → ACK → PSH/ACK), что подтверждает успешное установление соединения и обмен данными между клиентом и сервером. +3. Проверим блокировку трафику шлюзом попытавшись произвести пинг сервера клиентом: + + ![Проверка блокировки трафика](screenshots/Testing_screen/проверка_блокировки.png) +## Тестирование после перезагрузки +Послее перезагрузки всех машин проверим, что их настройки сохранены + +1. Проверим активен ли IP Forwarding, а также iptables на шлюзе: + + ![Проверка IP Forwarding](screenshots/Reboot_screen/1.png) +2. Проверка того, запущен ли веб-сервер: + ![Проверка веб-сервер](screenshots/Reboot_screen/2.png) +3. Произведем тестовый запрос с клиента на сервер: + ![Проверка curl1](screenshots/Reboot_screen/3.png) + ![Проверка curl2](screenshots/Reboot_screen/4.png) + +Таким образом, после перезагрузки все настройки сохраняются. +## Заключение + +В ходе выполнения практической работы были развернуты три виртуальные машины Linux (Server, Gateway, Client) и настроена их сетевая связность в соответствии с заданной схемой. + +На машине Linux A был развернут HTTP-сервер на базе Flask, реализующий обработку запросов GET, POST и PUT на порту 5000. Для обеспечения автоматического запуска сервиса при загрузке системы был создан systemd unit. + +На машине Linux B была выполнена настройка маршрутизации между подсетями с использованием IP forwarding и правил iptables, обеспечивающих передачу только HTTP-трафика через порт 5000. Дополнительно была настроена фильтрация и мониторинг трафика с использованием tcpdump. + +На машине Linux C была выполнена настройка сетевых интерфейсов и проверка взаимодействия с сервером с помощью утилиты curl. + +В результате тестирования подтверждена корректная работа сетевой архитектуры: клиент успешно отправляет HTTP-запросы к серверу через шлюз, а весь трафик проходит через настроенные правила маршрутизации. Также установлено, что после перезагрузки системы все конфигурации сохраняются и функционируют корректно. \ No newline at end of file diff --git a/screenshots/LinuxA_screen/1.1.png b/screenshots/LinuxA_screen/1.1.png new file mode 100644 index 0000000..2eaa86f Binary files /dev/null and b/screenshots/LinuxA_screen/1.1.png differ diff --git a/screenshots/LinuxA_screen/1.2.png b/screenshots/LinuxA_screen/1.2.png new file mode 100644 index 0000000..25d4d4a Binary files /dev/null and b/screenshots/LinuxA_screen/1.2.png differ diff --git a/screenshots/LinuxA_screen/3.png b/screenshots/LinuxA_screen/3.png new file mode 100644 index 0000000..e9260d7 Binary files /dev/null and b/screenshots/LinuxA_screen/3.png differ diff --git a/screenshots/LinuxA_screen/4.png b/screenshots/LinuxA_screen/4.png new file mode 100644 index 0000000..da90c49 Binary files /dev/null and b/screenshots/LinuxA_screen/4.png differ diff --git a/screenshots/LinuxA_screen/5-6.png b/screenshots/LinuxA_screen/5-6.png new file mode 100644 index 0000000..a7415c2 Binary files /dev/null and b/screenshots/LinuxA_screen/5-6.png differ diff --git "a/screenshots/LinuxA_screen/5_\320\277\320\276\320\277\321\213\321\202\320\272\320\260.png" "b/screenshots/LinuxA_screen/5_\320\277\320\276\320\277\321\213\321\202\320\272\320\260.png" new file mode 100644 index 0000000..2f0b14f Binary files /dev/null and "b/screenshots/LinuxA_screen/5_\320\277\320\276\320\277\321\213\321\202\320\272\320\260.png" differ diff --git a/screenshots/LinuxA_screen/http_shefler_server_service.service.png b/screenshots/LinuxA_screen/http_shefler_server_service.service.png new file mode 100644 index 0000000..38f2bcf Binary files /dev/null and b/screenshots/LinuxA_screen/http_shefler_server_service.service.png differ diff --git a/screenshots/LinuxA_screen/install_flask1.png b/screenshots/LinuxA_screen/install_flask1.png new file mode 100644 index 0000000..f4a2fca Binary files /dev/null and b/screenshots/LinuxA_screen/install_flask1.png differ diff --git a/screenshots/LinuxA_screen/install_flask2.png b/screenshots/LinuxA_screen/install_flask2.png new file mode 100644 index 0000000..47df902 Binary files /dev/null and b/screenshots/LinuxA_screen/install_flask2.png differ diff --git a/screenshots/LinuxA_screen/making_shefler_5000.py.png b/screenshots/LinuxA_screen/making_shefler_5000.py.png new file mode 100644 index 0000000..4546779 Binary files /dev/null and b/screenshots/LinuxA_screen/making_shefler_5000.py.png differ diff --git a/screenshots/LinuxA_screen/service_working.png b/screenshots/LinuxA_screen/service_working.png new file mode 100644 index 0000000..14b891e Binary files /dev/null and b/screenshots/LinuxA_screen/service_working.png differ diff --git a/screenshots/LinuxA_screen/shefler_5000.py.png b/screenshots/LinuxA_screen/shefler_5000.py.png new file mode 100644 index 0000000..aa8a198 Binary files /dev/null and b/screenshots/LinuxA_screen/shefler_5000.py.png differ diff --git a/screenshots/LinuxA_screen/start_service.png b/screenshots/LinuxA_screen/start_service.png new file mode 100644 index 0000000..8f965e6 Binary files /dev/null and b/screenshots/LinuxA_screen/start_service.png differ diff --git a/screenshots/LinuxB_screen/1.1.png b/screenshots/LinuxB_screen/1.1.png new file mode 100644 index 0000000..91d89f6 Binary files /dev/null and b/screenshots/LinuxB_screen/1.1.png differ diff --git a/screenshots/LinuxB_screen/1.2.png b/screenshots/LinuxB_screen/1.2.png new file mode 100644 index 0000000..f8ae98e Binary files /dev/null and b/screenshots/LinuxB_screen/1.2.png differ diff --git a/screenshots/LinuxB_screen/1.3.png b/screenshots/LinuxB_screen/1.3.png new file mode 100644 index 0000000..473b245 Binary files /dev/null and b/screenshots/LinuxB_screen/1.3.png differ diff --git a/screenshots/LinuxB_screen/2.png b/screenshots/LinuxB_screen/2.png new file mode 100644 index 0000000..42f75b0 Binary files /dev/null and b/screenshots/LinuxB_screen/2.png differ diff --git a/screenshots/LinuxB_screen/3.png b/screenshots/LinuxB_screen/3.png new file mode 100644 index 0000000..c6f5d32 Binary files /dev/null and b/screenshots/LinuxB_screen/3.png differ diff --git a/screenshots/LinuxB_screen/4.png b/screenshots/LinuxB_screen/4.png new file mode 100644 index 0000000..0e787a7 Binary files /dev/null and b/screenshots/LinuxB_screen/4.png differ diff --git a/screenshots/LinuxB_screen/6.png b/screenshots/LinuxB_screen/6.png new file mode 100644 index 0000000..53c081a Binary files /dev/null and b/screenshots/LinuxB_screen/6.png differ diff --git "a/screenshots/LinuxB_screen/\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265_ip_forvarding.png" "b/screenshots/LinuxB_screen/\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265_ip_forvarding.png" new file mode 100644 index 0000000..645a688 Binary files /dev/null and "b/screenshots/LinuxB_screen/\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265_ip_forvarding.png" differ diff --git "a/screenshots/LinuxB_screen/\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265_ip_forvarding_2.png" "b/screenshots/LinuxB_screen/\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265_ip_forvarding_2.png" new file mode 100644 index 0000000..1b1ac27 Binary files /dev/null and "b/screenshots/LinuxB_screen/\320\222\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265_ip_forvarding_2.png" differ diff --git "a/screenshots/LinuxB_screen/\320\274\320\260\321\200\321\210\321\200\321\203\321\202\321\213.png" "b/screenshots/LinuxB_screen/\320\274\320\260\321\200\321\210\321\200\321\203\321\202\321\213.png" new file mode 100644 index 0000000..322d30e Binary files /dev/null and "b/screenshots/LinuxB_screen/\320\274\320\260\321\200\321\210\321\200\321\203\321\202\321\213.png" differ diff --git a/screenshots/LinuxC_screen/1.1.png b/screenshots/LinuxC_screen/1.1.png new file mode 100644 index 0000000..e8cb151 Binary files /dev/null and b/screenshots/LinuxC_screen/1.1.png differ diff --git a/screenshots/LinuxC_screen/1.2.png b/screenshots/LinuxC_screen/1.2.png new file mode 100644 index 0000000..c0d4845 Binary files /dev/null and b/screenshots/LinuxC_screen/1.2.png differ diff --git a/screenshots/LinuxC_screen/3.png b/screenshots/LinuxC_screen/3.png new file mode 100644 index 0000000..727622e Binary files /dev/null and b/screenshots/LinuxC_screen/3.png differ diff --git a/screenshots/LinuxC_screen/4.png b/screenshots/LinuxC_screen/4.png new file mode 100644 index 0000000..218d868 Binary files /dev/null and b/screenshots/LinuxC_screen/4.png differ diff --git a/screenshots/LinuxC_screen/6.png b/screenshots/LinuxC_screen/6.png new file mode 100644 index 0000000..bb9cf05 Binary files /dev/null and b/screenshots/LinuxC_screen/6.png differ diff --git a/screenshots/LinuxC_screen/WinSCP.png b/screenshots/LinuxC_screen/WinSCP.png new file mode 100644 index 0000000..e601f85 Binary files /dev/null and b/screenshots/LinuxC_screen/WinSCP.png differ diff --git "a/screenshots/LinuxC_screen/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_curl.png" "b/screenshots/LinuxC_screen/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_curl.png" new file mode 100644 index 0000000..649462f Binary files /dev/null and "b/screenshots/LinuxC_screen/\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260_curl.png" differ diff --git a/screenshots/Reboot_screen/1.png b/screenshots/Reboot_screen/1.png new file mode 100644 index 0000000..a52d683 Binary files /dev/null and b/screenshots/Reboot_screen/1.png differ diff --git a/screenshots/Reboot_screen/2.png b/screenshots/Reboot_screen/2.png new file mode 100644 index 0000000..980a1c7 Binary files /dev/null and b/screenshots/Reboot_screen/2.png differ diff --git a/screenshots/Reboot_screen/3.png b/screenshots/Reboot_screen/3.png new file mode 100644 index 0000000..156fce5 Binary files /dev/null and b/screenshots/Reboot_screen/3.png differ diff --git a/screenshots/Reboot_screen/4.png b/screenshots/Reboot_screen/4.png new file mode 100644 index 0000000..f0f6604 Binary files /dev/null and b/screenshots/Reboot_screen/4.png differ diff --git a/screenshots/Testing_screen/Get1.png b/screenshots/Testing_screen/Get1.png new file mode 100644 index 0000000..c8a0b2e Binary files /dev/null and b/screenshots/Testing_screen/Get1.png differ diff --git a/screenshots/Testing_screen/Get2.png b/screenshots/Testing_screen/Get2.png new file mode 100644 index 0000000..3737752 Binary files /dev/null and b/screenshots/Testing_screen/Get2.png differ diff --git "a/screenshots/Testing_screen/LinuxB_\320\267\320\260\320\277\321\203\321\201\320\272_tcpdump.png" "b/screenshots/Testing_screen/LinuxB_\320\267\320\260\320\277\321\203\321\201\320\272_tcpdump.png" new file mode 100644 index 0000000..b5f5f54 Binary files /dev/null and "b/screenshots/Testing_screen/LinuxB_\320\267\320\260\320\277\321\203\321\201\320\272_tcpdump.png" differ diff --git a/screenshots/Testing_screen/Post1.png b/screenshots/Testing_screen/Post1.png new file mode 100644 index 0000000..ee83086 Binary files /dev/null and b/screenshots/Testing_screen/Post1.png differ diff --git a/screenshots/Testing_screen/Post2.png b/screenshots/Testing_screen/Post2.png new file mode 100644 index 0000000..e97e494 Binary files /dev/null and b/screenshots/Testing_screen/Post2.png differ diff --git a/screenshots/Testing_screen/Put1.png b/screenshots/Testing_screen/Put1.png new file mode 100644 index 0000000..b00427e Binary files /dev/null and b/screenshots/Testing_screen/Put1.png differ diff --git a/screenshots/Testing_screen/Put2.png b/screenshots/Testing_screen/Put2.png new file mode 100644 index 0000000..1d4c38c Binary files /dev/null and b/screenshots/Testing_screen/Put2.png differ diff --git "a/screenshots/Testing_screen/\320\277\321\200\320\276\320\262\320\265\321\200\320\272\320\260_\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.png" "b/screenshots/Testing_screen/\320\277\321\200\320\276\320\262\320\265\321\200\320\272\320\260_\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.png" new file mode 100644 index 0000000..36efb86 Binary files /dev/null and "b/screenshots/Testing_screen/\320\277\321\200\320\276\320\262\320\265\321\200\320\272\320\260_\320\261\320\273\320\276\320\272\320\270\321\200\320\276\320\262\320\272\320\270.png" differ