我刚刚完成设置我的VPN,谷歌显示我的IP是我的VPN,所以这工作正常。 但是,当我通过SSHlogin到VPN服务器时,它显示我的最后一次login是我的(非VPN'd)IP(即使在多次login/登出之后)。 这使我相信不是所有的数据都通过VPN。
在我的server.conf我有以下指令:
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"
并且iptables安装如下:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
有没有办法来解决这个问题? 它
这是100%预期的行为。 为了通过您的VPN连接路由所有stream量,默认路由添加虚拟接口作为目标。 但是,这带来了一个问题 – 用于承载VPN连接本身的networking数据包也将被路由到VPN接口,从而创build一种路由循环。 要解决这个问题,使用普通的Internet gatway作为目标,添加到VPN服务器的静态主机路由。 这样,OpenVPN创build的数据包就可以通过互联网前往OpenVPN服务器,而其他所有数据都通过VPN链接定向。
由于主机路由,如果您试图SSH到您的VPN服务器的Internet地址,连接将通过您的常规Internet连接,您将看到您的IP输出who或last 。 另一方面,如果您通过SSH连接到VPN通道的另一端,则连接将显示为源自分配给客户端的隧道末端的IP地址。
例如,这是一个典型的OpenVPN虚拟接口的configuration:
$ ifconfig ... tun0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.10.11.9 --> 10.10.11.10 netmask 0xffffffff open (pid 48658)
在这种情况下,VPN隧道的远端是10.10.11.10 。 这是一个BSD风格的ifconfig输出(实际上是OS X)。 Linux上的输出有点不同。 这是相应的主机路由(再次以BSD格式):
$ netstat -rn Destination Gateway Flags Refs Use Netif Expire 0/1 10.10.11.9 UGSc 0 0 tun0 default 10.0.1.1 UGSc 22 0 en0 10.0.1/24 link#4 UCS 1 0 en0 10.10.11/24 10.10.11.9 UGSc 0 0 tun0 10.10.11.9 10.10.11.10 UHr 5 0 tun0 yy.yy.yy.yy/32 10.0.1.1 UGSc 1 0 en0
第一条路由将所有stream量(除了指向本地networking10.0.1/24stream量)引导至tun0接口,即指向OpenVPN。 到最后一行的OpenVPN服务器的静态路由。 在这种情况下, 10.0.1.1是Internet网关。