我正在Ubuntu上用C语言开发某种“虚拟服务器”,它可以与网络接口上的其他本地应用程序(eth,wlan)进行交互 . 例如:使用浏览器加载一些网页,而无需实际的互联网/网络连接 . 此“虚拟服务器”应响应所有生成的请求(ARP,DNS,TCPSYN,HTTP ...),以便浏览器认为他从网络获取数据 .

对于发送数据包,我使用原始套接字,但问题是它们被内核忽略,因为它们实际上是传出流量 . 我有办法让这种沟通工作吗?例如,通过强制内核也可以从传出流量中读取数据或以这样的方式发送数据包,使它们看起来像是传入的?

我尝试将数据包发送到loopback接口,但它没有帮助 . 我也试过禁用这样的网络限制:

sysctl -w net.ipv4.conf.all.arp_accept=1
sysctl -w net.ipv4.conf.all.accept_local=1
sysctl -w net.ipv4.conf.all.rp_filter=0

我很感激有关如何解决此问题的任何想法 .