0

我在我的 ubuntu 14.04 机器上使用 3 个网卡。我正在尝试使用三个不同的网卡同时与 3 个不同的网络通信。我想使用 IPv6 全局地址。下面是网络结构。

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()

虽然下面的代码不起作用,但只有第一次 ping 成功(echo_a)。对于下一个,我没有得到任何回应。当我只使用具有全局 ipv6 地址的 interface_C (echo_c) 时,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。

4

1 回答 1

1

尝试自己也配置以太网层,看看它是否工作 -

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),看看你是否能找到相关的东西(我想不出任何特别的东西,但也许它会有所帮助反正)-

于 2019-07-09T11:39:34.257 回答