KVM 宿主机内核构造报文(到客户机) 发送不出去
在一台宿主机A 192.168.122.104上面虚拟出了一个客户机B 192.168.123.5在A上使用命令ifconfig,得到下列信息:
eth0192.168.122.104
virbr1:192.168.123.1
现在宿主机A中使用内核构造包的方式发送报文
UDP包
源IP:192.168.123.1
目的IP:192.168.123.5
源端口:39804
目的端口:8786
源MAC:A的virbr1的MAC地址
目的MAC:B的MAC地址
网络接口
自己的构造报文内核模块代码中这样获取dev
dev = dev_get_by_name(&inet_** , "virbr1")
发送的时候使用函数netif_receive_skb
结果只有宿主机的netfilter的0号钩子点LOCAL_IN收到了报文,其他钩子点都没有被触发
然后使用宿主机的ping 192.168.123.5的话,netfilter的大部分钩子点都收到了信息,
有神牛熟悉这样的网络问题吗,希望能给与某些提示,在公司不能上外网,只能晚上回来回复。 本帖最后由 nswcfd 于 2016-01-08 12:58 编辑
(在宿主机)发送的时候使用函数netif_receive_skb
当然只会由宿主机收到这个报文了。
宿主到虚机通讯的关键是【发送到(比如经过路由)】虚接口,然后由虚接口的xmit接口,通过一定的逻辑转发给虚机的虚拟网卡。
对kvm的网络配置不是太熟悉,virbr1在host里面是由什么模块驱动着?macvlan或者其它? 问题已经解决了,发送的时候使用netif_receive_skb或者netif_rx都可以发送数据。
发送的时候要指定发送的接口是virbr1,就可以了
页:
[1]