我正在使用封装了各种适配器的Faraday,包括 Net::HTTP、Excon、Typhoeus、Patron 和 EventMachine。我想指定网络接口(例如en0
或en1
),但我不确定如何或是否可能。我愿意接受 Ruby 级别或 Linux 级别的答案。
注意:根据使用 Ruby 和 Curb 从不同网络接口发出 HTTP 请求,使用Curb可以做到这一点。
我正在使用封装了各种适配器的Faraday,包括 Net::HTTP、Excon、Typhoeus、Patron 和 EventMachine。我想指定网络接口(例如en0
或en1
),但我不确定如何或是否可能。我愿意接受 Ruby 级别或 Linux 级别的答案。
注意:根据使用 Ruby 和 Curb 从不同网络接口发出 HTTP 请求,使用Curb可以做到这一点。
我认为使用 Faraday 和 Typhoeus 甚至可以做到这一点:https ://github.com/typhoeus/typhoeus/blob/92d19df7af06034ae28996e097676b01301042f5/lib/typhoeus/adapters/faraday.rb#L139 。
不确定是否可以绑定到特定的网络接口,但使用 Faraday,您可以将请求选项设置:bind
为{:host => "<your_ip>", :port => "<your_port>" }
至少指定 IP 地址和端口。
据我所知,em-http、em-synchrony、httpclient 和 typhoeus 适配器尊重这些设置。
我在 Typhoeus(不使用法拉第)和绑定到特定的本地接口时遇到了这个问题。以下对我有用:
options = {
interface: '<ip address>'
}
req = Typhoeus::Request.new("https://example.com/3", options)