Особенности реализации ip сетей на ос windows b linux

Для будущих студентов курса «Сетевой инженер» и всех интересующихся подготовили полезную статью. Также приглашаем на открытый вебинар по теме «NAT — не Firewall»...

Сетевая подсистема в ОС

Время прочтения
7 мин

Просмотры 13K

Для будущих студентов курса «Сетевой инженер» и всех интересующихся подготовили полезную статью.

Также приглашаем на открытый вебинар по теме «NAT — не Firewall». Участники вебинара вместе с экспертом рассмотрят NAT и его использование, почему NAT != firewall, а также различные виды конфигураций для разных ситуаций.


В данной статье будет проведено исследование сетевой подсистемы ОС Windows и Linux, а также предложен план изучения подсистем операционной системы. Основная задача исследования — понять, из чего состоит сетевая подсистема; какие поддерживает протоколы из коробки; какие дополнительные механизмы использует в своей работе.

Disclamer: Статья описывает данные, которые с точки зрения автора помогут понять, как работают операционные системы с моделью TCP/IP, и не претендует на полноту.

Инструментарий и метод исследования

Для исследования операционной системы будем использовать следующие инструменты:

  • Операционная система Linux:

    • git;

    • Visual Studio Code;

  • Операционная система Windows:

    • strings.exe;

    • radare2;

    • hxD Editor;

    • Python;

    • Process Explorer.

Инструменты подобраны таким образом, чтобы можно было охватить максимальное количество форматов файлов, которые можно обнаружить в ОС. Для исходного же кода главный инструмент — редактор, который позволяет удобно переходить от исходника к исходнику для разбора кода.

В нашем исследовании будем руководствоваться двумя правилами:

  1. Используем всю информацию из документации операционных систем;

  2. Проверяем правдивость описанных данных. Для структур данных:

    • В ОС Windows исследуем соответствующие функционалу dll, sys файлы;

    • В ОС Linux исследуем исходные коды и отдельные ветки ядра;

Теперь определимся с проблемами, которые вероятно будут нас преследовать на протяжении всего исследования.

Проблемы при исследовании ОС Linux

Основной функционал подсистемы целиком находится в ядре. К счастью, исходный код доступен в сети. Исследование исходного кода таких больших проектов всегда довольно сложная задача. На её сложность может влиять несколько факторов:

  1. Субъективные:

    • у каждого исследователя разный уровень экспертизы в области языка программирования, который используется в исходном коде;

    • у каждого исследователя есть свой собственных подход на интерпретацию полученной информации.

  2. Объективные:

    • ограниченности исследования по времени;

    • объем исходного кода;

    • принятые правила кодирования проекта.

Как минимизировать количество действий исследователя, чтобы получить как можно больше полезной и интересной информации? Огромную роль играет правильно настроенное рабочее место. В нашем случае верную настройку определяет набор инструментов, который мы описали в разделе «Инструментарий и метод исследования». Также можно применить небольшой лайфхак и не рассматривать каждую строку исходников ядра, а рассматривать только высокоуровневые элементы. Это сэкономит время на изучение языка программирования и даст возможность разобраться, что к чему. Попробуем применить эту тактику на практике.

Сетевая подсистема Linux

Начнем наше исследование с вот такой интересной картинки:

Картинка представляет собой структуру директорий исходного кода ядра ОС Linux. На ней видно, что сетевая подсистема вовсе не самая большая часть операционной системы. По правде говоря, можно собрать ядро и без этой части. Сегодня это вариант только для embeded систем, в общем случае без сети представить Linux сложно.

Код, который относится к сетевой подсистеме, находится в директории «net». Посмотрим, из чего он состоит.

Исходный код собран по выполняемым задачам. За базовыми элементами можно обратиться в директорию core:

На картинке выделены названия файлов, которые описывают основные структуры для работы с сетью. Это создание сокетов, хранение пересылаемых данных и работа с фильтрующей подсистемой bfp. Именно этот код переиспользуется для остальной части сетевой подсистемы.

Оставшиеся файлы в директории «net» описывают работу ядра с различными протоколами. Интересным моментом здесь является то, что фильтрующая подсистема имеет какие-то файлы только в некоторых протоколах и подсистемах:

Прямоугольниками выделены те протоколы и подсистемы, которые содержат файлы netfilter. Как видно из картинки, механизм фильтрации трафика работает не со всеми протоколами. Также интересно то, что он присутствует не только в протоколах, но и в более высокоуровневой абстракции — bridge. Теперь понятно, почему bridge от Linux можно настроить настолько гибко и контролировать пересылаемые данные.

Что в итоге? Всего по 4м картинкам структуры исходных кодов ядра мы уже обладаем информацией о том, какие поддерживаются протоколы в ядре Linux, какие механизмы интегрированы в протоколы для контроля и фильтрации и где найти базовые элементы, которые позволяют использовать сеть. Попробуем найти эту информацию и в ОС Windows.

ОС Windows: сетевая подсистема

Изучить сетевую подсистему этой ОС так же просто, как в ОС Linux, не получится. Самый большой камень преткновения — закрытый исходный код. Однако давайте попытаемся восстановить информацию о том, как работает сетевая подсистема в рамках этой ОС. В качестве целей будем использовать то, что нашли в Linux:

  • Где располагается код для создания и работы с сокетами;

  • Какой механизм используется для фильтрации;

  • Как имплементированы протоколы.

    Сетевая подсистема, согласно документации построена по принципу модели OSI. И также приводится описание того, за счет каких технологий и типов файлов реализуется работа отдельных уровней модели.

Имплементация модели OSI в операционной системе начинается со строго определенных уровней. В данном случае всё начинается на уровне «Канальном» и заканчивается на уровне «Транспортном». Имплементация на каждом уровне своя:

  • Канальный уровень — состоит из MAC и LLC, соответственно и частей имплементации должно быть две:

    • MAC — miniportdriver это драйвер, который контролирует сетевой интерфейс;

    • LLC — protocol driver — драйвер, который используется для обработки данных от сетевых устройств;

  • Уровень сети — protocol driver — драйвер, который используется для обработки данных от сетевых устройств;

  • Уровень транспорта — protocol (transport) driver;

Вот и выявилось коренное отличие Windows от Linux — вся логика работы сетевой подсистемы разбита на множество элементов. Каждое устройство, каждый протокол и абстракция имплементированы не в ядре, а в модуле ядра — драйвере, который может быть загружен ядром по запросу. Что это значит для нас? У нас нет исходного кода данных драйверов, а значит мы не можем использовать подход, который использовали при изучении ОС Linux.

Как же быть? При разработке эксплойтов исследователи в качестве отправной точки для восстановления структур внутри ядра Windows используют проект с открытым исходным кодом — ReactOS. Попробуем сделать тоже самое. Давайте найдем части подсистемы и затем спроецируем найденную информацию на реальную ОС Windows.

На экране ниже приведен снимок директории с основными драйверами для сетевой подсистемы:

Попробуем найти такие же файлы в реальной ОС. Заглянем в директорию «%Windows%». В качестве исследуемой системы возьмем Windows 7.

Часть файлов действительно имеет названия файлов, которые присутствуют в реальной ОС.

Один из способов проверки функционала уже скомпилированного приложения — прочитать используемые им строки. Можем для этого воспользоваться утилитой strings.exe для tcpip.sys:

Похоже, что данные по работе с сетевой подсистемой можно обнаружить именно в этом драйвере. Поищем функции, которые позволяют фильтровать трафик. Как их идентифицировать?

В операционной системе Windows за всё время её существования было 2 технических спецификаций на основании которых создавались драйвера для сетевого взаимодействия: TDI и WinSock. И все эти спецификации использовали отдельный драйвер для того чтобы можно было собирать весь функционал — NDIS. Значит большая часть функций сконцентрирована в этих драйверах:

  • netio.sys

  • tcpip.sys

  • tdi.sys

  • ndis.sys

Но в них все равно нет функций, которые бы могли фильтровать трафик. Почему так? Дело в том, что до Windows 7 фильтрация трафика как такового была имплементирована в отдельных драйверах, которые настраивались за счет интерфейса Windows. Начиная с Windows 7 была реализована так называемая Windows Filtering Platform, которая определила часть драйверов в специальную категорию, которая и призвана фильтровать трафик.

Часть этих фильтров можно найти по обычному поиску в директориях ОС:

 Get-ChildItem "C:WINDOWSSystem32" FWPKCLNT.SYS -Recurse | Select-Object FullName
 Get-ChildItem "C:WINDOWSSystem32" wfplwf.sys -Recurse | Select-Object FullName

Используем утилиту strings.exe на файлы FWPKCLNT.SYS и wfplwf.sys:

Выше представлена часть строк, которые обнаружились в файле FWPKCLNT.sys, файл wfplwf.sys содержал только названия функций. Почему тогда они здесь вместе? Дело в том, что в импортах wfplwf.sys есть функция, которая берется из файла FWPKCLNT.sys:

В итоге:

  1. Имплементация всех объектов и механизмов в ядре для работы с протоколами — файлы из директории %Windows%System32Drivers. Основные из них — netio.sys, ndis.sys, tdi.sys.

  2. Фильтрацией занимаются драйвера WFP: FWPKCLNT.sys, wfplwf.sys.

  3. Имплементируются через отдельные одноименные файлы, например: tcpip.sys

В ОС Linux мы не задумывались о том как приложения получают доступ к структурам ядра и работают с сетью. Там более-менее всё очевидно и только один шаг до функций, но для Windows всё работает по принципу Callback`ов. Поэтому скорее всего будет несколько оберток для взаимодействия. Попробуем найти эти файлы.

Для поиска файлов, которые используются в качестве обертки-библиотеки, можно использовать следующий метод. Для этого создадим мини приложение, которое будет работать с сокетами, принимать и отправлять данные. Исходный код приложения:

import socket

HOST = '127.0.0.1'  
PORT = 10000        

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data)

Запускаем файл в ОС, если не возникло никаких ошибок, то необходимо параллельно запустить инструмент Process Explorer. С помощью этого инструмента мы подсмотрим, чем занимается поток, пока ждет соединения. На картинке ниже отображены все описанные действия:

Слева изображен стек вызовов функций, которые задействованы в процедуре настройки сокета и перевода его в состояние bind. Этот набор файлов — mswinsock.dll (Win Sock 2 Service) и WS2_32.dll(Windows Socket 2). Данные библиотеки используются для того, чтобы предоставить приложениям функции по работе с сокетами в ОС Windows.

Стоит отметить, что последовательность функций, которые вызываются для работы сокета в ОС, не виден в Process Explorer`е. Если нужно восстановить и эти данные, то нужно использовать отладчик ядра.

Таким образом, проводить исследование подсистем любых ОС и их механизмов можно с исходным кодом и без — достаточно выбрать необходимый набор инструментов, а также доступные методы, источники знаний.


Узнать подробнее о курсе «Сетевой инженер».Зарегистрироваться на открытый вебинар по теме «NAT — не Firewall».

Лабораторное занятие №6

Тема:
Установка и настройка
протокола
TCP/IP в ОС Windows и Linux.

Цель работы: Изучить способы диагностики настроек стека
протоколов TCP/ IP; получить сведения о настройке TCP/IP для работы с DHCP
сервером.

Оборудование: Компьютер в сборе или испытательный стенд.

Ход работы

1. Ознакомиться с теоретической частью.

2. Выполнить задания.

3. Ответить на контрольные вопросы.

4. Оформить отчет.

Теоретическая часть

На концептуальной модели взаимодействия
открытых систем OSI основан стек протоколов TCP/IP(Transmission
Control Protocol — протокол управления передачей / Internet Protocol –
Интернет-протокол)
, который предоставляет ряд стандартов для связи
компьютеров и сетей.

Стек протоколов TCP/IP – промышленный стандарт,
который позволяет организовать сеть масштаба предприятия и связывать
компьютеры, работающие под управлением различных операционных систем.

Применение стека протоколов TCP/IP дает
следующие преимущества:

·поддерживается почти всеми
операционными системами; почти все большие сети основаны на TCP/IP;

·технология позволяет соединить
разнородные системы;

·надежная, расширяемая
интегрированная среда на основе модели «клиент — сервер»;

·получение доступа к ресурсам сети
Интернет.

Каждый узел TCP/IP идентифицирован
своим логическим IP-адресом, который идентифицирует положение компьютера в сети
почти таким же способом, как номер дома идентифицирует дом на улице.

Реализация TCP/IP позволяет
узлу TCP/IP использовать статический IP-адрес или
получить IP-адрес автоматически с помощью DHCP-сервера (Dynamic
Host Configuration Protocol — протокол динамической конфигурации хоста).

Для простых сетевых конфигураций,
основанных на локальных сетях (LAN, Local Area Network), он поддерживает
автоматическое назначение IP-адресов.

По умолчанию компьютеры клиентов,
работающие под управлением ОС Windows или Linux,
получают информацию о настройке протокола TCP/IP автоматически
от службы DHCP.

Однако даже в том случае, если в сети
доступен DHCP-сервер, необходимо назначить статический
IP-адрес для отдельных компьютеров в сети. Например, компьютеры с запущенной
службой DHCP не могут быть клиентами DHCP,
поэтому они должны иметь статический IP-адрес.

Если служба DHCP недоступна,
можно настроить TCP/IP для использования статического
IP-адреса.

Для каждой платы сетевого адаптера в
компьютере, которая использует TCP/IP, можно установить
IP-адрес, маску подсети и шлюз по умолчанию.

Ниже описаны параметры, которые
используются при настройке статического адреса TCP/IP.

Параметр

Описание

IP-адрес

Логический
32-битный адрес, который идентифицирует TCP/IP узел. Каждой плате сетевого
адаптера в компьютере с запущенным протоколом TCP/IP необходим уникальный
IP-адрес, такой, как 192.168.0.108. Каждый адрес имеет две части: ID сети,
который идентифицирует все узлы в одной физической сети и ID узла, который
идентифицирует узел в сети. В этом примере ID сети — 192.168.0, и ID узла —
108.

Маска подсети

Подсети делят
большую сеть на множество физических сетей, соединенных маршрутизаторами.
Маска подсети закрывает часть IP-адреса так, чтобы TCP/IP мог отличать ID
сети от ID узла. При соединении узлов TCP/IP, маска подсети определяет, где
находится узел получателя: в локальной или удаленной сети. Для связи в
локальной сети компьютеры должны иметь одинаковую маску подсети.

Шлюз по умолчанию

Промежуточное
устройство в локальной сети, на котором хранятся сетевые идентификаторы
других сетей предприятия или Интернета. TCP/IP посылает пакеты в удаленную
сеть через шлюз по умолчанию (если никакой другой маршрут не настроен),
который затем пересылает пакеты другим шлюзам, пока пакет не достигнет шлюза,
связанного с указанным адресатом.

Если сервер с
запущенной службой DHCP доступен в сети, он
автоматически предоставляет информацию о параметрах TCP/IP клиентам DНСР.

Настройка и диагностика сети в ОС Linux

Для работы с сетевыми протоколами TCP/IP в Linux
достаточно наличие только петлевого интерфейса, но если необходимо
объединить хосты между собой, естественно, необходимо наличие сетевого
интерфейса, каналов передачи данных (например витая пара), возможно,
какого-либо сетевого оборудования. Так же, необходимо наличие установленных утилит для настройки сети (
/sbin/ifconfig, /sbin/route и др.), обычно поставляемые в пакете net-tools. Так же необходимо наличие
конфигурационных файлов для сети (например
/etc/hosts) и поддержку сети ядром
Linux
.

Файлы настроек сети в Linux (конфигурационные файлы)

В целом, вся работа Linux основана на процессе init, который рождается при
загрузке ОС и плодит своих потомков, которые в свою очередь и выполняют всю
необходимую работу. Вся загрузка Linux основана на скриптах
bash
, в которых прописана вся последовательность запуска мелких
утилит с различными параметрами, которые последовательно
запускаются/останавливаются при запуске/остановке системы. Аналогично
запускается и сетевая подсистема Linux.

/etc/init.d/networking

Это скрипт, отвечающий за инициализацию сети.

/etc/hosts

Данный файл хранит перечень IP адресов и соответствующих
им (адресам) имен хостов. Исторически, данный файл использовался вместо службы
DNS. В настоящее время, файл так же может использоваться вместо службы DNS, но
только при условии, что в вашей сети количество машин измеряется в единицах, а
не в десятках или сотнях, потому что в таком случае, придется контролировать
корректность данного файла на каждой машине.

/etc/networks

Данный файл хранит имена и адреса локальной и других
сетей. При использовании данного файла, сетями можно управлять по имени.
Например добавить маршрут не
route add 192.168.1.12, а route add home-network.

/etc/nsswitch.conf

Файл определяет порядок поиска имени хоста/сети.

/etc/resolv.conf

Данный фал определяет параметры механизма
преобразования сетевых имен в IP адреса. Простым языком, определяет настройки
DNS.

Настройка сети

Чтобы быть уверенным в работоспособности команды в
любом дистрибутиве, необходимо пользоваться двумя основными командами. Это
ifconfig и route. Первая команда (ifconfig) отвечает за настройку сетевых интерфейсов
(ip, маска, шлюз), вторая (
route)
— настройка маршрутизации. Следует заметить, что выполнение данных команд без
отключения стандартного скрипта запуска сетевой подсистемы внесет изменения
только до первой перезагрузки/перезапуска сетевой службы, т.к. скрипт
/etc/init.d/networking
при очередном запуске перечитает
указанные выше конфиги и применит старые настройки. Соответственно, выход для
постоянной установки настроек — либо команда
ifconfig с соответствующими параметрами — вписать в rc.local, либо поправить руками соответствующие конфиги
сетевых интерфейсов.

Так же, если выполняется команда ifconfig с недостающими параметрами (например только
IP адрес), то остальные дополняются автоматически (например бродкаст адрес
добавляется по умолчанию с хостовым адресом, оканчивающимся на 255 и маска
подсети по умолчанию берется 255.255.255.0).

Маршрутизация для имеющихся интерфейсов всегда
поднимается автоматически силами ядра. Вернее сказать, прямые марштуры в сеть,
в которую смотрит поднятый интерфейс формируются автоматически, силами ядра.
Поле
gateway (шлюз) для таких записей показывает адрес
выходного интерфейса или *. Если есть необходимость организовать свои маршруты,
то необходимо воспользоваться
командой route.
Данной командой можно добавлять и удалять маршруты, но опять же, это поможет
только до перезапуска
/etc/init.d/networking (или другого скрипта, отвечающего за вашу сеть). Чтобы маршруты
добавлялись автоматом, необходимо так же, как и с
ifconfig — добавить команды добавления маршрутов в rc.local, либо поправить руками соответствующие
конфиги сетевых интерфейсов (например в Deb —
/etc/network/options).

Диагностика сети Linux

Существует большое количество инструментов диагностики
сети в Linux, зачастую, они очень похожи на утилиты от Microsoft.

ping

Работа этой утилиты заключается в отправке т.н.
пакетов ICMP удаленному серверу, который будет указан в параметрах команды,
сервер возвращает отправленные команды, а
ping подсчитывает время требуемое отправленному
пакету, чтобы дойти до сервера и вернуться.

