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

Ещё про VirtualBox

socat -,cfmakeraw,echo=0,escape=15 TCP4:localhost:порт

VBoxManage:

Всё это умеют сценарии из лекций

NAT

Network address translation — что такое и зачем нужно.

NAT без транспортного уровня

Идея замены конкретного IP другим конкретным IP (и обратно) — например, если «внутренний» IP из интернет-диапазона.

Табличная подмена IP

Проблемы:

NAT с идентификацией потока (NAPT)

Динамическая подмена IP на основании «состояния»

Примеры SNAT и DNAT

Syn flood атака и SYNPROXY

Введение в обработку трафика

<!> Эта тема на целый семестр! Поэтому про главную задачу — traffic shaping — только упомянем.

TODO

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

Проблема: Bufferbloat

Дисциплина по умолчанию: fq_codel:

Пример: дисциплина Network Emulator

Конспект:

# tc qdisc show 
# tc -s qdisc show
# ping -f -c1000 10.1.1.2
# tc qdisc add dev eth1 root netem delay 400ms
# ping -f -c100 10.1.1.2
# tc qdisc del root dev eth1
# tc qdisc add dev eth1 root netem loss 10%
# ping -f -c500 10.1.1.2
# tc qdisc del root dev eth1
# tc qdisc add dev eth1 root netem delay 400ms corrupt 5%
# ping -f -c100 10.1.1.2

Немного про shape:

На srv запустим iperf3 -4s

Конспект про tbf:

# tc qdisc del root dev eth1
# iperf3 -4c 10.1.1.2
# tc qdisc add dev eth1  root tbf rate 1mbit burst 32kbit latency 400ms
# iperf3 -4c 10.1.1.2

TODO Если успеем: про фильтры и про HTB (по примеру в учебнике) или в Арчевики

Д/З

Новое в образе: обновление пакетной базы и ядра; добавлен iperf3

Задание 7

  1. Суть: воспроизвести примеры из лекции, с выходным NAT-ом, пробросом порта и задержкой на интерфейсе.
  2. Площадка (сетевые адреса и маршруты настроены заранее, в отчёт не входят)
    • SNAT_DNAT_DELAY.svg

    • A — адрес shaped

    • B — адрес client

    • R — «внешний» (для доступа из sev) адрес router

  3. Отчёт:
    1. report 7 router

      • Настроить исходящий NAT на интерфейсе R, который работал бы для A и B (Например, для всей их сети)

      • Настроить проброс порта 1234 при подключении к R → на порт 1234 адреса B

      • Запустить tcpdump на «внешнем» интерфейсе, который отловит все пакеты TCP-соединений и несколько пакетов ping-а, а затем сам остановится (ключ -c). Если сложно — просто остановите перед концом отчёта.

    2. report 7 client

      • Принять одно TCP-соединение на порт 1234
    3. report 7 shaped

      • Настроить (с помощью netem) задержку при отсылке пакетов в 200ms

    4. report 7 srv

      • Принять одно TCP-соединение на порт 1212 (в tcpdump на router-е должно быть видно, что это соединение от R, потому что SNAT)

    5. report 7 client

      • Отправить несколько строк на порт 1212 машины srv

      • Запустить ping адреса A (в отчёте должна быть видна задержка ⩾ 200ms)

    6. (продолжение отчёта srv)

      • Отправить несколько строк на порт 1234 адреса R (его должен принять B, потому что DNAT)

  4. Четыре отчёта (названия сохранить, должно быть: report.07.router, report.07.srv, report.07.client, report.07.shaped) переслать одним письмом в качестве приложений на uneexlectures@cs.msu.ru

LecturesCMC/LinuxNetwork2023/07_TransportShapeNAT (последним исправлял пользователь FrBrGeorge 2023-04-06 14:37:04)