You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL环境使用Scapy L3socket报Errno97地址族不支持协议如何解决

问题原因

前面输出的两个CryptographyDeprecationWarning是依赖库的旧加密算法弃用提示,和核心报错无关,可以直接忽略。
核心报错OSError: [Errno 97] Address family not supported by protocol的根因是:Scapy在Linux环境下默认的L3socket基于AF_PACKET地址族实现,而WSL1的网络栈是系统转译实现的,不支持AF_PACKET套接字,因此初始化失败。如果运行在WSL2环境下不会出现这个问题,因为WSL2搭载完整的原生Linux内核,支持所有Scapy需要的网络特性。

修复方案

根据你使用的WSL版本选择对应方案即可:

  • 最优方案:升级到WSL2
    WSL2是完整硬件虚拟化的Linux内核,原生支持AF_PACKET、混杂模式、二层网络收发等Scapy依赖的所有能力,和普通Ubuntu虚拟机表现完全一致,升级后不需要修改任何原有代码,直接运行即可正常工作。
  • 兼容方案(仅适用于无法升级WSL2、只需要三层网络收发的场景)
    如果你暂时只能使用WSL1,可以切换Scapy使用不需要AF_PACKET支持的L3RawSocket实现,修改代码如下:
import warnings
from cryptography.utils import CryptographyDeprecationWarning
# 可选:过滤掉无关的加密算法弃用警告
warnings.filterwarnings("ignore", category=CryptographyDeprecationWarning)

from scapy.all import *
# 切换为WSL兼容的Raw套接字实现
conf.L3socket = L3RawSocket
soc = conf.L3socket(iface="eth1")

注意:WSL1环境下使用L3RawSocket有功能限制,仅支持IP层及以上的数据包收发,无法实现二层帧操作(比如以太网帧构造、ARP收发、混杂模式抓包等),如果需要这类二层网络能力,必须升级到WSL2。

如果你是使用Scapy交互式命令行,直接启动时加--compat参数即可自动加载兼容套接字:

scapy --compat

内容的提问来源于stack exchange,提问作者vtable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:39:51