[root@proxy ~]# ping ya.ru
PING ya.ru (87.250.251.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=1 ttl=57 time=42.7 ms
64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=2 ttl=57 time=43.2 ms
64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=3 ttl=57 time=42.5 ms
64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=4 ttl=57 time=42.5 ms
64 bytes from www.yandex.ru (87.250.251.3): icmp_seq=5 ttl=57 time=41.9 ms
^C
--- ya.ru ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4012ms
rtt min/avg/max/mdev = 41.922/42.588/43.255/0.500 ms

Как видно, из приведенного примера, ping выводит нам кучу полезной информации. Прежде всего,
мы выяснили, что можем установить соединение с хостом ya.ru (иногда говорят,
что «хост ya.ru нам доступен»). Во-вторых, мы видим, что DNS работает
корректно, потому что «пингуемое» имя было корректно преобразовано в IP адрес (
ping ya.ru
(87.250.251.3)
). Далее, в поле icmp_seq= указана нумерация отправляемых пакетов.
Каждому отправляемому пакету последовательно присваивается номер и если в
данной нумерации будут «провалы», то это нам расскажет о том, что соединение с
«пингуемым» неустойчиво, а так же может означать, что сервер, которому шлют
пакеты перегружен. По значению
time=
мы видим, сколько времени пакет путешествовал до
87.250.251.3 и обратно. Остановить работу утилиты ping можно клавишами Ctrl+C.

Так же, утилита ping интересна тем, что может позволить увидеть,
где именно возникли неполадки. Допустим, утилита
ping выводит сообщение network not reachable (сеть недоступна), либо другое аналогичное
сообщение. Это, скорее всего, говорит о некорректной настройке вашей системы. В
таком случае, можно послать пакеты по IP-адресу провайдера, чтобы понять, в
каком месте возникает проблема (между локальным ПК или «дальше»). Если Вы
подключены к интернету через маршрутизатор, то можно послать пакеты по его IP.
Соответственно, если проблема проявиться уже на этом этапе, это говорит, о
неправильном конфигурировании локальной системы, либо о повреждении кабеля,
если маршрутизатор отзывается, а сервер провайдера нет, то проблема — в канале
связи провайдера и т.д. Наконец, если неудачей завершилось преобразовании имени
в IP, то можно проверить связь по IP, если ответы будут приходить корректно, то
можно догадаться, что проблема в DNS.

Следует отметить, что данная утилита не всегда
надежный инструмент для диагностики. Удаленный сервер может блокировать ответы
на ICMP запросы.

traceroute

Простым языком, команда называется трассировка
маршрута. Как можно понять из названия — данная утилита покажет по какому
маршруту шли пакеты до хоста. Утилита
traceroute несколько похожа на ping, но отображает больше интересной информации.
Пример
:

[root@proxy ~]# traceroute ya.ru

traceroute to ya.ru (213.180.204.3), 30 hops max, 60 byte
packets

1 243-083-free.kubtelecom.ru (213.132.83.243) 6.408 ms 6.306 ms
6.193 ms

2 065-064-free.kubtelecom.ru (213.132.64.65) 2.761 ms 5.787 ms
5.777 ms

3 lgw.kubtelecom.ru (213.132.75.54) 5.713 ms 5.701 ms 5.636 ms

4 KubTelecom-lgw.Krasnodar.gldn.net (194.186.6.177) 81.430 ms
81.581 ms 81.687 ms

5 cat26.Moscow.gldn.net (194.186.10.118) 47.789 ms 47.888 ms
48.011 ms

6 213.33.201.230 (213.33.201.230) 43.322 ms 41.783 ms 41.106 ms

7 carmine-red-vlan602.yandex.net (87.250.242.206) 41.199 ms
42.578 ms 42.610 ms

8 www.yandex.ru (213.180.204.3) 43.185 ms 42.126 ms 42.679 ms

Как видно, можно проследить маршрут от маршрутизатора
провайдера
243-083-free.kubtelecom.ru
(213.132.83.243)
(Юг России) до
конечного хоста в
www.yandex.ru (213.180.204.3) в Москве.

dig

Данная утилита посылает запросы серверам DNS и
возвращает информацию о заданном домене.

Консольные
команды управления сетевым интерфейсом.

ifconfig [опции] – стандартная команда Unix управления сетевым
интерфейсом. В Mandriva Linux управляющие возможности этой команды ограничены.

ifup <устройство> — консольная команда включения сетевого
интерфейса.

ifdown <устройство> — консольная команда выключения сетевого
интерфейса.

ping <ip адрес> — команда проверки функционирования сети с
использованием icmp пакета. Для выхода из режима проверки сети необходимо
нажать
CTRL+C.

arp [опции] – Команда печати таблицы памяти МАС адресов компьютера.

Задания на лабораторную работу

Задание 1. Проверьте работоспособность
стека протоколов TCP/IP в ОС
Windows.

1.  
Запустите
виртуальную машину и загрузите ОС Windows.

2.  
Запустите
консоль (Пуск/Программы/Стандартные/Командная строка).

3.  
В командной
строке введите ipconfig /all.

4.  
Используя
приведенную ниже информацию, создайте в своей папке текстовый документ со
следующими данными:

o Имя компьютера;

o Основной DNS-суффикс;

o Описание DNS-суффикса для подключения;

o Физический адрес;

o DHCP включен;

o Автоконфигурация включена;

o IP-адрес автоконфигурации;

o Маска подсети;

o Шлюз по умолчанию.

5.  
Убедитесь в
работоспособности стека TCP/IP, отправив эхо-запросы на
IP-адреса. Для этого воспользуйтесь командой
ping:

o отправьте эхо-запросы на локальный адрес
компьютера (loopback) ping 127.0.0.1 (на экране должны появиться
сообщения о полученном ответе от узла 127.0.0.1);

o отправьте эхо-запрос по другому IP-адресу,
например 192.168.10.1.

Задание 2. Настройте стек
протоколов TCP/IP для использования статического IP-адреса.

1.  
Откройте
окно Сетевые подключения (Пуск/Панель управления/Сетевые
подключения)
.

2.  
Вызовите свойства
подключения по локальной сети
. Для этого можно воспользоваться контекстным
меню.

3.  
В появившемся
диалоговом окне на вкладке Общие откройте свойства Протокол
Интернета TCP/IP
.

4.  
Щелкните
переключатель Использовать следующий IP-адрес и введите в
соответствующие поля данные:IP_адрес; Маску подсети; Основной шлюз;
Предпочитаемый DNS
.

5.  
Примените
параметры кнопкой ОК.

6.  
Закройте окно
свойств подключения кнопкой ОК (если потребуется, то
согласитесь на перезагрузку компьютера).

7.  
Проверьте
работоспособность стека протоколов TCP/IP.

Задание 3. Настройте TCP/IP для
автоматического получения IP-адреса.

1.  
Откройте
окно Сетевые подключения.

2.  
Вызовите
свойства Подключения по локальной сети.

3.  
Откройте
свойства Протокол Интернета TCP/IP.

4.  
Установите
переключатель Получить IP-адрес автоматически.

5.  
Закройте
диалоговое окно Свойства: Протокол Интернета TCP/IP кнопкой ОК.

6.  
Примените
параметры кнопкой ОК.

7.  
Проверьте
настройку стека протоколов TCP/IP.

8.  
Получите
другой адрес для своего компьютера. Для этого:

o запустите консоль (командную строку);

o введите команду для сброса назначенных
адресов — ipconfig /release;

o введите команду для получения нового
адреса ipconfig /renew;

9.  
Проверьте
работоспособность стека протоколов TCP/IP.

Задание 4. Настройка и диагностика сети в ОС Linux.

 1 Загрузите
ОС
Linux

 2 Изучите
файл настройки сетевого интерфейса:
/etc/sysconfig/network-scripts/ifcfg-eth0

 3 Изучите
руководство программы
ifconfig.

 4 Изучите
руководство программы
ifcfg.

 5 Просмотрите
сетевые интерфейсы при помощи команды
ifconfig.

 6 Выключите
интерфейс eth0, применив консольную команду
ifdown.

 7 Просмотрите
изменение параметров настройки сетевого интерфейса eth0 при помощи команды
ifconfig.

 8 Сделайте
копию экрана во время выполнения операции для отчета по лабораторной работе.

 9 Включите
интерфейс eth0 при помощи команды
ifup.

 10 Присвойте интерфейсу eth0 IP-адрес
из диапазона 192.168.0.190-192.168.0.200 с маской 255.255.255.0
при помощи команды ifconfig.

 11 Просмотрите изменение параметров настройки сетевого интерфейса eth0 при
помощи команды
ifconfig.

 12 Выведите кэш МАС адресов при помощи команды arp.

 13 Сделайте копию экрана во время выполнения операции для отчета по
лабораторной работе.

 14 Проверьте функционирование сетевого интерфейса при помощи команды ping: ping <адрес вашей
машины>
.

 15 Проверьте функционирование сети при помощи команды ping: ping <адрес другой
включенной машины класса>
.

 16 Сделайте копию экрана во время выполнения операции для отчета по
лабораторной работе.

Содержание отчета

Тема, цель,
оборудование, порядок выполнения заданий, ответы на контрольные вопросы, вывод
.

Контрольные вопросы

1.  
Что означает
понятие «статический IP-адрес».

2.  
Как происходит
автоматическое получение IP-адреса.

3.  
Назначение
маски подсети.

4.  
Как выполнить тестирование
протокола TCP/IP.

5.     Что такое интерфейс lo? Какой у него
адрес?

6.  
Почему ping до вашей сетевой платы идет быстрее чем до
другого компьютера класса?

Сеть, работа с сетью в Unix и Windows системах
Сеть, работа с сетью в Unix и Windows системах

Содержание

Системный администратор

Сеть, работа с сетью в Unix системах: freebsd,linux, сетевой интерфейс, форвардинг маршрутов, маршрутизация, включить форвардинг маршрутов, открытые порты, фаервол, штатный фаервол, dns кэш, анализ трафика, netcat, передача файла.

Сеть, работа с сетью в Unix и Windows системах

Сеть, работа с сетью в Unix и Windows системах

Отладка в Linux

# ethtool eth0                            # Показать Ethernet статус 
# ethtool -s eth0 speed 100 duplex full   # Принудительная установка режима 100Mbit Full duplex
# ethtool -s eth0 autoneg off             # Отключить автоопределение
# ethtool -p eth1                         # Мигать индикатором сетевой карты - если поддерживается
# ip link show                            # Список сетевых интерфейсов в Linux (подобна ifconfig)
# ip link set eth0 up                     # Активировать сетевой интерфейс (или отключить). Аналог "ifconfig eth0 up"
# ip addr show                            # Список всех IP адресов в Linux ( аналог ifconfig)
# ip neigh show                           # Тоже что и arp -a

Другие операционный системы

# ifconfig fxp0                           # Проверить поле "media" во FreeBSD
# arp -a                                  # Показать таблицу маршрутизации сети, роутера (или хоста) (все OS)
# ping cb.vu                              # Пинговать хост
# traceroute cb.vu                        # Печатать путь маршрута до точки назначения
# ifconfig fxp0 media 100baseTX mediaopt full-duplex # 100Mbit full duplex (FreeBSD)
# netstat -s                              # Общесистемная статистика по всем сетевым протоколам

Дополнительные инструменты для отладки сети, которые не всегда установлены по умолчанию, но найти их не трудно:

# arping 192.168.16.254     # Пропинговать на уровне ethernet
# tcptraceroute -f 5 cb.vu  # Использует tcp вместо icmp что-бы отслеживать маршрут через фаервол

Маршрутизация сети

Печать таблицы маршрутизации

# route -n                  # Linux или используйте "ip route"
# netstat -rn               # Linux, BSD и UNIX
# route print               # Windows

Добавление и удаление маршрута

FreeBSD
# route add 212.117.0.0/16 192.168.1.1
# route delete 212.117.0.0/16
# route add default 192.168.1.1

Добавить постоянный маршрут сети в /etc/rc.conf

static_routes="myroute" route_myroute="-net 212.117.0.0/16 192.168.1.1"
Linux
# route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254
# ip route add 192.168.20.0/24 via 192.168.16.254       # Как и выше с ip маршрутом
# route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0
# route add default gw 192.168.51.254
# ip route add default via 192.168.51.254 dev eth0      # Как и выше с ip маршрутом
# route delete -net 192.168.20.0 netmask 255.255.255.0
Solaris
# route add -net 192.168.20.0 -netmask 255.255.255.0 192.168.16.254
# route add default 192.168.51.254 1                    # 1 = прыгнуть на следующий шлюз
# route change default 192.168.50.254 1

Постоянные записи устанавливаются в /etc/defaultrouter.

Windows

# Route add 192.168.50.0 mask 255.255.255.0 192.168.51.253
# Route add 0.0.0.0 mask 0.0.0.0 192.168.51.254

Используйте «add -p» что-бы сделать маршрут постоянным.

Настройка дополнительных IP адресов

Linux

# ifconfig eth0 192.168.50.254 netmask 255.255.255.0       # Первый IP адрес
# ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0     # Второй IP адрес
# ip addr add 192.168.50.254/24 dev eth0                   # Эквивалентные команды для ip
# ip addr add 192.168.51.254/24 dev eth0 label eth0:1

FreeBSD

# ifconfig fxp0 inet 192.168.50.254/24                     # Основной IP адрес сетевого интерфейса
# ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0 # Добавить второй IP адрес в виде псевдонима
# ifconfig fxp0 -alias 192.168.51.254                      # Удалить псевдоним для второго IP адреса

Постоянные записи в /etc/rc.conf

ifconfig_fxp0="inet 192.168.50.254 netmask 255.255.255.0"
ifconfig_fxp0_alias0="192.168.51.254 netmask 255.255.255.0"

Solaris

Проверка настроек с ifconfig -a

# ifconfig hme0 plumb                                      # Установить сетевую карту
# ifconfig hme0 192.168.50.254 netmask 255.255.255.0 up    # Первый IP адрес
# ifconfig hme0:1 192.168.51.254 netmask 255.255.255.0 up  # Второй IP адрес

Смена MAC адреса

Для начала вы должны деактивировать сетевой интерфейс.. и не говорите никому для чего вы хотите сменить MAC…)

# ifconfig eth0 down
# ifconfig eth0 hw ether 00:01:02:03:04:05      # Linux
# ifconfig fxp0 link 00:01:02:03:04:05          # FreeBSD
# ifconfig hme0 ether 00:01:02:03:04:05         # Solaris
# sudo ifconfig en0 ether 00:01:02:03:04:05     # Mac OS X Tiger
# sudo ifconfig en0 lladdr 00:01:02:03:04:05    # Mac OS X Leopard

Под Windows существует масса инструментов для смены MAC адреса, например etherchange или обратитесь у гуглу на тему «Mac Makeup», «smac».

Сетевые порты

Список открытых портов:

# netstat -an | grep LISTEN
# lsof -i                                 # Ссписок всех интернет соединений Linux
# socklist                                # Список открытых портов Linux
# sockstat -4                             # Список приложений слушающих на отррытых портах
# netstat -anp --udp --tcp | grep LISTEN  # Linux
# netstat -tup                            # Список активных соединений входящие/исходящие Linux
# netstat -tupl                           # Список слушающих портов Linux
# netstat -ano                            # Windows

Фаерволы

Linux

# iptables -L -n -v                  # Статус
Открыть iptables firewall
# iptables -P INPUT       ACCEPT     # Установить политику по умолчанию лоя цепочки INPUT - "открыть все"
# iptables -P FORWARD     ACCEPT # что и строкой выше только для цепочки FORWARD
# iptables -P OUTPUT      ACCEPT  # аналогично для цепочки OUTPUT
# iptables -Z                        # Сбросить счетчики во всех цепочках
# iptables -F                        # Сбросить все цепочки
# iptables -X                        # Удалить все цепочки

FreeBSD

# ipfw show                     # Статус
# ipfw list 65535                    # Epyfnm тип фаервол, закрытый или открытый 
# sysctl net.inet.ip.fw.enable=0     # Отключить штатный фаервол IPFW
# sysctl net.inet.ip.fw.enable=1     # Включить штатный фаервол IPFW

Форвардинг маршрутов

Linux

Проверить и если нужно, включить форвардинг маршрутов

# cat /proc/sys/net/ipv4/ip_forward  # Проверить включен или нет форвардинг, 0=off, 1=on
# echo 1 > /proc/sys/net/ipv4/ip_forward

или добавьте в /etc/sysctl.conf:

net.ipv4.ip_forward = 1

FreeBSD

Проверить состояние форвардинга и если нужно включить:

# sysctl net.inet.ip.forwarding         # Проверить включен форвардинг или нет, 0=off, 1=on
# sysctl net.inet.ip.forwarding=1
# sysctl net.inet.ip.fastforwarding=1	# Для выделенного маршрута или фаервола

Запись в /etc/rc.conf:

gateway_enable="YES" # Установите YES если данный хост является шлюзом

Solaris

# ndd -set /dev/ip ip_forwarding 1      # Включить форвардинг маршрутов 0=off, 1=on

Трансляция сетевых адресов NAT

