2016-05-13 76 views
1

運行此命令作爲非根用戶:SO_BINDTODEVICE與捲曲--interface或CURLOPT_INTERFACE

捲曲--interface TUN0 http://google.com -v

SO_BINDTODEVICE TUN0失敗,錯誤號1:操作不允許; 將做常規綁定

設置curl_setopt($ch, CURLOPT_INTERFACE "tun0")在PHP中也不起作用。但是,

平-I TUN0 google.com

正常工作,所以才用捲曲的問題。它甚至適用於根捲曲,但它確實應該適用於非root用戶。

我有一個openpvn接口tun0但同樣的事情發生在lo接口。

這種情況發生在多個系統上,--interface選項剛剛在curl中斷開,還是應該用其他方式使用它?我應該爲curl啓用一些特殊功能來使用界面嗎?

回答

1

我不認爲你已經正確地解釋了詳細的信息。

捲曲的--interface選項要求它將套接字的本地端綁定到特定的IP /網絡接口。

使用正常的bind()調用來完成套接字的綁定。

此外, bind()調用,linux提供SO_BINDTODEVICE setsockopt選項,這是一種更好,更完整的綁定到接口。然而,這個調用需要root權限才能工作,大多數使用應用程序的libcurl不會擁有這些權限,然後在詳細輸出中使用上述文本將失敗。

因此,即使存在該消息,套接字的本地綁定也能正常工作。它只是沒有工作到SO_BINDTODEVICE級別。