以非root用户身份运行此命令:
curl—接口tun0http://google.com-v
SO_BINDTODEVICE tun0失败,错误号1:不允许操作;将定期绑定
在php中设置curl_setopt($ch, CURLOPT_INTERFACE "tun0")
也不起作用。但是,
ping-我tun0 google.com
效果很好,所以这只是卷曲的问题。它甚至可以为root用户使用curl,但它确实应该为非root用户使用。
我有一个openpvn接口tun0
,但lo
接口也会发生同样的情况。
这种情况发生在多个系统上,那么--interface选项只是在curl中中断了,还是应该以其他方式使用它?我应该为curl启用一些特殊的功能来使用该界面吗?
我认为您没有正确解释详细消息。
curl的--interface
选项要求它将套接字的本地端绑定到特定的IP/网络接口。
绑定套接字是通过普通的bind()
调用完成的。
除了bind()调用之外,linux还提供了SO_BINDTODEVICE
setsockopt选项,这是一种更好、更完整的接口绑定。然而,这个调用需要root访问权限才能工作,而大多数使用libcurl的应用程序都没有root访问权限,然后它将在详细输出中出现上述文本而失败。
因此,即使存在该消息,套接字的本地绑定也能工作。它只是没有达到SO_ BINDTODEVICE级别。