Linux

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE	# Включить NAT
# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT 
--to 192.168.16.44:22           # Перебросить порт 20022 на внутренний IP порт ssh
# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT 
--to 192.168.16.254:993-995     # Переброс портов из диапазона 993-995
# ip route flush cache
# iptables -L -t nat            # Проверить статус таблицы NAT

FreeBSD

# natd -s -m -u -dynamic -f /etc/natd.conf -n fxp0

Или добавьте в /etc/rc.conf:

firewall_enable="YES"           # YES - Включить фаервол
firewall_type="open"            # Тип фаервола (см. /etc/rc.firewall)
natd_enable="YES"               # Включить natd (если firewall_enable == YES)
natd_interface="tun0"           # Сетевой интерфейс или IP адрес, который будет использовать natd
natd_flags="-s -m -u -dynamic -f /etc/natd.conf"

Для переброски портов:

# cat /etc/natd.conf 
same_ports yes
use_sockets yes
unregistered_only
# redirect_port tcp insideIP:2300-2399 3300-3399  # Диапазон портов
redirect_port udp 192.168.51.103:7777 7777

DNS

В Unix, DNS записи действительны для всех интерфейсов и хранятся в /etc/resolv.conf. Зона к которой принадлежит хост, так-же хранится в этом файле. Минимальная конфигурация:

nameserver 78.31.70.238 search sleepyowl.net intern.lab domain sleepyowl.net

Проверить доменное имя:

# hostname -d                        # Аналог dnsdomainname

Windows

В Windows, DNS настраивается для каждого интерфейса. Что-бы посмотреть текущую конфигурацию и сбросить DNS кэш, используйте:

# ipconfig /?                        # Помощь по использованию команды
# ipconfig /all                      # Посмотреть всю информацию, включая DNS

Очистка DNS кэша

Вы можете очистить DNS кэш, но помните, некоторые приложения используют свой, персональный кэш ( например Фаерфокс ), и на них обнуление не подействует.

# /etc/init.d/nscd restart           # Перезапустить nscd ( демон кэширования имен ) Linux/BSD/Solaris
# lookupd -flushcache                # OS X Tiger
# dscacheutil -flushcache            # OS X Leopard и более новые
# ipconfig /flushdns                 # Windows

Пересылка DNS запросов

Dig, утилита для проверки настроек DNS. Например, используем для проверки публичный DNS сервер 213.133.105.2 ns.second-ns.de. Обратите внимание с какого сервера клиент получит ответ (упрощенный ответ).

# dig sleepyowl.net
sleepyowl.net.          600     IN      A       78.31.70.238
;; SERVER: 192.168.51.254#53(192.168.51.254)

Маршрутизатор 192.168.51.254, прислал в качестве ответа, запись типа А. Запись определенного типа для запроса и DNS сервер, могут быть указаны с символом @:

# dig MX google.com
# dig @127.0.0.1 NS sun.com          # Проверить локальный dns сервер
# dig @204.97.212.10 NS MX heise.de  # Запрос к внешнему dns серверу
# dig AXFR @ns1.xname.org cb.vu      # Получить всю зону (пересылка зоны) с dns сервера

Еще одна полезная утилита, host:

# host -t MX cb.vu                   # Получить записть типа MX ( Mail Exchange )
# host -t NS -T sun.com              # Получить NS запись через TCP соединение
# host -a sleepyowl.net              # Получить все

Обратные запросы

Узнать имя по IP адресу можно с помощью таких утилит как dighost или nslookup:

# dig -x 78.31.70.238
# host 78.31.70.238
# nslookup 78.31.70.238

файл /etc/hosts

Отдельные хосты могут быть настроены в файле /etc/hosts, вместо запуска named, для разрешения имени в адрес. Формат следующий:

78.31.70.238   sleepyowl.net   sleepyowl

Приоритет между файлом hosts и DNS запросом, может быть сконфигурирован в /etc/nsswitch.conf И /etc/host.conf. Подобный файл присутствует и в Windows, и расположен как правило по адресу c:windowssystem32driversetc

Протокол динамической адресации сети — DHCP

h4>Linux Некоторые дистрибутивы (SuSE) используют в качестве клиента dhcpd. Интерфейс по-умолчанию eth0.

# dhcpcd -n eth0           # Обновить (не всегда работает)
# dhcpcd -k eth0           # Освободить и выключить

Lease ( cрок аренды — это время, на которое IP адрес может быть выдан определенному хосту сети ) и вся информация сохраняется в:

/var/lib/dhcpcd/dhcpcd-eth0.info

FreeBSD

FreeBSD (и Debian) использует dhclient. Для настройки нужного сетевого интерфейса (например bge0):

# dhclient bge0

Срок аренды и вся информация сохраняется в:

/var/db/dhclient.leases.bge0

Используйте /etc/dhclient.conf для добавления опций или изменения существующих:

# cat /etc/dhclient.conf
interface "rl0" {
    prepend domain-name-servers 127.0.0.1;
    default domain-name "sleepyowl.net";
    supersede domain-name "sleepyowl.net";
}

Windows

Dhcp аренда(lease) может быть обновлена с помощью ipconfig:

# ipconfig /renew          # Обновить все адаптеры
# ipconfig /renew LAN      # Обновить сетевой адаптер с именем "LAN"
# ipconfig /release WLAN   # Освободить сетевой адаптер с именем "WLAN"

Неплохой идеей будет дать сетевым адаптерам более внятные имена

Анализ трафика

Анализ трафика с помощью tcpdump

# tcpdump -nl -i bge0 not port ssh and src (192.168.16.121 or 192.168.16.54)
# tcpdump -n -i eth1 net 192.168.16.121           # Выборка входящий/исходящий по одному IP адресу
# tcpdump -n -i eth1 net 192.168.16.0/24          # Выборка входящий/исходящий по адресу сети
# tcpdump -l > dump && tail -f dump       # Вывод через буфер
# tcpdump -i rl0 -w traffic.rl0                   # Писать заголовки пакетов в бинарный файл
# tcpdump -i rl0 -s 0 -w traffic.rl0              # Писать в бинарник полные пакеты
# tcpdump -r traffic.rl0                          # Прочитать из файла ( так-же для ethereal ) для дальнейшего анализа
# tcpdump port 80                                 # Классические команды
# tcpdump host google.com
# tcpdump -i eth0 -X port (110 or 143)          # Проверить защищенность pop или imap
# tcpdump -n -i eth0 icmp                         # Выборка icmp ( ping ) пакетов
# tcpdump -i eth0 -s 0 -A port 80 | grep GET      # -s 0 для полных пакетов, -A для ASCII

Некоторые важные опции:

  • -A — Печатать текст из пакетов ( без заголовков )
  • -X — Печатать пакеты в hex и ASCII
  • -l — Включить буферизацию вывода
  • -D — Показать все активные сетевые интерфейсы

В операционных системах Windows для анализа трафика можно воспользоваться windump с www.winpcap.org. Windump -D выведет список интерфейсов.

Сканирование сети с помощью программы nmap

Nmap, это многофункциональный сканер безопасности с возможностью определения установленной операционной системы. Работает во всех Unix дистрибутивах, так-же существует версия под Windows. Если вы не просканируете свои сервера, за вас это сделают доброжелатели. )

