这可能有点遥不可及。但是在Node.js中,我想通过VPN服务器发出一个HTTP请求(例如,使用npm上的请求包)。我已经设置了一个VPN服务器(使用HideMyAss),通过在我的操作系统网络设置部分中配置它,我可以在操作系统级别连接到它。但我希望使用Nodejs程序以编程方式连接到它,并让使用该程序发出的HTTP请求通过该VPN路由。
这可以使用代理来完成,例如:
var request = require('request');
var url = 'https://www.google.com';
var proxy = 'http://username:password@usa.proxyservice.com:1234';
request.get({ url: url, proxy: proxy }, function(err, res, body) {
});
...but我想对VPN做一些类似的事情。这有可能吗?谢谢!
发布于 2015-08-17 16:16:03
VPN(通常)通过特定信道的隧道层2或3网络分组。从应用层的角度来看,您不必考虑较低的级别,因为路由网络包是由操作系统负责的。例如,OpenVPN创建一个TAP
虚拟接口,并通过安全隧道将OS发送的所有数据包传输到这些接口。对路由表使用哪个接口的决定。web代理服务器比VPN简单得多,因为它只接受HTTP请求(应用层)并中继它们。
这取决于您使用的VPN类型。假设您正在使用OpenVPN,并且它为您创建了一个虚拟接口(例如tun0
),该接口有自己的IP地址(例如10.124.1.6
),也可能(取决于服务器的拓扑学)有一个P2P地址(例如10.124.1.5
)。可以指示节点使用localAdress
通过特定(本地)网络接口绑定网络连接。
var options = {
host: "example.com",
path: "/path/to/web/service",
localAddress: '10.124.1.6', // IP address network interface
};
http.request(options);
假设情况下,这将是通过VPN接口有选择地隧道特定请求的解决方案。-我不能保证。但我想说这会让你有一些想法。
https://stackoverflow.com/questions/32048832
复制相似问题