我希望虚拟机(Windows XP)中的每个连接只要使用我的OpenVPN服务器,一旦连接丢失到OpenVPN,我想失去VM中的所有互联网连接。 当然,虚拟机(Windows 7)的主机将永远不会连接到VPN,也不会从我的真实互联网断开连接。
我非常肯定,我可以使用Windows route命令,只允许我的Windows XP机器连接到我的OpenVPN服务器,我们会说是1.2.3.4 。
我遵循这个指南: http : //community.spiceworks.com/how_to/show/1334,但我甚至无法得到他们的例子工作。
这是我的路由configuration通过发出命令route print
路由预先打开的VPN连接:
=========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.108 30 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 192.168.1.0 255.255.255.0 192.168.1.108 192.168.1.108 30 192.168.1.108 255.255.255.255 127.0.0.1 127.0.0.1 30 192.168.1.255 255.255.255.255 192.168.1.108 192.168.1.108 30 224.0.0.0 240.0.0.0 192.168.1.108 192.168.1.108 30 255.255.255.255 255.255.255.255 192.168.1.108 192.168.1.108 1 255.255.255.255 255.255.255.255 192.168.1.108 3 1 Default Gateway: 192.168.1.1 =========================================================================== Persistent Routes: None
OpenVPN连接后(通知1.2.3.4取代了我的真实VPN IP):
=========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 1 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.108 30 10.8.0.1 255.255.255.255 10.8.0.5 10.8.0.6 1 10.8.0.4 255.255.255.252 10.8.0.6 10.8.0.6 30 10.8.0.6 255.255.255.255 127.0.0.1 127.0.0.1 30 10.255.255.255 255.255.255.255 10.8.0.6 10.8.0.6 30 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 128.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 1 1.2.3.4 255.255.255.255 192.168.1.1 192.168.1.108 1 192.168.1.0 255.255.255.0 192.168.1.108 192.168.1.108 30 192.168.1.108 255.255.255.255 127.0.0.1 127.0.0.1 30 192.168.1.255 255.255.255.255 192.168.1.108 192.168.1.108 30 224.0.0.0 240.0.0.0 10.8.0.6 10.8.0.6 30 224.0.0.0 240.0.0.0 192.168.1.108 192.168.1.108 30 255.255.255.255 255.255.255.255 10.8.0.6 10.8.0.6 1 255.255.255.255 255.255.255.255 192.168.1.108 192.168.1.108 1 Default Gateway: 10.8.0.5 =========================================================================== Persistent Routes: None
经过一些试验和错误,我发现了一个解决我的问题:
为了防止所有的意外或随机断开VPN暴露您的真实IP,您必须路由所有目的地通过一个假的网关,除了您的VPN IP。
给networking/电脑专家:
假设如下:
正常默认网关: 192.168.1.1
未使用的私有IP: 192.168.1.222
OpenVPN服务器IP: 1.2.3.4
使用cmd:
route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.222 metric 2 route -p add 1.2.3.4 mask 255.255.255.255 192.168.1.1 metric 1
然后通过为适配器提供静态IP地址并使用未使用的专用IP作为假默认网关来禁用DCHP; 从而阻止每个连接,但你的OpenVPN的
对于那些需要更多一步一步的方法:
你需要做的第一件事就是打开命令提示符,按住windows键(左Ctrl的右边的button),然后按r键,将出现一个对话框。 input“cmd”并按回车。
一个黑盒子应该出现一些写作,这叫做命令提示符,所有从这里发出的命令都将在这个黑盒子里完成。
首先要弄清楚假网关必须位于networking接口内。 什么是“界面”? 那么在这种情况下,它是分配给计算机的私有IP,这似乎是给予我的“预OpenVPN”表127.0.0.1或192.168.1.108两个选项。 我从经验中知道127.0.0.1是一个环回IP,所以缩小了它的范围。 但是,如果我不知道我的IP地址,我可以单击运行Windows键+ R,然后键入cmd,然后按确定。 出现一个黑框,inputCMD命令ipconfig并得到如下输出:
Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.1.108 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.1.1
在那里,它具体告诉我我的IP地址,因此“接口”是192.168.1.108 ,所以我的假网关必须在192.168.1.100至192.168.1.254范围内,不能被使用。
例如,可以说我想使用IP 192.168.1.101 ,检查是否使用我会发出命令ping 192.168.1.101 ,如果我得到这样的回复:
Pinging 192.168.1.101 with 32 bytes of data: Reply from 192.168.1.101: bytes=32 time=1ms TTL=64 Reply from 192.168.1.101: bytes=32 time=1ms TTL=64 Reply from 192.168.1.101: bytes=32 time=1ms TTL=64 Reply from 192.168.1.101: bytes=32 time=1ms TTL=64 Ping statistics for 192.168.1.101: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 1ms, Average = 1ms
这将表明IP 192.168.1.101目前正在使用,我cannot将其用于我的假网关。 所以我决定尝试IP 192.168.1.222并发出相同的ping命令: ping 192.168.1.222 。 如果回复如下:
Pinging 192.168.1.222 with 32 bytes of data: Reply from 192.168.1.100: Destination host unreachable. Reply from 192.168.1.100: Destination host unreachable. Reply from 192.168.1.100: Destination host unreachable. Reply from 192.168.1.100: Destination host unreachable. Ping statistics for 192.168.1.222: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
然后,我会成功find一个私人的IP,目前没有被使用,可以用于我的假网关。 对于其余的答复,我将使用192.168.1.222作为我的假网关。
下一步是发送每一个目标尝试通过我们的假门户,而不是真正的。 我们通过发出这个命令来做到这一点
route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.222 metric 2
0.0.0.0 mask 0.0.0.0表示“每个地址”将被发送到网关192.168.1.222 。 metric 2部分为此路由分配metric 2的优先级 – 这很重要,因为1的优先级(度量)将优先于2的优先级。
给它一个度量值2会使它的优先级高于你的DHCP分配的网关的优先级,这对我来说是30.这意味着每个目的地将试图通过网关192.168.1.222,而不是真正的网关,本质上是路由每个连接你试着去找不到的地方。
您可以通过再次发出ipconfig命令来validation您是否正确执行了此操作:
Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.1.108 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.1.222 192.168.1.1
注意这次我们有两个IP地址在默认网关下列出,而不仅仅是一个。 还要注意我们的假网关是如何列在第一位的(上图),而真实的网关列在第二位。
这意味着当我们尝试连接到我们的OpenVPN服务器IP时,在这个例子中的1.2.3.4它将被路由到假的网关(192.168.1.222),不允许我们连接。 我们不要那个。 因此,我们必须创build另一条具有更高优先级(较低度量)的路由,即在连接到我们的OpenVPN IP时,我们希望它连接到真实网关(192.168.1.1)。
我们要做的第一件事是确认OpenVPN服务器是什么,我们可以通过再次使用ping命令来做到这一点。 通常VPN提供商会给你一个地址,比如us.bestvpn.com来连接,我们需要弄清楚这个url是什么IP地址的别名,最好使用ping命令完成,我们问:
ping us.bestvpn.com
和回应应该是这样的
Pinging us.bestvpn.com [1.2.3.4] with 32 bytes of data括号内的IP地址是OpenVPN服务器的IP地址。 我们将使用1.2.3.4作为VPN服务器IP。
现在我们必须build立起来,以便将这个IP路由到我们真正的网关,我们通过发出:
route -p add 1.2.3.4 mask 255.255.255.255 192.168.1.1 metric 1
度量值1将允许路由优先于度量2我们给了假的网关路由。 重要的是要注意, mask 255.255.255.255意味着确切的IP 1.2.3.4 – 这是我的情况是正确的,但你可能想要使掩码255.255.255.0这基本上告诉它,任何IP在1.2.3.0到1.2.3.254将被路由到真正的网关。 如果您的OpenVPN提供商使用一系列的IP来连接它,这很有用。
现在我们应该可以像正常一样连接到VPN,然后一旦连接就可以浏览所有的互联网。 一旦你断开连接,你会注意到,它似乎没有连接,然后突然它与你的真正的IP,什么?! 为什么要这样做?
那么,我的理解是,默认情况下,当DCHP意识到网关在这么多秒钟之后没有去哪里时,它将试图尝试次级网关,在这种情况下,你是真正的网关。
为了防止发生这种情况,您必须通过分配一个静态IP,子网掩码和网关到您的互联网属性来closuresDCHP。 一步一步的图片教程如何做到这一点在XP,Vista和7 。
一旦你完成了,再次连接到VPN,validation它仍然工作,然后连接。 尝试连接到一个网站,并等待好2-3分钟,以确认将不会加载,你都设置。
这就是你可以防止随机VPN断开暴露你的真实IP地址。
如果您担心OpenVPN中的DNS和IP泄漏,并且在使用OpenVPN时需要一种简单且自动的方法来防止IP和DNS泄漏,请查看www.openvpnchecker.com提供的两个简单工具
OpenVPN看门狗: http : //openvpnchecker.com/
OpenVPN防火墙: http : //openvpnchecker.com/firewall.htm编辑/删除消息