# nmap cb.vu               # Просканировать все зарезервированные порты хоста
# nmap -sP 192.168.16.0/24 # Выяснить какой IP каким хостом используется в сети 0/24
# nmap -sS -sV -O cb.vu    # Провести stealth SYN сканирование с определением типа и версии OS
PORT      STATE  SERVICE             VERSION
22/tcp    open   ssh                 OpenSSH 3.8.1p1 FreeBSD-20060930 (protocol 2.0)
25/tcp    open   smtp                Sendmail smtpd 8.13.6/8.13.6
80/tcp    open   http                Apache httpd 2.0.59 ((FreeBSD) DAV/2 PHP/4.
[...]
Running: FreeBSD 5.X
Uptime 33.120 days (since Fri Aug 31 11:41:04 2007)

Другие полезные инструменты: hping, конструктор/анализатор IP пакетов, fping ( fping.sourceforge.net ), проверка хостов round-robin.

Контроль трафика (QoS)

Traffic control управляет очередностью, порядком, планированием и другими параметрами трафика в сети. Следующие примеры, небольшие практические приемы для Linux и FreeBSD позволяющие оптимизировать использование пропускной способности.

Ограничение загрузок(upload)

Linux

Для 512 Кбитного модема.

# tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540
# tc -s qdisc ls dev eth0                         # Статус
# tc qdisc del dev eth0 root                      # Удалить очередь
# tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540
FreeBSD

FreeBSD использует dummynet — шейпер трафика, встроенный в штатный фаервол операционной системы, IPFW или подгружаемый как модуль ядра FreeBSD. Pipes, так называемые трубы для трафика, ограничивают пропускную способность в [K|M]{bit/s|Byte/s}, 0 означает безлимитный. Например, ограничим пропускную способность в 500 Кбит.

# kldload dummynet                                # Загрузить модуль если необходимо
# ipfw pipe 1 config bw 500Kbit/s                 # Создать трубу с ограничением трафика 500Кбит/с
# ipfw add pipe 1 ip from me to any               # Отклонять излишний трафик

QoS Quality of service

Linux

Приоритет очередей в tc для оптимизации VoIP трафика. Полные примеры можно посмотреть на voip-info.org или www.howtoforge.com. Следующий пример демонстрирует использование QoS для VoIP трафика.

# tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0
# tc qdisc add dev eth0 parent 1:1 handle 10: sfq
# tc qdisc add dev eth0 parent 1:2 handle 20: sfq
# tc qdisc add dev eth0 parent 1:3 handle 30: sfq
# tc filter add dev eth0 protocol ip parent 1: prio 1 u32 
  match ip dport 10000 0x3C00 flowid 1:1          # Использовать диапазон портов
  match ip dst 123.23.0.1 flowid 1:1              # или/и использовать IP сервера

Проверить состояние или удалить:

# tc -s qdisc ls dev eth0                         # Проверить состояние очереди
# tc qdisc del dev eth0 root                      # Удалмть все очереди

FreeBSD

Максимальная пропускная способность соединения 500Кбит/с, мы назначаем 3 очереди с приоритетами 100:10:1 для VoIP:ssh:всего остального, соответственно.

# ipfw pipe 1 config bw 500Kbit/s 
# ipfw queue 1 config pipe 1 weight 100
# ipfw queue 2 config pipe 1 weight 10
# ipfw queue 3 config pipe 1 weight 1
# ipfw add 10 queue 1 proto udp dst-port 10000-11024
# ipfw add 11 queue 1 proto udp dst-ip 123.23.0.1 # или/и используем IP
# ipfw add 20 queue 2 dsp-port ssh
# ipfw add 30 queue 3 from me to any              # Все остальное

Состояние и удаление:

# ipfw list                                       # Посмотреть состояние
# ipfw pipe list                                  # Состояние Pipes
# ipfw flush                                      # Очистить все правила кроме дефолтовых

NIS (Информационная служба сети)

Некоторые команды для конфигурирования NIS клиента:

# ypwhich                          # Получитьимя имя подключенного NIS сервера
# domainname                       # Доменное имя NIS
# ypcat group                      # Показать группу из NIS
# cd /var/yp && make       # Пересобрать базу данных yp
# rpcinfo -p servername            # Отчет RPC служб сервера

Ypbind запущен ?

# ps auxww | grep ypbind
/usr/sbin/ypbind -s -m -S servername1,servername2	# FreeBSD
/usr/sbin/ypbind                                        # Linux
# yppoll passwd.byname
Map passwd.byname has order number 1190635041. Mon Sep 24 13:57:21 2007
The master server is servername.domain.net.

Linux

# cat /etc/yp.conf
ypserver servername
domain domain.net broad
cast

Сетевая утилита netcat

Netcat (nc), известна так-же как «network Swiss Army Knife», предназначена для создания, чтения, записи TCP/IP соединений. Вот несколько полезных примеров, в сети их можно найти массу, например: тут или тут. Вместо netcat, можно использовать сокращение nc. Так-же можете посмотреть socat.

Передача файлов

Копирование большого файла через TCP соединение. Передача происходит очень быстро и не требует поднятия NFS, SMB, FTP и т.д… просто сделайте файл доступным на сервере и заберите его с клиента. В данном случае 192.168.1.1, IP адрес сервера.

server# tar -cf - -C VIDEO_TS . | nc -l -p 4444      # Заархивировать директорию и выставить архив на порт 4444
client# nc 192.168.1.1 4444 | tar xpf - -C VIDEO_TS  # забрать файл с порта 4444 и разархивировать в дмректорию

server# cat largefile | nc -l 5678                   # Приготовить к отправке один файл
client# nc 192.168.1.1 5678 > largefile              # Забрать файл

server# dd if=/dev/da0 | nc -l 4444                  # Приготовить к отправке файл образа раздела
client# nc 192.168.1.1 4444 | dd of=/dev/da0         # Забрать файл образа для создания дублеката раздела
client# nc 192.168.1.1 4444 | dd of=da0.img          # или забрать файл образа и сохранить как файл

server#  nc -l 5555 < ./test.file            # Файл выставляется в сокет nc с адресом 192.168.1.1, порт 5555
client#  nc 192.168.1.1 5555 > ~/test.file   # На другой машине, забираем файл, с 192.168.1.1 порт 5555

Другие трюки

Тут будьте осторожней, вы открываете доступ к своей системе.

Удаленный shell

Опция -e только для Windows версии или используйте nc 1.10.

# nc -lp 4444 -e /bin/bash                        # Предоставить удаленную оболочку
# nc -lp 4444 -e cmd.exe                          # Удаленная оболочка в Windows
Аварийный Веб сервер

Обслуживать один файл на 80 порту в цикле.

# while true; do nc -l -p 80 < unixtoolbox.xhtml; done
Простой TCP чат

Элис и Боб могут общаться через простой TCP сокет. Текст передается по нажатию Enter.

alice # nc -lp 4444
bob # nc 192.168.1.1 4444

54

Windows Server поддерживает также службу динамического именования хостов, Dynamic DNS. В соответствии с RFC 2136 служба Dynamic DNS расширяет протокол DNS, позволяя модифицировать базу данных DNS со стороны удаленных систем. Например, при подключении некоторый контроллер домена может сам добавлять SRVзапись для себя, освобождая администратора от такой необходимости.

Примечание: DNS-сервер, используемый вместе с Active Directory, должен лишь поддерживать SRV-записи и символы подчеркивания в именах, наличие Dynamic DNSне строго обязательно: такое требование только облегчает работу с сетью. Этот факт очень важен при развертывании Windows 2000 в гетерогенных сетях, где имеются DNS-серверы на других платформах.

Литература: [1-5, 10-12]

Вопросы для изучения:

ОС Windows

ОС Linux

Совместное использование ОС Windows и Linux в сети.

Впоследнее время популярность Linux растет буквально каждый день. Linux является высокопроизводительной некоммерческой операционной системой, одной из разновидностей Unix. Как известно, она была создана выпускником Хельсинкского университета Линусом Торвальдсом. Основными преимуществами Linux являются открытость и мультипоточность, кроме того, в ней есть возможности четкого разграничения ресурсов и уровней доступа пользователей. На сегодняшний день многие производители программного обеспечения поддерживают эту операционную систему; среди них выделим Oracle и Informix.

Samba — набор программ, которые предназначены для организации доступа клиентов к файловому пространству сервера и принтерам с помощью протоколов SMB (Server Message Block)и CIFS (Common Internet Filesystem). Первоначально написанный для Unix Samba теперь также работает под управлением и других ОС, в частности OS/2 и VMS. Это означает, что такие средства этих операционных систем, как файл-сервер и сервер печати, могут быть использованы для SMB- и CIFS-клиентов. В настоящее время существуют соответствующие клиенты для DOS, Windows NT, Windows 95, Linux smbfs, OS/2,

55

Pathworks. Протокол SMB используется Microsoft Windows NT и 95 для организации доступа к дискам и принтерам.

При помощи SAMBA возможно:

предоставлять доступ к файловой системе под ОС Linux для Windows-машин; получать доступ к файловой системе под ОС Windows для Linux-машин; предоставлять доступ к принтерам под ОС Linux для Windows-машин; получать доступ к принтерам под ОС Windows для Linux-машин. Компоненты пакета Samba выполняют следующие функции:

Демон smbd предоставляет службы доступа к файлам и принтерам для клиентов протокола SMB, таких как Windows 95/98, Windows for Workgroups, Windows NT или

LanManager. Конфигурация для этого демона задается в файле smb.cfg.

Демон nmbd обеспечивает поддержку сервера имен Netbios для клиентов. Он может запускаться в интерактивном режиме для опроса других демонов службы имен. Программа smbclient является простым SMB-клиентом для UNIX-машин. Она используется для доступа к ресурсам на других SMB-совместимых серверах (таких как Windows NT), а также позволяет UNIX-станции воспользоваться удаленным принтером, подключенным к любому SMB-серверу (например, к компьютеру с WfWg).

Утилита testparm предназначена для проверки файла конфигурации smb.conf. Утилита smbstatus позволяет выяснить, кто в данный момент использует сервер smbd. Утилита nmblookup дает возможность запрашивать имена NetBios из UNIX-машин.

При помощи утилиты make smbcodepages создаются файлы для описания SMB кодовой страницы.

Утилита smbpasswd дает возможность шифровать пароли.

Каждый компонент детально описан на страницах руководства, поставляемого с пакетом

Samba.

Литература: [1-5, 10-12]

Тема 10. Проектирование сети. Настройка сетевого оборудования.

Вопросы для изучения:

Безопасность в Интернете

XSS Filter

SmartScreen Filter

Data Execution Prevention

56

HTTPS

XSS Filter

Фильтры — фрагменты кода, которые могут быть выполнены до иили после выполнения действия контроллера. Фильтры, при необходимости, могут не допустить выполнения запрошенного действия.

Защита от Cross-Site Scripting – наиболее распространенный тип атак

Эвристические алгоритмы

Автоматическая блокировка

XSS-фильтр работает как компонент IE8, который просматривает все запросы и

ответы, проходящие через браузер. Когда фильтр обнаруживает XSS в межсайтовом запросе, он обнаруживает и нейтрализует атаку, если она зависит от ответа сервера. Пользователям не задают вопросы, на которые они не могут ответить — IE просто блокирует вредоносный скрипт от исполнения.

Как можно понять, есть множество интересных и тонких сценариев, которые фильтр должен обрабатывать правильно. Вот некоторые из них:

Фильтр должен быть эффективен, даже если атака направлена на артефакт часто используемых рабочих сред веб-приложений. Например, будет ли атака замечена, если определенный символ в запросе был потерян или модифицирован при повторном запросе; При фильтрации наш код не должен предоставить новый сценарий для атаки, которая бы отличалась от существующей. Например, представьте, что фильтр можно заставить нейтрализировать закрывающий тэг SCRIPT. В таком случае недоверенный

контент с сайта позже может быть запущен как скрипт.

И, конечно, в дополнение ко всему этому нам нужно эффективно бороться со всеми векторами XSS-атак, которые еще не были закрыты другими способами сокращения поверхности для XSS-атаки.

Пользователю не задаются вопросы, на которые он не может ответить — IE просто блокирует вредоносный скрипт от исполнения.

Проще говоря, XSS-фильтр в IE8 призван обеспечить глубокую защиту путем автоматического обнаружения и предотвращения наиболее распространенных XSS-атак, с которыми пользователи сталкиваются на просторах Интернета, без потери производительности или совместимости.

Повсюду, где реализован пользовательский ввод, существует опасность XSS, который по сути является разновидностью Injection-атак (внедрение опасного кода). Если ввод не фильтруется, достаточно оставить сценарий скрипта на странице, и этот скрипт

57

автоматически будет выполняться на браузере любого пользователя, просматривающего данную страницу.

XSS Filter – он анализирует все request и response, выявляет XSS, после чего уведомляет пользователя о грозившей, но предотвращенной угрозе. Компании, которые беспокоятся о том, чтобы их сайт не был «случайно» заблокирован этим фильтром, могут решить свою проблему – XSS-фильтр можно отключить передаваемым через http заголовок параметром X-XSS-Protection: 0.

SmartScreen Filter

ВInternet Explorer 8 присутствует фильтр SmartScreen Anti-Malware. Благодаря расширенной эвристике и телеметрии он снижает вероятность перехода пользователя по фальшивой ссылке. После ввода URL проводится подробный анализ всей адресной строки, и результаты сравниваются с базой данных сайтов, на которых имеются вредоносные программы или которые являются фишинговыми ресурсами.

Врезультате работы SmartScreen Anti-Malware при попытке запуска опасного кода, загруженного с сайта, его исполнение блокируется, а пользователю выводится предупреждающее сообщение. Если сайт находится в «черном списке», то Internet Explorer 8 предупредит об опасности, окрасив заголовок вкладки в красный цвет. Адресная строка также поменяет свой цвет, а на странице будет отображаться информация, с чем связаны подобные меры безопасности. Сегодня большинство сайтов используют сочетание данных (MashUp) собственного содержания и информации, полученной с других сайтов, например, интерактивные веб-карты с дополнительными слоями. Однако более половины веб-приложений уязвимы для атак межсайтового выполнения сценариев (XSS). Internet Explorer 8 — первый браузер, который имеет встроенную защиту от подобных угроз. Отметим, что его фильтр способен обучаться – любой пользователь может внести посильный вклад в повышение безопасности интернета, сообщая о подозрительных ресурсах. В качестве наиболее показател ьной иллюстрации можно привести проблемы, которые обнаружились в начале сентября 2009 года в фреймворке Ruby On Rails. В результате на сервере микроблоггинга Twitter (и некоторых других сайтах, например Basecamp), написанных на его основе, у злоумышленника появилась возможность запустить на исполнение произвольный код в JavaScript. Уязвимость реализовывалась через межсайтовый скриптинг. Однако пользователи Internet Explorer 8 с включенным фильтром, благодаря встроенному XSS-фильтру, были защищены от подобных атак. Остальные браузеры также используют контентные фильтры для обеспечения безопасности, но лишь в Internet Explorer 8 сигнатурный фильтр дополнен «поведенческим» блоком, а также тесно интегрирован с другими защитными механизмами

58

операционной системы. В частности, SmartScreen может работать в паре со «средством удаления вредоносного программного обеспечения» (Malicious Software Removal Tool) и «защитником Windows» (Windows Defender), которые можно загрузить с сайта Microsoft вместе с Internet Explorer 8 (в последних ОС от Microsoft они уже предустановленны и требуют лишь периодического обновления БД).

Фильтр SmartScreen — это функция обозревателя Internet Explorer 8, помогающая избежать построенных с использованием социальной инженерии вредоносных фишинговых веб-сайтов и интернет-мошенничества при просмотре ресурсов Интернета.

Фильтр SmartScreen:

проверяет веб-сайты по динамически обновляемому списку заявленных случаев фишинга и сайтов;

проверяет загружаемые программы по динамически обновляемому списку заявленных сайтов с вредоносными программами;

помогает предотвратить посещение фишинговых веб-сайтов и других содержащих вредоносные программы веб-сайтов, так как это может привести к краже идентификационных данных.

Если фильтр SmartScreen включен, то при попытке посетить веб-сайт, в отношении которого поступало сообщение, открывается приведенное ниже окно с рекомендацией не переходить на небезопасный веб-сайт.

Фильтр SmartScreen играет важнейшую роль в обеспечении вашей безопасности в сети. Авторы вредоносного ПО постоянно придумывают новые способы проникновения своего кода на компьютеры. Мы внесли ряд изменений, призванных защитить пользователей, сделав риски посещения вредоносных сайтов более ясными и воспрепятствовав бездумному игнорированию предупреждений. Посему настоятельно рекомендую включить фильтр SmartScreen и продолжить отсылать нам данные обратной связи.

Data Execution Prevention

Data Execution Prevention (DEP) (англ. Предотвращение выполнения данных) — функция безопасности, встроенная в семейство операционных систем Windows, которая не позволяет приложению исполнять код из области памяти, помеченной как «только для данных». Она позволит предотвратить некоторые атаки, которые, например, сохраняют код в такой области с помощью переполнения буфера. DEP работает в двух режимах: аппаратном, для процессоров, которые могут помечать страницы как «не для исполнения кода», и программном, для остальных процессоров.

Технология защиты памяти DEP (NX) в Internet Explorer 8

59

ВInternet Explorer 7 в Windows Vista была впервые представлена (выключенная по умолчанию) функция защиты памяти, которая помогала избегать атаки из Интернета. Эта функция также известна как Data Execution Prevention (DEP) или No-Execute (NX). В Internet Explorer 8 в Windows Server 2008 и Windows Vista SP1 данная функция будет по умолчанию включена.

DEP помогает избежать атак путем предотвращения запуска кода, размещенного в участке памяти, помеченном как неисполняемый. DEP в комбинации с другими технологиями, какASLR, делает процесс использования взломщиками разнообразных уязвимостей, связанных с памятью (например, переполнение буфера) намного более сложным. Лучше всего данная технология работает для Internet Explorer и для загружаемых надстроек. Для обеспечения всех этих функций безопасности от пользователя не требуется никаких дополнительных действий и никаких запросов ему показано не будет.

Совместимость DEP (NX)

ВInternet Explorer 7 по причинам совместимости DEP по умолчанию был отключен. Несколько популярных надстроек были несовместимы с DEP и могли вызвать завершение работы Internet Explorer при включенном DEP. Чаще всего проблема состояла

втом, что эти дополнения были скомпилированы с использованием старой библиотеки ATL. До версии 7.1 SP1 ATL полагалась на динамически сгенерированный код, который несовместим с DEP. И хотя большинство разработчиков популярных надстроек уже выпустили обновленные для DEP версии, некоторые могут быть не обновлены до выхода

Internet Explorer 8.

К счастью новые DEP API были добавлены в Windows Server 2008 и Vista SP1,

чтобы позволить использование DEP, сохраняя совместимость со старыми версиями ATL. Новые API позволяют Internet Explorer использовать DEP, при этом старые надстройки, использующие старые версии ATL, не станут причиной завершения работы Internet Explorer.

Вредких случаях, когда дополнение несовместимо с DEP по какой-либо иной причине, отличной от использования старой версии ATL, опция в групповых политиках позволит организациям выключать DEP для Internet Explorer до тех пор, пока обновленная версия дополнения не будет развернута. Локальные администраторы могут контролировать использование DEP, запустив Internet Explorer как администраторы и выключив опцию защиты памяти.

Проверка состояния вашей безопасности

60

Увидеть, какие именно процессы в Windows Vista защищены DEP, вы можете во вкладке диспетчера задач. Для более ранних версий Windows вы можете использовать Process Explorer. В обоих случаях проверьте, чтобы была отмечена опция Data Execution Prevention в выборе отображаемых колонок.

Литература: [1-5, 10-12]

Соседние файлы в папке телек

  • #

    16.04.201510.18 Кб2124 лаб..pkt

  • #

    16.04.201511.08 Кб1855.pkt

  • #
  • #
  • #

    16.04.201517.28 Кб123Жуковой.pkt

  • #
  • #

    16.04.201537.4 Кб184сети.pkt

Содержание

  1. Сетевая подсистема в ОС
  2. Инструментарий и метод исследования
  3. Проблемы при исследовании ОС Linux
  4. Сетевая подсистема Linux
  5. ОС Windows: сетевая подсистема
  6. Работа в файловых системах Windows и Linux
  7. Хранение файлов и производительность в файловых системах
  8. Просмотр текущего каталога в проводнике Windows
  9. Учет регистра в именах файлов и каталогов
  10. Взаимодействие между командами Windows и Linux
  11. Запуск инструментов Linux из командной строки Windows
  12. Смешивание команд Linux и Windows
  13. Запуск инструментов Windows из Linux
  14. Совместное использование переменных среды между Windows и WSL с помощью WSLENV
  15. Флаги WSLENV
  16. Отключение взаимодействия
  17. Опыт настройки и использования WSL (подсистемы Linux в Windows 10)
  18. Установка WSL и дистрибутива
  19. Установка X-сервера, Xfce и прочих GUI’шных приложений
  20. Взаимодействие окружения Windows и окружения подсистемы Linux
  21. Особенности, ограничения и подводные камни
  22. Итоги
  23. Как установить и настроить взаимодействие Linux с Windows в локальной сети
  24. Samba сервер
  25. Samba клиент
  26. Конфигурация сервера Samba
  27. Параметры раздела [global]
  28. Параметры раздела [home]
  29. Устанавливаем web-интерфейс SWAT (Samba Web Administration Tool) для работы с smb.conf
  30. Расшариваем папки и меняем доступ к директориям Samba:
  31. Синтаксис измененных параметров можно проверить командой:

Сетевая подсистема в ОС

Для будущих студентов курса «Сетевой инженер» и всех интересующихся подготовили полезную статью.

Disclamer: Статья описывает данные, которые с точки зрения автора помогут понять, как работают операционные системы с моделью TCP/IP, и не претендует на полноту.

Инструментарий и метод исследования

Для исследования операционной системы будем использовать следующие инструменты:

Операционная система Linux:

Visual Studio Code;

Операционная система Windows:

В нашем исследовании будем руководствоваться двумя правилами:

Используем всю информацию из документации операционных систем;

Проверяем правдивость описанных данных. Для структур данных:

В ОС Windows исследуем соответствующие функционалу dll, sys файлы;

В ОС Linux исследуем исходные коды и отдельные ветки ядра;

Теперь определимся с проблемами, которые вероятно будут нас преследовать на протяжении всего исследования.

Проблемы при исследовании ОС Linux

Основной функционал подсистемы целиком находится в ядре. К счастью, исходный код доступен в сети. Исследование исходного кода таких больших проектов всегда довольно сложная задача. На её сложность может влиять несколько факторов:

у каждого исследователя разный уровень экспертизы в области языка программирования, который используется в исходном коде;

у каждого исследователя есть свой собственных подход на интерпретацию полученной информации.

ограниченности исследования по времени;

объем исходного кода;

принятые правила кодирования проекта.

Как минимизировать количество действий исследователя, чтобы получить как можно больше полезной и интересной информации? Огромную роль играет правильно настроенное рабочее место. В нашем случае верную настройку определяет набор инструментов, который мы описали в разделе «Инструментарий и метод исследования». Также можно применить небольшой лайфхак и не рассматривать каждую строку исходников ядра, а рассматривать только высокоуровневые элементы. Это сэкономит время на изучение языка программирования и даст возможность разобраться, что к чему. Попробуем применить эту тактику на практике.

Сетевая подсистема Linux

Начнем наше исследование с вот такой интересной картинки:

Картинка представляет собой структуру директорий исходного кода ядра ОС Linux. На ней видно, что сетевая подсистема вовсе не самая большая часть операционной системы. По правде говоря, можно собрать ядро и без этой части. Сегодня это вариант только для embeded систем, в общем случае без сети представить Linux сложно.

Код, который относится к сетевой подсистеме, находится в директории «net». Посмотрим, из чего он состоит.

Исходный код собран по выполняемым задачам. За базовыми элементами можно обратиться в директорию core:

Оставшиеся файлы в директории «net» описывают работу ядра с различными протоколами. Интересным моментом здесь является то, что фильтрующая подсистема имеет какие-то файлы только в некоторых протоколах и подсистемах:

Что в итоге? Всего по 4м картинкам структуры исходных кодов ядра мы уже обладаем информацией о том, какие поддерживаются протоколы в ядре Linux, какие механизмы интегрированы в протоколы для контроля и фильтрации и где найти базовые элементы, которые позволяют использовать сеть. Попробуем найти эту информацию и в ОС Windows.

ОС Windows: сетевая подсистема

Где располагается код для создания и работы с сокетами;

Какой механизм используется для фильтрации;

Как имплементированы протоколы.

Сетевая подсистема, согласно документации построена по принципу модели OSI. И также приводится описание того, за счет каких технологий и типов файлов реализуется работа отдельных уровней модели.

Имплементация модели OSI в операционной системе начинается со строго определенных уровней. В данном случае всё начинается на уровне «Канальном» и заканчивается на уровне «Транспортном». Имплементация на каждом уровне своя:

На экране ниже приведен снимок директории с основными драйверами для сетевой подсистемы:

Попробуем найти такие же файлы в реальной ОС. Заглянем в директорию «%Windows%». В качестве исследуемой системы возьмем Windows 7.

Часть файлов действительно имеет названия файлов, которые присутствуют в реальной ОС.

Похоже, что данные по работе с сетевой подсистемой можно обнаружить именно в этом драйвере. Поищем функции, которые позволяют фильтровать трафик. Как их идентифицировать?

Но в них все равно нет функций, которые бы могли фильтровать трафик. Почему так? Дело в том, что до Windows 7 фильтрация трафика как такового была имплементирована в отдельных драйверах, которые настраивались за счет интерфейса Windows. Начиная с Windows 7 была реализована так называемая Windows Filtering Platform, которая определила часть драйверов в специальную категорию, которая и призвана фильтровать трафик.

Часть этих фильтров можно найти по обычному поиску в директориях ОС:

Используем утилиту strings.exe на файлы FWPKCLNT.SYS и wfplwf.sys :

Имплементируются через отдельные одноименные файлы, например: tcpip.sys

В ОС Linux мы не задумывались о том как приложения получают доступ к структурам ядра и работают с сетью. Там более-менее всё очевидно и только один шаг до функций, но для Windows всё работает по принципу Callback`ов. Поэтому скорее всего будет несколько оберток для взаимодействия. Попробуем найти эти файлы.

Для поиска файлов, которые используются в качестве обертки-библиотеки, можно использовать следующий метод. Для этого создадим мини приложение, которое будет работать с сокетами, принимать и отправлять данные. Исходный код приложения:

Запускаем файл в ОС, если не возникло никаких ошибок, то необходимо параллельно запустить инструмент Process Explorer. С помощью этого инструмента мы подсмотрим, чем занимается поток, пока ждет соединения. На картинке ниже отображены все описанные действия:

Стоит отметить, что последовательность функций, которые вызываются для работы сокета в ОС, не виден в Process Explorer`е. Если нужно восстановить и эти данные, то нужно использовать отладчик ядра.

Таким образом, проводить исследование подсистем любых ОС и их механизмов можно с исходным кодом и без — достаточно выбрать необходимый набор инструментов, а также доступные методы, источники знаний.

Источник

Работа в файловых системах Windows и Linux

При работе с файловыми системами Windows и Linux следует учитывать ряд моментов. В этом пошаговом руководстве рассматриваются некоторые из них, а также приводятся примеры поддержки взаимодействия для смешанного использования команд на основе Windows и Linux.

Хранение файлов и производительность в файловых системах

Мы не рекомендуем работать с разными операционными системами, если на это нет особой причины. Для ускорения производительности сохраняйте файлы в файловой системе WSL, если используете командную строку Linux (Ubuntu, OpenSUSE и т. д.). Если вы работаете в командной строке Windows (PowerShell, командной строке), сохраняйте файлы в файловой системе Windows.

Например, при хранении файлов проекта WSL:

Просмотр текущего каталога в проводнике Windows

Вы можете просмотреть каталог, в котором хранятся файлы, открыв проводник Windows из командной строки:

Чтобы просмотреть все доступные дистрибутивы Linux и их корневые файловые системы в Windows проводнике, введите \wsl$ в адресной строке.

windows file

Учет регистра в именах файлов и каталогов

Чувствительность к регистру определяет, обрабатываются ли прописные (FOO.txt) и строчные буквы (foo.txt) как уникальные (с учетом регистра) или эквивалентные (без учета регистра) в имени файла или каталога. В файловых системах Windows и Linux чувствительность к регистру разная: в Windows он учитывается, а в Linux — нет. Дополнительные сведения о том, как настроить чувствительность к регистру, особенно при подключении дисков с помощью WSL, см. в статье Настройка чувствительности к регистру.

Взаимодействие между командами Windows и Linux

Средства и команды Windows и Linux в WSL могут использоваться взаимозаменяемо.

Запуск инструментов Linux из командной строки Windows

Запускайте двоичные файлы Linux из командной строки Windows (CMD или PowerShell), используя wsl (или wsl.exe ).

Двоичные файлы вызываются следующим образом.

Команда Linux после wsl (или wsl.exe ) обрабатывается как любая команда, выполняемая в WSL. Можно выполнять sudo, конвейерную передачу и перенаправление файлов.

Пример использования sudo для обновления дистрибутива Linux по умолчанию:

Имя пользователя дистрибутива Linux по умолчанию будет указано после выполнения этой команды, и вам будет предложено указать пароль. После правильного ввода пароля дистрибутив скачает обновления.

Смешивание команд Linux и Windows

Ниже приведено несколько примеров смешиваний команд Linux и Windows с помощью PowerShell.

Чтобы выполнить команду PowerShell dir для вывода списка файлов и команду Linux grep для фильтрации результатов слов, содержащих git, объедините команды:

Запуск инструментов Windows из Linux

Приложения, выполняемые таким образом, обладают следующими свойствами.

Исполняемые файлы Windows, выполняемые в WSL, обрабатываются аналогично собственным исполняемым файлам Linux — конвейерной передаче, перенаправлению и даже фоновому режиму работы.

Например, отобразите список содержимого каталога C: файловой системы Windows, введя:

Этот способ также будет работать:

Совместное использование переменных среды между Windows и WSL с помощью WSLENV

Решение WSL и Windows совместно используют WSLENV — специальную переменную среды, созданную для взаимодействия Windows и дистрибутивов Linux, запущенных в WSL.

Свойства переменной WSLENV :

До выпуска сборки 17063 единственной переменной среды Windows,, к которой могла получить доступ WSL, была PATH (это позволяло запускать исполняемые файлы Win32 из WSL). Начиная со сборки 17063, WSLENV поддерживается. WSLENV учитывает регистр.

Флаги WSLENV

В WSLENV доступны четыре флага, влияющие на способ преобразования переменной среды.

При необходимости флаги можно комбинировать.

Узнайте больше о WSLENV, ознакомившись с часто задаваемыми вопросами и примерами установки значения WSLENV для объединения других предварительно определенных переменных среды с суффиксом в виде косой чертой и флагами для указания способа перевода значения и передачи переменных скрипту. В этой статье также показано, как настроить среду разработки с помощью языка программирования Go для совместного использования GOPATH с WSL и Win32.

Отключение взаимодействия

Пользователи могут отключить возможность запуска средств Windows для отдельного сеанса WSL, выполнив следующую команду в качестве привилегированного пользователя.

Чтобы повторно включить возможность запуска двоичных файлов Windows, закройте все сеансы WSL и повторно запустите bash.exe или выполните следующую команду от имени привилегированного пользователя.

Отключение взаимодействия не будет сохраняться между сеансами WSL, оно снова будет включено при запуске нового сеанса.

Источник

Опыт настройки и использования WSL (подсистемы Linux в Windows 10)

К написанию данной статьи меня побудил вопрос на Тостере, связанный с WSL. Я, после нескольких лет использования систем на ядре Linux, около полугода назад перешел к использованию Windows 10 на домашнем ПК. Зависимость от терминала и Linux окружения в моей работе практически сразу привели меня к вопросу: или ставить виртуалку или попробовать WSL. Я выбрал второе, и остался вполне доволен.

Под катом я расскажу как установить и настроить WSL, на какие я наткнулся проблемы и ограничения, как запускать Linux приложения из Windows и наоборот, а так же как интегрировать элементы окружения Xfce в окружение рабочего стола Windows.

image loader

Никогда не думал, что однажды вернусь на Windows, но повод попробовать мне дали стечения обстоятельств: жена, далекая от IT, дергала почти каждый раз, когда у нее возникала необходимость воспользоваться компом; проснулась ностальгия по одной игре, но она никак не хотела адекватно работать под wine; а тут еще мне подарили коробочную Windows 10 Pro. WSL я поставил чуть ли не сразу после установки системы, поигрался несколько вечеров, понял, что продукт для моих задач годный, но хочется более привычный терминал и вообще некоторых удобств.

Установка WSL и дистрибутива

Сразу оговорюсь, в интернете можно найти описание установки с помощью выполнения команды lxrun /install в командной строке или консоли PowerShell. Данный способ больше не работает (после выхода WSL в стабильный релиз). Насколько мне известно, сейчас WSL можно установить только из Microsoft Store вместе с предпочитаемым дистрибутивом.

Так же отмечу, что когда установку производил я, на выбор были доступны дистрибутивы OpenSUSE, SUSE Linux Enterprise и Ubuntu 16.04 — последний я и установил. Сейчас также доступны Ubuntu 18.04, Debian 9 и Kali Linux, возможно появятся и другие дистрибутивы. Действия по установке могут отличаться. Так же, часть проблем описанных в статье может быть уже исправлена.

Находим в магазине желаемый дистрибутив и устанавливаем. Установка пройдет быстро, так как скачает только эмулятор ядра Linux и утилиту для запуска подсистемы, которая окажется в системной папке в трех экземплярах: wsl.exe, bash.exe и ubuntu.exe (вместо ubuntu будет имя Вашего дистрибутива). Все они равнозначны и делают одно и то же — запускают собственный эмулятор терминала, в нем linux’овый bash работающий под эмулятором ядра. При первом же запуске нас попросят придумать логин и пароль для пользователя по умолчанию, а после произойдет непосредственно установка дистрибутива. В качестве пользователя по умолчанию указываем root без пароля — это потребуется для дальнейших шагов. Безопасность не пострадает, кроме того при подготовке материалов к статье, в англоязычном туториале, я наткнулся на информацию, что новые версии WSL теперь делают пользователем по умолчанию root без пароля без лишних вопросов.

Дожидаемся установки. Далее первым делом стоит обновить зеркала apt на ближайшие. Для этого понадобится CLI текстовый редактор. В комплекте только vi, я же больше предпочитаю nano, поэтому ставлю его:

sudo вводить не требуется, так как мы уже под root’ом. Отредактируем файл /etc/apt/sources.list:

У меня лучше всего работают зеркала Яндекса, поэтому мой файл выглядит так:

Нажимаем Ctrl+O для сохранения и Ctrl+X для выхода. Теперь можно обновить систему до актуального состояния:

После обновления можно создать нашего основного пользователя. В данной статье я назову его user1, Вы же можете задать привычное имя:

Далее переходим в папку юзера, зайдем под ним, установим пароль и отредактируем файл

Все, подсистема готова к использованию… почти.

Установка X-сервера, Xfce и прочих GUI’шных приложений

Первая же проблема, на которую я натолкнулся — bash-completion в предлагаемом эмуляторе терминала работал, мягко говоря, некорректно. Кроме того, данный эмулятор не умеет вкладки, а каждый его экземпляр запускает все в новом пространстве процессов, с отдельным init’ом (который кстати не заменить). Мне захотелось нормальный эмулятор терминала, некоторых других GUI приложений, а так же панельку, чтоб это все быстро запускать.

Когда я гуглил этот вопрос, я наткнулся на множество проблем, вроде необходимости перевода dbus на tcp протокол. На данный момент всех этих проблем нет. В подсистеме нормально работают unix-domain-socket’ы и все спокойно общается через них.

Первым делом нам понадобится X-сервер, притом установленный в основную систему (в Windows). Лично я использую для этих целей VcXsrv — порт X11 на Windows. Официальный сайт указанный в about самой утилиты его сейчас не предоставляет, поэтому гуглим установщик и устанавливаем все по умолчанию.

Пока идет установка возвращаемся в терминал WSL, командой exit выходим обратно в root’а. Первым делом настроим русские локали:

Далее установим некоторые компоненты Xfce. Можно конечно установить его целиком из мета-пакета, но большинство компонентов нам не понадобится, а модульная архитектура Xfce позволяет нам поставить только необходимое:

Запускать каждый раз окружение руками не очень удобно, поэтому я автоматизировал данный процесс. Для этого в основной системе создадим в удобном для нас месте папку, а в ней 3 файла для запуска:

x-run.vbs — WSL всегда запускается со своим эмулятором терминала, если его закрыть — завершатся все его дочерние процессы. Чтоб данное окно не мозолило глаза, неплохо его запускать скрытым. К счастью в Windows встроен интерпретатор VBScript, который позволяет это сделать в одну строчку:

Далее можем запустить наш start.bat и настроить панель Xfce под себя. Замечу, что здесь я наткнулся на еще одну проблему — панель прекрасно отображается поверх всех окон, но вот выделить себе место, как панель на рабочем столе Windows она не может. Если кто знает решение данной проблемы, поделитесь в комментариях.

Ну и под конец данной части, скриншот моего рабочего стола:

image loader

Взаимодействие окружения Windows и окружения подсистемы Linux

Из Linux так же можно запускать Windows приложения. Просто запускаем exe-шник и он выполнится в основной системе.

Сетевой стек у подсистемы общий с Windows. Сервер поднятый в Linux будет доступен на localhost в Windows и наоборот. Однако unix-domain-socket для Windows будет просто пустым файлом, работать с этим можно только внутри Linux. Выход во внешнюю сеть у Linux так же есть, в том числе можно слушать порты, если этого не запрещает фаервол.
ifconfig в Linux и ipconfig в Windows выдают одинаковую информацию о сетевых интерфейсах.

Из диспетчера задач Windows можно спокойно прибить процесс внутри подсистемы Linux. Однако Linux увидит только свои процессы.

Особенности, ограничения и подводные камни

Ядро Linux в WSL не настоящее. Это всего лишь прослойка-эмулятор, которая часть Linux-специфичных задач выполняет сама, а часть проксирует напрямую в ядро winNT. Большая часть api в нем реализована, но не все. Свое ядро собрать не получится, как и не получится подключить модули ядра (.ko, Kernel Object).

Init процесс у WSL тоже свой и заменить его, например, на system.d не выйдет. У меня давно есть желание написать менеджер демонов на go, который бы работал с файлами юнитов system.d и предоставлял бы схожий интерфейс, да все руки не доходят.

Нет поддержки openFUSE, соответственно примонтировать виртуальную или удаленную файловую систему не получится. Так же нельзя сделать mount из файла, mount вообще ничего кроме bind здесь, похоже, не умеет.

Так же нет никакой возможности разбить файловую систему Linux на несколько разделов/дисков.

Прямой доступ к железу практически отсутствует. Все таки мы находимся в песочнице Windows, а не в полноценном Linux. /dev и /sys заметно пустуют, в них лишь проц да виртуальные устройства. Доступ к GPU — только через X-сервер, напрямую — никак, так что нейросети обучать придется в Windows.

В JS разработке столкнулся с тем, что electron.js отказался запускаться в WSL, пришлось дублировать окружение node.js в Windows.

Итоги

Статья получилась довольно длинной, надеюсь, что она окажется еще и полезной.
WSL для меня лично оказался инструментом вполне юзабельным, решающим мои задачи fullstack backend разработчика. Виртуалка с Linux за полгода так и не понадобилась. По общим ощущениям Windows+WSL намного функциональнее, чем Linux+Wine.

Пока писал статью, обнаружил, что в Microsoft Store появилась сборка WSL с Debian 9.3, данный дистрибутив мне более симпатичен, чем Ubuntu, поэтому буду пробовать ставить.

Источник

Как установить и настроить взаимодействие Linux с Windows в локальной сети

Для организации доступа к файлам расположенным на linux машинах с компьютеров под управлением ОС windows, был специально разработан пакет программ, которые позволяют обращаться к сетевым дискам и принтерам по протоколу SMB/CIFS. samba1

Пакет Samba имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущенным под лицензией GPL. Samba представляет собой протокол, используемый Microsoft для разделения файлов и служб печати. Этот протокол был разработан в 1987 году и позже перенесен на платформы Linux Эндрю Триджеллом (Andrew Tridgell). Взаимодействие в сети компьютеров под управлением Windows построено на использовании протокола SMB (Server Message Block) — блоках серверных сообщений. Пакет Samba обеспечивает выполнение всех необходимых в этих случаях задач по открытию, закрытию, чтению, записи, поиску файлов, созданию и удалению каталогов, постановке задания на печать и удалению его оттуда. Возможности его условно можно разделить на две категории: предоставление ресурсов (под коими понимается доступ к системе принтеров и файлам) для клиентов Windows и доступ к ресурсам клиентов. То есть, компьютер под управлением Linux может выступать как в роли сервера, так и клиента. Огромным плюсом пакета samba является контроль доступа, который может быть реализован либо на уровне ресурсов (share level), когда какому-либо ресурсу в сети назначается пароль и соответствующие правила использования или же более совершенную и гибкую организацию на уровне пользователя, когда для каждого пользователя создается учетная запись на сервере, где помимо имени и пароля содержится вся необходимая информация о правах доступа к ресурсу. Прежде чем получить доступ к требуемому ресурсу, каждый пользователь проходит аутентификацию, после чего ему и предоставляются права согласно учетным записям.

Samba сервер

Для работы Samba-сервера необходимо, чтобы были запущены два демона: smbd, обеспечивающий работу службы печати и разделения файлов для клиентов Samba сервера под управление ОС Windows, и nmbd, обеспечивающий работу службы имен NetBIOS. Для доступа к клиентам используется протокол TCP/IP. Как правило, Samba устанавливается вместе с дистрибутивом Linux. Проверить можно выполнив команду: $ whereis samba. И если не установлен то $ yum install samba-server

Samba клиент

Достаточно многие пользователи 1с Предприятие используют БД в файловом варианте, ну, так, уж повилось:) и поэтому для грамотного взаимодействия пользователей с базой можно использовать сервер Samba. Что позволит ограничить доступ, или совсем его закрыть к базам 1с.

Конфигурация сервера Samba

Конфигурационный файл Samba называется smb.conf и находится в корневом каталоге /еtc или /etc/samba. Сервис Samba считывает его каждые 60 секунд, поэтому изменения, внесенные в конфигурацию, вступают в силу без перезагрузки, но не распространяются на уже установленные соединения. Файл конфигурации содержит четыре раздела: [global], [homes], [printers] и [shares]. Открыть для редактирования файл конфигурации можно командой: mcedit /etc/samba/smb.conf Раздел [global] содержит наиболее общие характеристики, которые будут применяться везде, но которые, впрочем, затем можно переопределить в секциях для отдельных ресурсов. Некоторые параметры этого раздела имеют отношение и к настройке клиентской части Samba.

Параметры раздела [global]

workgroup # имя_группы в сети Windows. netbios name # netbios имя сервера в локальной сети. server string # строка комментария, который виден в окне свойств просмотра локальной сети. guest ok = yes # разрешение гостевого входа на сервер. guest ok = no # гостевой вход запрещен. guest account # аккаун, под которым разрешен гостевой вход на сервер. security = user # доступ с аутентификацией на уровне пользователя. security = share # вход свободный. hosts allow # определяет клиентов, которым разрешен доступ к серверу. interfaces # указывает в какой сети будет работать сервер.

