我在写一个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包的内容,是不是建立连接过程,还是其他什么内容
检查网络配置