在 Ubuntu 16.04 上,IPv4 的默认路由是 eth0 以外的接口。
如果我尝试
curl -vvv --interface eth0 v4.ifconfig.co
我明白了
* SO_BINDTODEVICE eth0 failed with errno 1: Operation not permitted; will do regular bind
但如果我sudo
工作得很好。
如何更改配置,以便在此非特权用户下运行的服务可以将 eth0 用于 IPv4?我不认为我可以更改 sudo 配置以允许这样做,因为我不希望该服务以 root 身份运行任何东西。我还想在当前接口上维护 IPv4 的默认路由。
请参阅每进程路由。假设用户是 foo,eth0 的 IP 地址是 10.1.1.1,路由器是 10.1.1.254 :
您还需要
sysctl net.ipv4.conf.eth0.rp_filter=0
.尝试使用
getcap/setcap
并签出man 7 capabilities
。在你的情况下,有些NET_CAP_*
人应该做这项工作。