Параметры раздела [home]

comment # комментарий в окне свойств сети. browseable # определяет, будет ли виден ресурс в списке просмотра сети. writable # разрешает или запрещает запись в домашнюю директорию. create mode # определяет права доступа для вновь созданных файлов. directory mode # определяет права доступа для каталогов.

Устанавливаем web-интерфейс SWAT (Samba Web Administration Tool) для работы с smb.conf

В большинстве случаев настройка Samba заключается в редактировании основного конфигурационного файла /etc/samba/smb.conf и управлении пользователями с помощью smbpasswd. Изменения можно производить в редакторе mcedit, nano или kwrite. Если это непривычно — можно использовать web-интерфейс SWAT (Samba Web Administration Tool) который для удобства пользователей Linux был создан разработчиками пакета Samba.

Установить пакет samba-swat можно командой:
yum install samba-swat По умолчанию в целях безопасности SWAT отключен и поэтому заходим:
mcedit /etc/xinetd.d/swat и меняем значение параметра:
disable = no Для предоставления возможности удаленного администрирования необходимо в параметр only_from добавить допустимый ip. И сделать рестарт:
service xinetd restart Все! samba-swat теперь доступен по URL http://localhost:901/ а номер порта в целях безопасности можно изменить в файле:
mcedit /etc/xinetd.d/swat

