IPv6地址,用于提供Python套接字源

时间:2015-09-21 19:55:13

标签: python sockets ipv6 packet

我已经设置了一个虚拟机,并尝试使用Python脚本将IPv6消息发送到我的计算机,以便我可以使用WireShark进行分析。主机是Windows,我希望看到来自Linux VM的消息。但是,当我尝试发送消息时,socket.bind()返回一个无效的参数错误。我应该使用什么IPv6地址作为绑定套接字的本地IP?我99%确定错误来自绑定到无效的IP。那么我应该将什么用作IP呢?这是nmcli dev show的输出,希望这足以帮助我解决这个问题。如果不是,请告诉我,我会添加更多信息。

[eng@peter test_scripts]$ nmcli dev show
GENERAL.DEVICE:                         enp0s3
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:F7:9A:17
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     System enp0s3
GENERAL.CON-PATH:                          /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         10.0.2.15/24
IP4.GATEWAY:                            10.0.2.2
IP4.DNS[1]:                             10.0.2.3
IP4.DOMAIN[1]:                          stc.syrres.com
IP6.ADDRESS[1]:                         fe80::a00:27ff:fef7:9a17/64
IP6.GATEWAY:

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          10 (unmanaged)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:

我测试了'fe80 :: a00:27ff:fef7:9a17 / 64','fe80 :: a00:27ff:fef7:9a17'等等,但仍然无法让它绑定。我应该使用什么IPv6地址?

1 个答案:

答案 0 :(得分:1)

如果你想倾听,最好的办法是绑定::,这相当于绑定0.0.0.0

如果要连接到该服务器,请记住您正在使用链接本地地址,这需要范围ID才能正常运行。

例如,在Linux上,要连接到fe80::1接口上的主机eth0,您将连接到fe80::1%eth0。如果您正在处理socket模块,请不要忘记使用getaddrinfo()或者非常小心地填充scopeid