我已经设置了一个虚拟机,并尝试使用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地址?
答案 0 :(得分:1)
如果你想倾听,最好的办法是绑定::
,这相当于绑定0.0.0.0
。
如果要连接到该服务器,请记住您正在使用链接本地地址,这需要范围ID才能正常运行。
例如,在Linux上,要连接到fe80::1
接口上的主机eth0
,您将连接到fe80::1%eth0
。如果您正在处理socket
模块,请不要忘记使用getaddrinfo()
或者非常小心地填充scopeid
。