Расшариваем папки и меняем доступ к директориям Samba:

Синтаксис измененных параметров можно проверить командой:

Источник

1.

ГПОУ Горловский колледж промышленных технологий и экономики
Дипломный проект
на тему:
«Организация взаимодействия двух разных сетей на операционных
системах Linux и Windows на базе предприятия ООО «ИСТЭК»»
Выполнил: студент 4 курса, группы 43КС
специальности 09.02.02 «Компьютерные сети»
Мисько Д.С.
Руководитель:
Акименко В.И.

2.

Цель
работы:
На
основе
полученных
в
ходе
преддипломной практики сведений, разработать схему
межсетевого взаимодействия между участками сети на
разных
операционных
системах
для
здания
заводоуправления ООО «ИСТЭК», с разработкой будущей
концепции перехода всей сети на бесплатное программное
обеспечение.
Объект исследования: Обеспечение взаимодействия
разных сетей на существенно различающихся друг от друга
операционных системах в здании заводоуправления ООО
«ИСТЭК».
Предмет
исследования:
программно-аппаратной
возможности
среды
взаимодействия
Создание
с
необходимой
целью
сетей
операционных системах Windows и Linux.
на
создания
разных

3.

Основные различия операционных систем Linux и Windows
Наиболее сильно отличаются на операционных системах Linux и Windows структуры файловых
систем. Linux предоставляет файловую систему более реально, такой как она есть на самом деле.

4.

Для успешной реализации проекта диплома были определены следующие
основные шаги:
1) Анализ существующей сетевой топологии;
2) Выбор основных каналов передачи данных и
построение сети для обеспечения межсетевого
взаимодействия;
3) Подбор необходимого сетевого оборудования;
4) Настройка сетевого оборудования;
5) Конфигурация серверного оборудования для
обеспечения межсетевого взаимодействия;
6) Облегчение удалённого администрирования с
помощью настройки SSH сервера;
7) Установка и настройка пользовательских
компьютеров на операционной системе Linux;
8) Проверка работоспособности сервера;
9) Расчёт затрат на создание межсетевого
взаимодействия.

5.

Анализ существующей сети на предприятии
На предприятии имеется около 110 компьютеров,
половина из которых расположена в здании
заводоуправления, и расположенных рядом с ним административных зданий, где и проходила практика.
В здании заводоуправления предприятия ООО «ИСТЭК» задействовано 22 человека, каждый из которых имеет в
использовании персональный компьютер.

6.

Подбор необходимого сетевого оборудования для реализации плана межсетевого
взаимодействия

7.

Настройка сетевого оборудования, необходимого для реализации проекта
взаимодействия двух разных сетей

8.

Определение характеристик сервера

9.

Настройка сервера

10.

11.

Облегчение удалённого администрирования с помощью настройки SSH–сервера

12.

Настройка пользовательских компьютеров на Linux

13.

Проверка работоспособности сервера

14.

15.

16.

Сравнение поставщиков оборудования
Сетевое оборудование
Наименование
оборудования
Цена единицы оборудования в
различных магазинах, руб.
Компьютерная
Steelsmart
ОЛАС
Baza
Модель
оборудования
UTP 5e кат Ripo
4пары,
внутренний,50м,
серый
Ед.
изм.
м.
450
400
435
Коннектор для
UTP кабеля
5 CAT RJ-45
шт.
8
7
10
Коммутатор
DLink DES-1026G
шт.
3500
3260
3412
Маршрутизатор DLink DSR-1000N
шт.
2411
2613
2513
шт.
8500
9100
8713
шт.
1000
800
927
шт.
300
345
310
шт.
3200
3555
3183
19369
20080
19503
Кабель
Сервер
Монитор
Клавиатура
Источник
бесперебойного
питания
Всего:
Компьютер на
базе Intel core I52400, с одной
дополнительной
сетевой картой
Samsung
SyncMaster 755DF
‘17’
Gembird KB8320U-BL
ИБП 600 ВА FSP
Viva 600
Наименование
Интернет-магазина
КомпьютернаяBaza
Steelsmart
Расстояние
до объекта,
км.
50
41
Цена
Цена
транспортировк транспортировки к
и за 1 км, руб.
объекту, руб.
40
2000
35
1435

17.

Сравнение нового и бывшего в употреблении оборудования и составление
итоговой сметы закупки оборудования
Цена
Цена бывшего в
закупаемого
нового,
употреблении,
оборудования
руб.
руб.
Кабель
Новый
450
300
Коннектор для
UTP кабеля
Новый
8
0
Коммутатор
Б/У
5000
3500
Маршрутизато
р
Б/У
3500
2411
Сервер
Новый
8500
6000
Монитор
Б/У
500
1000
Клавиатура
Новый
300
150
Источник
бесперебойного
питания
Новый
3200
Стоимость обор, руб.
Cпр.
цена
единицы
обор., руб.
всего
обор.,
руб.
UTP 5e кат Ripo
4пары,
внутренний,50м,
серый
1
450
450
Наименование
обор.
Модель обор.
Кабель
Коннектор для
UTP кабеля
Коммутатор
5 CAT RJ-45
6
8
48
DLink DES-1026G
1
3500
3500
Маршрутизатор
DLink DSR-1000N
1
2411
2411
Сервер
Компьютер на базе
Intel core I5-2400, с
одной
дополнительной
сетевой картой
1600
Монитор
Клавиатура
Источник
бесперебойного
питания
Всего:
Общие затраты:
Samsung
SyncMaster 755DF
‘17’
Gembird KB8320U-BL
ИБП 600 ВА FSP
Viva 600
1
8500
Стоимость
доставки,
руб.
1435
Статус
Затраты
на
монтаж,
руб. (3%)
Начальная
стоимость
обор., руб.
13,5
463,5
1,44
49,4
105
3605
72,3
2483,3
255
8755
30
1030
9
309
96
3296
582,3
19991,3
8500
1
1000
1000
1
300
300
1
3200
3200
1435
Наименование
оборудования
19409
1435
21426,3

18.

Расчёт энергопотребления, амортизации и составление общей сметы затрат
проекта
Наименование
обор.
Коммутатор
Маршрутизато
р
Сервер
Источник
бесперебойного
питания
Всего
Модель обор.
DLink DES-1026G
DLink DSR-1000N
Cпр.
1
1
Компьютер на базе Intel core I52400, с одной дополнительной
сетевой картой
1
ИБП 600 ВА FSP Viva 600
1
4
Силовая
мощность, кВт/ч.
единицы
обор.
всего
обор.
0,006
0,006
0,005
0,2
0,15
0,005
0,2
0,15
0,361
Наименование затрат
Содержание затрат
Сумма, руб.
Методика расчета
и обоснование
Приобретение и доставка
аппаратных компонентов
Стоимость основного
оборудования и его доставки
21426,3
Таблица 3.3
Эксплуатация
оборудования аппаратной
части сети
Стоимость силовой
электроэнергии основного
оборудования за 8 дней
настройки
31
Формула 3.2
10,5
А.оборуд.
Амортизационные
Отчисления на восстановление
отчисления на
износа компьютерной техники за
оборудование,
расчётные 8 дней
использованное в процессе
проектирования
проектирования
Общие амортизационные
отчисления
отчисления на восстановление
износа техники
4285,3
Формула 3.1
Оплата за Интернет
8 дней в которые использовался
интернет для проектирования
80
10 рублей в день
Транспортные затраты
Проезд на общественном
транспорте
160
8 дней по 20 рублей
Всего:
25993

19.

Расчёт экономической эффективности проекта
Наименование затрат
Содержание затрат
Сумма,
руб.
Приобретение аппаратных
компонентов
Закупка основного оборудования
30500
Приобретение ПО
Закупка программного обеспечения
5000
Стоимость услуг по
монтажу и установке
оборудования
Затраты на необходимые для монтажа
средства
3000
Общие годовые
амортизационные
отчисления
Годовые отчисления на восстановление
износа техники, использованной для
работы проекта
8000
Оплата за Интернет
Ежемесячное пополнение услуги
Интернет
300
Зарплата работнику
Заработная плата сотруднику
реализующему проект
8000
Всего:
54800

Понравилась статья? Поделить с друзьями:
  • Особенности работы с ssd в windows 7
  • Особенности операционной системы windows объекты операционной системы windows
  • Особенности операционной системы windows nt workstation
  • Особенности активаций с защитой denuvo windows store
  • Основы работы с терминалом windows 10