我的 linux 主机上有一个应用程序,它通过 10G 以太网通过 UDP 与另一台机器通信。另一端的机器不响应 ARP 请求。我可以通过其他方式(不同的接口(interface),在
有没有办法以编程方式将此信息放入没有特权状态的 arp 表中?
我知道每次开机时我都可以在命令行上发出“sudo arp -s 1.2.3.4 AA:BB:CC:DD:EE:FF”。
我知道我可以将“1.2.3.4 AA:BB:CC:DD:EE:FF”添加到 etc/ethers
我知道作为特权用户/进程,我可以向 SIOCSARP 发出 ioctl。
所有这些机制都需要 sudo/root 权限。我阅读了一些有关授予应用程序“CAP_NET_ADMIN”权限的内容。
我正在寻找此功能,以便最终用户无需执行上述任何操作。看起来,如果我没有 sudo/root,可以打开一个确定是否需要此网络信息的套接字,我应该有一种方法,没有 sudo/root,可以提供它。
最佳答案
不可以,您不能以非 root 身份编辑 ARP 信息。这是有道理的,否则恶意攻击者将能够修改 ARP 表并完全破坏网络通信并危及安全。
您的问题的解决方案是修复您的网络配置。
关于linux - 如何向套接字提供目标MAC地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640341/