\documentclass[12pt, a4paper] {ncc}
\usepackage[utf8] {inputenc}
\usepackage[T2A]{fontenc}
\usepackage[english, russian] {babel}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{listings,a4wide,longtable,amsmath,amsfonts,graphicx,tikz}
\usepackage{pgfplots}
\usepackage{indentfirst}
\usepackage{bytefield}

\begin{document}
\frenchspacing
\pagestyle{empty}
% ============================ ТИТУЛЬНЫЙ ЛИСТ ================================
\begin{center}
     Национальный исследовательский университет информационных технологий,
                              механики и оптики\\
                        Кафедра вычислительной техники\\
                          Сети ЭВМ и телекоммуникации
\end{center}
\vspace{\stretch{2}}
\begin{center}
                            Лабораторная работа №4\\
              <<Основы сетевого администрирования локальной сети>>
\end{center}
\vspace{\stretch{3}}
\begin{flushright}
                                          Работу выполнил студент группы P3315\\
                                                         {\it Халанский Дмитрий}
\end{flushright}
\vspace{\stretch{4}}
\begin{center}
                                      2016
\end{center}
\newpage
% ======================== КОНЕЦ ТИТУЛЬНОГО ЛИСТА ============================

% ================================ ОТЧЁТ =====================================

\section{Цели работы}

\begin{itemize}
        \item Изучить основные сетевые утилиты GNU/Linux;
        \item Изучить основные понятия маршрутизации;
        \item Научиться создавать простые брендмауэры на основе
                \texttt{iptables(8)}.
\end{itemize}

\section{Исходные данные}

\begin{description}
        \item[Количество букв в фамилии] 9
        \item[Количество букв в имени] 7
        \item[Количество букв в отчестве] 12
        \item[Суммарное Количество букв в ФИО] $9 + 7 + 12 = 28$
        \item[IP-адрес А] \texttt{10.9.7.12}
        \item[IP-адрес Б] \texttt{10.9.7.34}
        \item[Порт netcat] $20000 + 28 = 20028$
        \item[Протокол netcat] $9 \equiv 1 \mod 2 \Rightarrow$ TCP
        \item[Максимальный размер] $700 + 28 = 728$
        \item[Максимальный TTL] 28
\end{description}

\section{Ход работы}

\subsection{Создание и запуск}

Машина А:

\begin{verbatim}
root@host01:~# uname -a
Linux host01 3.16.0-4-586 #1 Debian 3.16.7-ckt25-2 (2016-04-08) i686 GNU/Linux
\end{verbatim}

Машина Б:

\begin{verbatim}
root@host02:~# uname -a
Linux host02 3.16.0-4-586 #1 Debian 3.16.7-ckt25-2 (2016-04-08) i686 GNU/Linux
\end{verbatim}

\subsection{Установка адресов}

После создания NAT-сети \texttt{10.9.7.0/24} и добавления в неё машин в
Virtualbox,

\begin{verbatim}
root@host01:~# ip a show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
group default qlen 1000
    link/ether 08:00:27:92:13:a5 brd ff:ff:ff:ff:ff:ff
    inet 10.9.7.4/24 brd 10.9.7.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe92:13a5/64 scope link
       valid_lft forever preferred_lft forever
root@host01:~# ip a del 10.9.7.4/24 dev eth0
root@host01:~# ip a add 10.9.7.12/24 dev eth0
root@host01:~# ip a show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
group default qlen 1000
    link/ether 08:00:27:92:13:a5 brd ff:ff:ff:ff:ff:ff
    inet 10.9.7.12/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe92:13a5/64 scope link
       valid_lft forever preferred_lft forever
\end{verbatim}

После проведения аналогичных действий на машине Б,

\begin{verbatim}
root@host01:~# ping -c 5 10.9.7.34
PING 10.9.7.34 (10.9.7.34) 56(84) bytes of data.
64 bytes from 10.9.7.34: icmp_seq=1 ttl=64 time=0.669 ms
64 bytes from 10.9.7.34: icmp_seq=2 ttl=64 time=0.585 ms
64 bytes from 10.9.7.34: icmp_seq=3 ttl=64 time=0.633 ms
64 bytes from 10.9.7.34: icmp_seq=4 ttl=64 time=0.703 ms
64 bytes from 10.9.7.34: icmp_seq=5 ttl=64 time=0.778 ms

--- 10.9.7.34 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.585/0.673/0.778/0.071 ms
\end{verbatim}

\subsection{Проверка путей маршрутизации}

Машина А:

\begin{verbatim}
root@host01:~# ip r show dev eth0
10.9.7.0/24  proto kernel  scope link  src 10.9.7.12
\end{verbatim}

Машина Б:

