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

21 Авг 2019 в 06:36
237 +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 Апр 2024 в 13:15
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир