2

こんにちは、私はここにいる新しいので親切にしてください。

最近、選択したIPv6対応サーバーにIPv6パケットを送受信するためにscapyを使用しています。コードの要点は次のとおりです。

text = line[:-1]
            #destination=getIPv6Addr(line[:-1])
            destination="2607:f1c0:1000:60e0:7992:97f7:61b2:2814"
            source="2001:630:d0:f105:5cfe:e988:421a:a7b7"
            syn = IPv6(dst=destination,src=source) / TCP(sport=555,dport=80,flags="S")#flag S is syn packet
            syn.show()
            syn_ack = sr1(syn,timeout=11)

コードを実行すると、次のようになります。

Begin emission:
Finished to send 1 packets.
.................WARNING: No route found for IPv6 destination :: (no default route?)
WARNING: No route found for IPv6 destination 2607:f1c0:1000:60e0:7992:97f7:61b2:2814 (no default route?)
............................................................................................................
Received 1322 packets, got 0 answers, remaining 1 packets

私が理解していることから、パケットは送信されましたが、応答は得られませんでした (0 回答)。これにより、wireshark を使用してパケットを盗聴することを考えました。

フィルターで使用する場合:

ip6 net 2607:f1c0:1000:60e0:7992:97f7:61b2:2814

そもそもパケットが送信されていないことに気付きました! なぜこれが起こっているのか、ここで何が起こっているのか誰か知っていますか?

よろしくマルティノス

編集:

コメントを詳しく調べたところ、ルートリストは空であってはならないことに気付きました。パケットを送信するルートがありません。それらを追加する方法がわかりません!ここで私がしたことを助けてください:

デバイスからすべてのインターフェイスを取得しようとしました。これが私が得たものです:

{'flags': 33, 'link_addr': b0:90:20:52:41:53, 'type': 6, 'name': 'eth0', 'mtu': 1500L}
{'flags': 33, 'link_addr': b0:90:20:52:41:53, 'type': 6, 'name': 'eth1', 'mtu': 1500L}
{'flags': 33, 'link_addr': 00:50:56:a0:1e:df, 'type': 6, 'name': 'eth2', 'mtu': 1500L}
{'flags': 33, 'link_addr': 00:50:56:a0:1e:df, 'type': 6, 'name': 'eth3', 'mtu': 1500L}
{'flags': 33, 'link_addr': b0:90:20:52:41:53, 'type': 6, 'name': 'eth4', 'mtu': 1500L}
{'flags': 33, 'link_addr': b0:90:20:52:41:53, 'type': 6, 'name': 'eth5', 'mtu': 1500L}
{'flags': 32, 'link_addr': 00:50:56:a0:00:6c, 'type': 6, 'name': 'eth6', 'mtu': 0L}
{'flags': 32, 'link_addr': 00:50:56:a0:01:0e, 'type': 6, 'name': 'eth7', 'mtu': 0L}
{'flags': 32, 'link_addr': 00:50:56:a0:6e:61, 'type': 6, 'name': 'eth8', 'mtu': 0L}
{'addr': 152.78.61.39/24, 'mtu': 1500L, 'flags': 33, 'link_addr': 00:50:56:a0:1e:df, 'type': 6, 'name': 'eth9'}
{'flags': 33, 'link_addr': b0:90:20:52:41:53, 'type': 6, 'name': 'eth10', 'mtu': 1500L}
{'flags': 33, 'link_addr': b0:90:20:52:41:53, 'type': 6, 'name': 'eth11', 'mtu': 1500L}
{'flags': 33, 'type': 23, 'name': 'ppp0', 'mtu': 1494L}
{'flags': 33, 'link_addr': 20:41:53:59:4e:ff, 'type': 23, 'name': 'ppp1', 'mtu': 3256L}
{'addr': 127.0.0.1/8, 'flags': 3, 'type': 24, 'name': 'lo0', 'mtu': 1500L}
{'flags': 33, 'type': 131, 'name': 'tun0', 'mtu': 4091L}
{'flags': 32, 'type': 131, 'name': 'tun1', 'mtu': 1480L}
{'flags': 33, 'type': 131, 'name': 'tun2', 'mtu': 1460L}
{'flags': 33, 'type': 131, 'name': 'tun3', 'mtu': 1464L}
{'flags': 32, 'type': 131, 'name': 'tun4', 'mtu': 1280L}
{'flags': 32, 'type': 131, 'name': 'tun5', 'mtu': 1280L}
{'flags': 33, 'type': 131, 'name': 'tun6', 'mtu': 1472L}
{'flags': 32, 'type': 131, 'name': 'tun7', 'mtu': 1280L}