\begin{verbatim}
root@host02:~# ip r show dev eth0
10.9.7.0/24  proto kernel  scope link  src 10.9.7.34
\end{verbatim}

\subsection{Редактирование путей маршрутизации}

Машина А:

\begin{verbatim}
root@host01:~# ip r add 192.169.0.35 via 10.9.7.34 src 10.9.7.12 dev eth0
root@host01:~# ip r
10.9.7.0/24 dev eth0  proto kernel  scope link  src 10.9.7.12
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.10
192.169.0.35 via 10.9.7.34 dev eth0  src 10.9.7.12
root@host01:~# ip r del 192.169.0.35 via 10.9.7.34 src 10.9.7.12 dev eth0
\end{verbatim}

Предположим, что машина Б имеет доступ к внешней сети~--- к примеру, к адресу
\texttt{192.169.0.35}~--- а машина А не имеет. Прописав такой путь, мы
позволяем ей обращаться к требуемой машине, передавая запрос через машину Б.

\subsection{Работа с \texttt{netcat}}

\subsubsection{<<Б>> как сервер}

Машина Б в роли сервера:
\begin{verbatim}
root@host02:~# nc -lp 20028
Халанский
\end{verbatim}

Машина А в роли клиента:
\begin{verbatim}
root@host01:~# nc 10.9.7.12 20028
Халанский
\end{verbatim}

\subsubsection{<<А>> как сервер}

Машина А в роли сервера:
\begin{verbatim}
root@host01:~# nc -lp 20028
Дмитрий
\end{verbatim}

Машина Б в роли клиента:
\begin{verbatim}
root@host02:~# nc 10.9.7.12 20028
Дмитрий
\end{verbatim}

\subsection{Настройка firewall}

После каждого подраздела на обеих машинах выполняется \texttt{iptables -F}.

\subsubsection{Запрет передачи на порт 20028}

На машине Б:
\begin{verbatim}
root@host02:~# nc -lp 20028
\end{verbatim}

На машине А:
\begin{verbatim}
root@host01:~# iptables -I OUTPUT -p tcp --dport 20028 -j DROP
root@host01:~# nc 10.9.7.34 20028
Халанский
\end{verbatim}

На машине Б в консоли не должно появиться моей фамилии.

\subsubsection{Запрет приёма с порта 20028}

На машине А:
\begin{verbatim}
root@host01:~# iptables -I INPUT -p tcp --sport 20028 -j DROP
root@host01:~# nc -lp 20028
Халанский
root@host01:~# nc -lp 20028
\end{verbatim}

На машине Б:
\begin{verbatim}
root@host02:~# nc -p 20027 10.9.7.12 20028
Халанский
root@host02:~# nc -p 20028 10.9.7.12 20028
Халанский?
\end{verbatim}

\subsubsection{Запрет приёма от А}

На машине Б:
\begin{verbatim}
root@host02:~# iptables -I INPUT -s 10.9.7.12 -j DROP
\end{verbatim}

Тогда на машине А:
\begin{verbatim}
root@host01:~# ping -c 5 10.9.7.34
PING 10.9.7.34 (10.9.7.34) 56(84) bytes of data.

--- 10.9.7.34 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4000ms
\end{verbatim}

\subsubsection{Запрет отсылки на Б}

На машине А:
\begin{verbatim}
root@host01:~# iptables -I OUTPUT -d 10.9.7.34 -j DROP
root@host01:~# ping -c 5 10.9.7.34
PING 10.9.7.34 (10.9.7.34) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

--- 10.9.7.34 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 3999ms
\end{verbatim}

\subsubsection{Сложное задание}

На машине А:
\begin{verbatim}
root@host01:~# iptables -I INPUT  -m ttl --ttl-gt 28 \
        -m length --length 728:65535
root@host01:~# iptables -I OUTPUT -m ttl --ttl-gt 28 \
        -m length --length 728:65535
\end{verbatim}

\section{Анекдот}

Сидит мать программиста, смотрит телевизор. Вдруг она осознаёт, что её сын
сидит в ванной уже больше часа. Её это насторожило. Через полчаса она начала
паниковать. Стучится в дверь~--- оттуда молчание. Дёргает за ручку~--- закрыто.
Мать в ужасе зовёт отца, тот выламывает дверь.

Картина: сидит программист, волос на голове почти не осталось, и сосредоточенно
намыливает шампунем голову.

Мать его спрашивает:

--- Ты что делаешь, дурак?

Тот оскорблённо говорит:

--- Голову мою.

Показывает на бутылку шампуня, где написано:

\begin{enumerate}
        \item Взять небольшое количество шампуня;
        \item 3-5 минут намыливать волосы;
        \item Тщательно смыть шампунь;
        \item Повторить.
\end{enumerate}

\end{document}

