我刚刚开始使用 VPN 和 OpenVPN。我的理解是,当我有 VPN 连接时,就好像我和服务器在同一个网络上。然后我应该能够通过本地地址 (10.8.xx) 连接到服务器。接下来我应该能够通过服务器浏览互联网。
我在云端有自己的服务器,用于存放个人物品。我可以用它来做任何我想做的事情。它运行在 Debian 7 上。我安装了 openvpn,可以从我的笔记本电脑连接到它。我以为这会将我的 IP 地址更改为服务器的 IP 地址,但当我在浏览器中打开 whatismyip.com 时,我仍然看到我的正常 IP。
这是 ifconfig 的输出:
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=27<RXCSUM,TXCSUM,VLAN_MTU,TSO4>
ether 00:23:df:89:81:82
media: autoselect
status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:23:6c:8f:4f:47
inet6 fe80::223:6cff:fe8f:4f47%en1 prefixlen 64 scopeid 0x5
inet 192.168.1.22 netmask 0xffffff00 broadcast 192.168.1.255
media: autoselect
status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
ether 02:23:6c:8f:4f:47
media: autoselect
status: inactive
tun0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.8.0.6 --> 10.8.0.5 netmask 0xffffffff
open (pid 909)
所以我有点迷茫了。我必须在浏览器中配置代理吗?如果是这样,那只是浏览器。有没有办法设置开关仅通过 vpn 连接?如果我误解了 vpn 的工作方式,请解释一下。
答案1
不要使用 OpenVPN,而要使用 SSH 隧道。这种方式效果更好,设置起来也更容易,而且也是加密的。与 OpenVPN 不同的是,如果连接关闭,您将无法再浏览互联网。使用 OpenVPN,如果连接关闭,您将自动返回到自己的网络,并被允许继续浏览而无需警告。您的服务器上无需进行任何更改。
如果您的计算机上运行的是 Windows:
- 下载 PuTTY(如果你还没有)
- 在类别侧面板中,转到连接>SSH,然后选中启用压缩
- 在类别侧面板中,转到连接>SSH>隧道,然后在源端口字段中输入一个数字。我通常使用 3456。然后选择动态,最后单击添加。
- 在类别侧面板中,返回到会话。在主机名字段中输入您的用户名@主机名(将 your_username 替换为您在系统上的用户名,将 hostname 替换为您服务器的域或 IP 地址),然后保存会话。
- 单击“打开”,然后输入您的密码。
- 如果您还没有安装 Firefox,请下载。
- 在 Firefox 中,转到 Firefox>选项,然后转到高级>网络>设置。
- 选择手动代理配置,然后删除所有可编辑框中的所有内容。
- 输入 localhost 作为 SOCKS 主机,并输入 3456(或您在步骤 3 中使用的任何端口)作为端口。
- 单击“确定”打开两个 Firefox 配置窗口。
- 在 Firefox 的位置栏中输入 about:config 并按回车键。告诉 Firefox 你会小心的。
- 搜索 network.proxy.socks_remote_dns 并双击它将其设置为 true。
如果您的家用计算机上运行 Linux 或 Mac OS:
- 打开终端并输入 ssh -CD:3456 your_username@hostname (将 your_username 替换为您在系统上的用户名,将 hostname 替换为您服务器的域或 IP 地址)并按 Enter。
- 如果您还没有安装 Firefox,请下载。
- 在 Firefox 中,转到编辑>首选项,然后转到高级>网络>设置。
- 选择手动代理配置,然后删除所有可编辑框中的所有内容。
- 输入 localhost 作为 SOCKS 主机,并输入 3456(或您在步骤 3 中使用的任何端口)作为端口。
- 单击“确定”打开两个 Firefox 配置窗口。
- 在 Firefox 的位置栏中输入 about:config 并按回车键。告诉 Firefox 你会小心的。
- 搜索 network.proxy.socks_remote_dns 并双击它将其设置为 true。
完成后,关闭 PuTTY 或终端,并将 Firefox 设置为使用无代理,而不是您配置的手动代理。下次您想要连接时,只需运行保存的 PuTTY 会话或运行命令行命令,并将 Firefox 设置为使用手动代理配置选项。Firefox 会记住您的代理设置。
答案2
(请注意,我给出的例子都是最简单的,你需要确保自己理解它们的工作原理并充实它们,否则你可能会把自己锁在盒子外面。此外,这些说明不是永久性的 - 所以如果你做了一些愚蠢的事情,你至少可以重新启动以让问题消失。)我不认为这种性质的代理是一个好主意,因为它会给你带来复杂性、速度降低和曲线问题,并作为一个永远在线的解决方案。
您不需要配置代理。您需要确保您的 OpenVPN 服务器通过 OpenVPN 服务器提供默认路由(并且具有较低的度量,因此是首选)。
推送“重定向网关 XXXX def1”
您可能还需要告诉 OpenVPN 服务器对连接进行 NAT,以便它共享服务器的 IP 地址 - 因为 10.xxx 不是全局路由。您可以通过在服务器上添加命令来执行此操作
iptables -t NAT -A POSTROUTING -o ethX -j MASQUERADE
如果您想确保通过 OpenVPN 连接,您需要在 VPN 客户端上放置防火墙,防止流量通过正常接口传出(发往 OpenVPN 服务器的流量除外)。
iptables -I 输入 -j DROP iptables -I 输入 -s 服务器.IP -j 接受