使用OpenVPN tun设备进行特定请求

我已经使用route-nopullconfiguration设置了OpenVPN连接。 所以现在没有特殊的路由添加到客户端的configuration中,只有一个TUN设备被创build,如下所示:

 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:13.0.9.88 PtP:13.0.9.88 Mask:255.255.255.224 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:150 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:12498 (12.4 KB) TX bytes:2520 (2.5 KB) 

因此,默认情况下,stream量都不会通过VPN。 太棒了,因为我只是需要它的某些请求。

这就是我的问题:我该怎么做? 我主要在node.js中使用它。

在下一个示例中,我使用http.request创build了一个简单的GET请求,但是我指定了当前给予TUN接口的地址。

 var http = require('http'), url = require('url'); var options = { localAddress: '13.0.9.88', hostname: 'www.google.be', path: '/', method: 'GET', port: 80 }; var req = http.request(options, function(res) { res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('Body: ' + chunk); }); }); req.end(); 

问题是:这个请求永远不会通过或得到回应。

我也尝试了一个更简单的testing,只需在tun0接口上使用ping到Google的一个服务器即可:

  ping -I tun0 173.194.112.24 

这再一次没有结果。

Fyi:当我安装OpenVPN创build一个TAP接口(而不是一个TUN接口),我得到一个“无法访问目标主机”的错误

vpn的ip的netstat信息:

 # netstat -rn | fgrep 13.0.9 13.0.9.88 0.0.0.0 255.255.255.224 U 0 0 0 tun0 

我必须添加哪些路线才能启用此function?

您需要为要通过VPN隧道路由的目的地添加路由,如下所示:

 route add <destip> gw <server IP> 

其中<destip>是要通过VPN路由的目标IP, <server ip>13.0.9.中的OpenVPN服务器的13.0.9. networking。

顺便说一下,你不应该在私有VPN中使用可公开路由的IP地址。 您必须使用RFC1918中定义的一些networking。

在看到您的原始问题将openvpn设置为仅接口设备后 ,您应该删除客户端configuration中的route-nopull ,并从服务器configuration文件中删除push "redirect-gateway def1"

然后你可以添加:

 push "route <serverip> 255.255.255.255" 

到服务器configuration文件。 这告诉服务器告诉客户端通过OpenVPN服务器路由<serverip>

经过相当多的search之后,我在Georgie Casey的博客上find了答案:

no-pullconfiguration保持,但每个连接后,这些路线需要添加:

 ip route add default via {{PtP-IP}} dev tun0 table 10 ip rule add from {{tun0-inet addres}} table 10 

例如,你可以从ifconfig(ips修改)中获得这些值:

 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:16.0.2.11 PtP:16.0.2.11 Mask:255.255.255.224 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:66 errors:0 dropped:0 overruns:0 frame:0 TX packets:30 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:5344 (5.3 KB) TX bytes:2295 (2.2 KB)