Невозможно передать пинг через scapy, используя глобальный адрес при использовании нескольких сетевых карт - PullRequest
0 голосов
/ 09 июля 2019

Я использую 3 сетевые карты на моем компьютере с Ubuntu 14.04.Я пытаюсь одновременно общаться с 3 разными сетями, используя три разные сетевые карты.Я хочу использовать IPv6 Global address.Ниже приведена структура сети.

Interface_A (8003::2) <-----> Get0 (8003::1)
Interface_B (8001::2) <-----> Get1 (8001::1)
Interface_C (8002::2) <-----> Get2 (8002::1)

Когда я работаю с адресами канального уровня IPv6, одновременная связь работает.то есть приведенный ниже код работает успешно.

dst_a="FE80::C1:4160" # get0
dst_c="FE80::3617:EBFF:FEAE:DEB4" # get2
src_a="FE80::3617:EBFF:FEAE:DEB5" # my_pc_interfac_A 
src_c="FE80::523E:AAFF:FE08:8AAF" # my_pc_interface_C
IFACE_A = "eth0"
IFACE_C = "eth2"
echo_a = IPv6(src=src_a, dst=dst_a, nh=58) / ICMPv6EchoRequest(data='aaaa')
echo_c = IPv6(src=src_c, dst=dst_c, nh=58) / ICMPv6EchoRequest(data='cccc')

conf.iface = IFACE_A
a = sr1(echo_a)
a.display()

conf.iface = IFACE_C
c = sr1(echo_C)
c.display()

Пока приведенный ниже код не работает, успешен только 1-й пинг (echo_a).На следующий я не получаю никакого ответа.Когда я работаю только с interface_C (echo_c) с глобальными адресами ipv6, echo_c также работает.

dst_a_global="8003::1" # get0
dst_c_global="8002::1" # get2
src_a_global="8003::2" # my_pc_interfac_A 
src_c_global="8002::2" # my_pc_interface_C
IFACE_A = "eth0"
IFACE_C = "eth2"
echo_a = IPv6(src=src_a_global, dst=dst_a_global, nh=58) / ICMPv6EchoRequest(data='aaaa')
echo_c = IPv6(src=src_c_global, dst=dst_c_global, nh=58) / ICMPv6EchoRequest(data='cccc')

conf.iface = IFACE_A
a = sr1(echo_a)
a.display()

conf.iface = IFACE_C
c = sr1(echo_C)
c.display()

Я получаю только вывод echo_a, для echo_c ответа нет.Если я сначала запускаю echo_c, я не получаю ответ для echo_a.

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

1 Ответ

0 голосов
/ 09 июля 2019

Попробуйте также настроить уровень Ethernet самостоятельно и посмотреть, работает ли он -

echo_a = Ether(src=YOUR_MAC, dst=33:33:00:01:00:03) / IPv6(src=src_a_global, dst=dst_a_global, nh=58) / ICMPv6EchoRequest(data='aaaa')
a = srp1(echo_a, iface=IFACE_A)

Кроме того, у меня были некоторые проблемы с использованием IPv6 с несколькими интерфейсами (с использованием обычного сокета вместо Scapy и Windows), посмотрите, можете ли вы найти что-то подходящее (я не мог придумать ничего особенного, но, возможно, в любом случае это поможет) -

...