ご覧のとおり、IPv6 アドレスはどこにもありません。IPv6 アドレスがリストされていない場合、どうすれば IPv6 パケットを送信できますか? 拡張では、cmd からの ipconfig は次のとおりです。

    Ethernet adapter Local Area Connection 4:

   Connection-specific DNS Suffix  . : ecs.soton.ac.uk
   IPv6 Address. . . . . . . . . . . : 2001:630:d0:f105:5cfe:e988:421a:a7b7
   Temporary IPv6 Address. . . . . . : 2001:630:d0:f105:e8bc:7c26:9a40:31b8
   Link-local IPv6 Address . . . . . : fe80::5cfe:e988:421a:a7b7%17
   IPv4 Address. . . . . . . . . . . : 152.78.61.39
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : fe80::210:18ff:fee5:5bfa%17
                                       152.78.61.254

Tunnel adapter 6TO4 Adapter:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Tunnel adapter Teredo Tunneling Pseudo-Interface:

   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2001:0:5ef5:79fd:142e:398d:67b1:c2d8
   Link-local IPv6 Address . . . . . : fe80::142e:398d:67b1:c2d8%13
   Default Gateway . . . . . . . . . :

Tunnel adapter isatap.ecs.soton.ac.uk:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : ecs.soton.ac.uk

これは VM で実行されますが、問題ではないと思います。

誰か助けてくださいこれは非常に重要です!IPv6 パケットの送信方法を理解するために scapy を設定するにはどうすればよいですか。上記のインターフェイスのリストに ipv6 アドレスが表示されないのはなぜですか?

4

3 に答える 3

2

実際、イーサネット アダプタには IPv6 アドレスとデフォルト ゲートウェイの両方があります。あなたは出来る

  • ping -6 ipv6.google.comIPv6 接続があるかどうかを確認してみてください。他の誰かに再割り当てされていない限り、あなたの IPv6 アドレスに問題なく ping を実行できるので、あるに違いないと思います。

  • ルーティング テーブルを調べて、余分なルートがないことを確認します。特に、Teredo インターフェイスが問題を引き起こしている可能性があります。消して。(netsh インターフェイス teredo 設定状態が無効)

Teredo: https://www.rfc-editor.org/rfc/rfc4380 http://en.wikipedia.org/wiki/Teredo_tunneling

scapy を使用して IPv6 ルーティングとインターフェイスを構成する方法がわかりません。

コメントに十分なスペースがないため、これを回答にしました。スーパーユーザーで質問することをお勧めします。私は「JANET」または Windows のネットワーク構成に精通していないため、十分にお手伝いすることはできません。

于 2013-08-13T13:01:17.363 に答える
1

「layers/inet6.py」に getmacbyip6 への関数呼び出しがあり、scapy ルーティング テーブルに基づいてインターフェイス情報を取得しようとしていることがわかりました。

iff,a,nh = conf.route6.route(ip6, dev=conf.iface6)

conf.iface6 はデフォルトで「lo」に設定されているため、常にループバック インターフェイスを返します。

iff,a,nh = conf.route6.route(ip6)

上記のステートメントを以下に示すように変更すると、対応するインターフェイスからパケットが送信されるのを確認できました。

例:-

[root@purple-perf-tester scapy]# ifconfig eth1
eth1: flags=323<UP,BROADCAST,RUNNING,PROMISC>  mtu 1500
        inet 11.0.0.5  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 2001::6  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::f816:3eff:fe2b:cc67  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:2b:cc:67  txqueuelen 1000  (Ethernet)
        RX packets 6107709  bytes 1239209940 (1.1 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12093723  bytes 4161092991 (3.8 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@purple-perf-tester scapy]# ip -6 route show dev eth1
2001::7 via fe80::f816:3eff:fed1:43de  metric 1024 
2001::/64  proto kernel  metric 256 
fe80::/64  proto kernel  metric 256 

[root@purple-perf-tester scapy]# scapy
INFO: Can't import python gnuplot wrapper . Won't be able to plot.
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
WARNING: No route found for IPv6 destination :: (no default route?)

Welcome to Scapy (2.3.1)
>>> 
>>> conf.route6
Destination                    Next Hop                   iface  src candidates           
::1/128                        ::                         lo     ::1                      
2001::7/128                    fe80::f816:3eff:fed1:43de  eth1   2001::6                  
2001::/64                      ::                         eth1   2001::6                  
2002::/64                      ::                         eth2   2002::6                  
fe80::/64                      ::                         eth0   fe80::f816:3eff:fe7c:d9fe
fe80::/64                      ::                         eth1   fe80::f816:3eff:fe2b:cc67
fe80::/64                      ::                         eth2   fe80::f816:3eff:fe1a:a62e
::1/128                        ::                         lo     ::1                      
2001::6/128                    ::                         lo     ::1                      
2002::6/128                    ::                         lo     ::1                      
fe80::f816:3eff:fe1a:a62e/128  ::                         lo     ::1                      
fe80::f816:3eff:fe2b:cc67/128  ::                         lo     ::1                      
fe80::f816:3eff:fe7c:d9fe/128  ::                         lo     ::1                      
>>> iff,a,nh = conf.route6.route("2001::7", dev=conf.iface6)
WARNING: No route found for IPv6 destination 2001::7 (no default route?)
>>> print iff
lo
>>> iff,a,nh = conf.route6.route("2001::7")
>>> print iff
eth1
于 2016-09-19T14:32:19.893 に答える