繁体   English   中英

Linux仅使用原始套接字接口

[英]Linux use interface for raw socket only

我的嵌入式系统有一个OpenWrt Linux发行版。 该设备有3个网络接口:eth0,eth1和wlan0。

其中一个网络接口(eth0)应仅用于原始套接字编程。 我能够使用参数AF_PACKETSOCK_RAWETH_P_ALL创建一个套接字。 套接字接收所有网络流量,我可以发送数据包,一切正常。

但我的问题是,操作系统还使用接口发送回收(例如ARP和ICMP请求/响应)。

是否有任何选项只能由我的程序使用,而不是由操作系统本身使用?

使用香草内核无法实现这一点。 但这可以接近:

首先,忽略该接口上的所有arp请求:

echo 8 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

然后,禁用IPv6:

echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6

最后,过滤该接口上的所有IPv4数据包

iptables -I INPUT -i eth0 -j DROP

并且不要在该接口上设置IP地址或路由。 这当然不是完美的,内核仍会处理某些数据包,但我认为没有更好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM