我已经使用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)