Как программно управлять форвардингом пакетов на Python? Ситуация: есть гипотетический сервер/фаерволл с двумя интерфейсами: eth0 - смотрит в открытую сеть, eth1 во внутреннюю.
Задача: управлять форвардом пакетом с eth0 на eth1 на уровне отдельно взятого пакета. Например, с eth0 поймали пакет с помощью PyShark, разобрали его, проверили, и, если нас все устраивает, пересылаем его на eth1. Работаем на Linux

21 Авг 2019 в 06:36
188 +1
0
Ответы
1

Для управления форвардингом пакетов на Python в ситуации, описанной выше, можно использовать библиотеку scapy. Scapy позволяет создавать, отправлять, принимать и анализировать сетевые пакеты.

Пример кода на Python с использованием библиотеки scapy для пересылки пакета с eth0 на eth1:

from scapy.all import *
# Функция для обработки каждого пакета
def handle_packet(packet):
# Проверяем, что пакет приходит с eth0
if packet.haslayer(Ether) and packet[Ether].src == 'MAC-адрес eth0':
# Делаем необходимую обработку пакета
# Отправляем пакет на eth1
sendp(packet, iface='eth1')
# Захватываем пакеты на eth0
sniff(iface='eth0', prn=handle_packet)

Данный код будет захватывать пакеты на интерфейсе eth0, проверять их MAC-адрес и, если условие выполняется, отправлять пакет на интерфейс eth1.

Для работы данного кода необходимо установить библиотеку scapy:

pip install scapy

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

20 Апр в 13:15
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир