关scapy的send函数转发一个dst为自己虚拟网卡的icmp包却无法接收的问题

问题

我在写一个sslvpn,在客户端接收到数据包并把它拆开后,准备scapy的send函数转发一个dst为自己虚拟网卡地址,我的虚拟网卡接收不到自己发出的数据包,并且可以用wireshark抓到自己转发的包

错误代码

def receive(sock):

while True:  
    data=sock.recv(2048)#这个是一个ssl连接后的sock
    pkt = IP(aes.decrypt(data)) #pkt是一个icmp中reply数据包,原来加密在tls的data内
    print(" Inside:{} -->{}".format(pkt.src,pkt.dst))#输出
    send(pkt)

可运行代码但是不是我需要的代码

sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind((IP_A,PORT))

while True:
    data,(ip,port)=sock.recvfrom(2048)
    print("{}:{} -->{}:{}".format(ip,port,IP_A,PORT))
    pkt = IP(aes.decrypt(data)) 
    print(" Inside:{} -->{}".format(pkt.src,pkt.dst))
    send(pkt)

运行结果

ping不通并且wireshark抓到五个数据包,在TLS中发送时会把icmp封装进入data内,到.11的时候拆开转发
TLS 10.9.0.5->10.9.0.11
TCP 10.9.0.11->10.9.0.5
TLS 10.9.0.11->10.9.0.5
TCP 10.9.0.5->10.9.0.11
ICMP 192.168.60.6->192.168.53.99#53.99是本机虚拟网卡地址,60.6是我ping的目标地址

我的解答思路和尝试过的方法

我觉得是在send的时候把拆开后的icmp报文发送到1和2的中间网段了,所以才会被监测到,正常应该直接通过127.0.01回环直接接收走

你的两台机器,主机+虚拟机的方式通信?还是直接一台机器的相当于两张网卡?
如果测试不建议第二种方式
ICMP—》网络层—》数据链路层—》物理层,然后回至虚拟网卡,这样一个过程如果只用一台机器模拟很多错误不好发现
TCP两条应该是TCP建立连接过程?缺少一条,所以连接未建立,导致不通?
没有具体数据只能这样猜猜
查一下具体两个TCP包的内容,是不是建立连接过程,还是其他什么内容

检查网络配置